Problémy s DNS v Kubernetes. Verejný postmortem

Pozn. prekl.: Toto je preklad verejného postmortemu z inžinierskeho blogu spoločnosti Preply. Popisuje problém s conntrack v Kubernetes klastri, ktorý viedol k čiastočnému výpadku niektorých produkčných služieb.

Tento článok môže byť užitočný pre tých, ktorí sa chcú dozvedieť viac o postmortemoch alebo predísť niektorým potenciálnym problémom s DNS v budúcnosti.

Problémy s DNS v Kubernetes. Verejný postmortem
To nie je DNS
Nemôže to byť DNS
To bol DNS

Trocha o postmortemoch a procesoch v Preply

V postmorteme je popísaný výpadok v prevádzke alebo nejaká udalosť v produkcii. Postmortem obsahuje chronológiu udalostí, popis vplyvu na používateľov, prvotnú príčinu, opatrenia a získané ponaučenia.

Seeking SRE

Na našich týždenných stretnutiach s pizzou, v kruhu technického tímu, zdieľame rôzne informácie. Jednou z najdôležitejších častí takýchto stretnutí sú postmortemy, ktoré zvyčajne sprevádza prezentácia so snímkami a hĺbkovou analýzou udalosti. Napriek tomu, že po postmortemoch neapplaudujeme, snažíme sa podporovať kultúru bez obviňovania (blameless culture). Veríme, že písanie a prezentácia postmortemov nám (a nielen nám) môže pomôcť predchádzať podobným incidentom v budúcnosti, a preto sa o ne delíme.

Osoby zapojené do incidentu by mali cítiť, že môžu podrobne hovoriť o ňom bez strachu z trestu alebo odvety. Žiadne odmietanie! Písanie postmortemu nie je trest, ale možnosť vzdelávania pre celú spoločnosť.

Keep CALMS & DevOps: S is for Sharing

Problémy s DNS v Kubernetes. Postmortem

Dátum: 28.02.2020

Autori: Amet U., Andrej S., Igor K., Alexej P.

Stav: Ukončené

Stručne: Čiastočná nedostupnosť DNS (26 min) pre niektoré služby v Kubernetes klastri

Vplyv: 15 000 udalostí stratilo pre služby A, B a C

Prvotná príčina: Kube-proxy sa nedokázal správne zbaviť starej položky z tabuľky conntrack, a preto sa niektoré služby stále pokúšali pripojiť k neexistujúcim podom.

E0228 20:13:53.795782       1 proxier.go:610] Failed to delete kube-system/kube-dns:dns endpoint connections, error: error deleting conntrack entries for UDP peer {100.64.0.10, 100.110.33.231}, error: conntrack command returned: ...

Spúšťač: V dôsledku nízkej záťaže vnútri Kubernetes klastra, CoreDNS-autoscaler znížil počet podov v nasadení z troch na dva.

Riešenie: Nové nasadenie aplikácie iniciovalo vytvorenie nových uzlov, CoreDNS-autoscaler pridal viac podov na obsluhu klastra, čo vyvolalo prepisovanie tabuľky conntrack

Zistenie: Monitoring Prometheus zistil vysoký počet 5xx chýb pre služby A, B a C a inicioval výzvu pre pohotovostných inžinierov

Problémy s DNS v Kubernetes. Verejný postmortem
5xx chyby v Kibana

Akcie

Akcia
Typ
Zodpovedný
Úloha

Deaktivovať autoskaler pre CoreDNS
prevencia
Amet U.
DEVOPS-695

Nastaviť caching DNS server
znížiť
Max V.
DEVOPS-665

Nastaviť monitoring conntrack
prevencia
Amet U.
DEVOPS-674

Získané ponaučenia

Čo išlo dobre:

  • Monitoring fungoval presne. Reakcia bola rýchla a organizovaná
  • Nepotýkali sme sa s žiadnymi limitmi na uzloch

Čo bolo zlé:

  • Stále neznáma reálna príčina, vyzerá to na špecifickú chybu v conntrack
  • Všetky akcie opravujú iba následky, nie príčinu (chybu)
  • Vedeli sme, že skôr alebo neskôr môžeme mať problémy s DNS, ale nezprioritizovali sme úlohy

Kde sme mali šťastie:

  • Nové nasadenie spustilo CoreDNS-autoscaler, ktorý prepísal tabuľku conntrack
  • Táto chyba zasiahla iba časť služieb

Chronológia (EET)

Čas
Akcia

22:13
CoreDNS-autoscaler znížil počet podov z troch na dva

22:18
Pohotovostní inžinieri začali dostávať výzvy od monitorovacieho systému

22:21
Pohotovostní inžinieri začali zisťovať príčinu chýb

22:39
Pohotovostní inžinieri začali vracať jednu z posledných služieb na predchádzajúcu verziu

22:40
5xx chyby prestali objavovať, situácia sa stabilizovala

  • Čas do zistenia: 4 min
  • Čas do vykonania akcií: 21 min
  • Čas do opravy: 1 min

Ďalšie informácie

Aby sa minimalizovalo využitie CPU, jadro Linuxu používa niečo, ako je conntrack. V skratke, je to nástroj, ktorý obsahuje zoznam NAT záznamov, ktoré sú uložené v špeciálnej tabuľke. Keď ďalší paket prichádza z toho istého podu do toho istého podu ako predtým, koncová IP adresa sa nanovo nepočítava, ale berie sa z tabuľky conntrack.
Problémy s DNS v Kubernetes. Verejný postmortem
Ako funguje conntrack

Zhrnutie

Toto bol príklad jedného z našich postmortemov s niektorými užitočnými odkazmi. Konkrétne v tomto článku zdieľame informácie, ktoré môžu byť prospešné iným spoločnostiam. Preto sa nebojíme robiť chyby a preto robíme jeden z našich postmortemov verejným. Tu je niekoľko ďalších zaujímavých verejných postmortemov:

Zdroj: habr.com

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster