Problémy s DNS v Kubernetes. Verejná pitva

Poznámka preklad: Toto je preklad verejnej pitvy z inžinierskeho blogu spoločnosti prepli. Opisuje problém s conntrackom v klastri Kubernetes, 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ť niečo viac o posmrtných trestoch alebo predísť niektorým potenciálnym problémom s DNS v budúcnosti.

Problémy s DNS v Kubernetes. Verejná pitva
Toto nie je DNS
Nemôže to byť DNS
Bol to DNS

Trochu o postmortách a procesoch v Preply

Pitva opisuje poruchu alebo nejakú udalosť vo výrobe. Pitva obsahuje časovú os udalostí, vplyv na používateľa, hlavnú príčinu, prijaté opatrenia a získané ponaučenia.

Hľadá sa SRE

Na týždenných stretnutiach s pizzou medzi technickým tímom zdieľame rôzne informácie. Jednou z najdôležitejších súčastí takýchto stretnutí sú pitvy, ktoré sú najčastejšie sprevádzané prezentáciou s diapozitívmi a hlbšou analýzou incidentu. Aj keď po popravách netlieskame, snažíme sa rozvíjať kultúru „bez viny“ (bezúhonná kultúra). Veríme, že písanie a prezentovanie posmrtných správ nám (a ostatným) môže pomôcť predchádzať podobným incidentom v budúcnosti, a preto ich zdieľame.

Jednotlivci zapojení do incidentu by mali cítiť, že môžu hovoriť podrobne bez strachu z trestu alebo odplaty. Žiadna vina! Napísanie pitvy nie je trest, ale príležitosť učiť sa pre celú spoločnosť.

Keep CALMS & DevOps: S je na zdieľanie

Problémy s DNS v Kubernetes. Postmortem

Дата: 28.02.2020

Autori: Amet U., Andrey S., Igor K., Alexey P.

Postavenie: Dokončené

krátko: Čiastočná nedostupnosť DNS (26 minút) pre niektoré služby v klastri Kubernetes

vplyv: 15000 XNUMX stratených udalostí pre služby A, B a C

príčina: Kube-proxy nedokázal správne odstrániť starú položku z tabuľky conntrack, takže niektoré služby sa stále pokúšali pripojiť k neexistujúcim modulom

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č: Kvôli nízkemu zaťaženiu vnútri klastra Kubernetes zredukoval CoreDNS-autoscaler počet modulov v nasadení z troch na dva

riešenie: Ďalšie nasadenie aplikácie iniciovalo vytváranie nových uzlov, CoreDNS-autoscaler pridal ďalšie moduly na obsluhu klastra, čo vyvolalo prepísanie tabuľky conntrack.

Detekcia: Monitoring Prometheus zistil veľký počet chýb 5xx pre služby A, B a C a inicioval telefonát technikom v službe

Problémy s DNS v Kubernetes. Verejná pitva
5xx chýb v Kibane

Činnosť

účinok
Typ
Zodpovedný
Úloha

Zakázať automatický škálovač pre CoreDNS
zabránené
Amet U.
DEVOPS-695

Nastavte server DNS pre vyrovnávaciu pamäť
znížiť
Max V.
DEVOPS-665

Nastavte monitorovanie conntrack
zabránené
Amet U.
DEVOPS-674

Ponaučenie

Čo dopadlo dobre:

  • Monitoring fungoval dobre. Reakcia bola rýchla a organizovaná
  • V uzloch sme nenarazili na žiadne limity

Čo bolo zle:

  • Stále neznáma skutočná základná príčina, podobne ako konkrétna chyba v spojení
  • Všetky akcie opravujú iba následky, nie hlavnú príčinu (chybu)
  • Vedeli sme, že skôr či neskôr môžeme mať problémy s DNS, ale úlohy sme neuprednostňovali

Kde sme mali šťastie:

  • Ďalšie nasadenie spustil CoreDNS-autoscaler, ktorý prepísal tabuľku conntrack
  • Táto chyba ovplyvnila iba niektoré služby

Časová os (EET)

Čas
účinok

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

22:18
Inžinieri v službe začali prijímať hovory z monitorovacieho systému

22:21
Službukonajúci inžinieri začali zisťovať príčinu chýb.

22:39
Inžinieri v službe začali vracať jednu z najnovších služieb na predchádzajúcu verziu

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

  • Čas do detekcie: 4 minút
  • Čas pred akciou: 21 minút
  • Čas na opravu: 1 minút

doplňujúce informácie

Для минимизации использования процессора, ядро Linux использует такую штуку как conntrack. Если кратко, то это утилита, которая содержит список NAT-записей, которые хранятся в специальной таблице. Когда следующий пакет приходит из того же пода в тот же под что и раньше, конечный IP-адрес не будет рассчитан заново, а будет взят из таблицы conntrack.
Problémy s DNS v Kubernetes. Verejná pitva
Ako funguje conntrack

Výsledky

Toto bol príklad jednej z našich pitiek s niekoľkými užitočnými odkazmi. Konkrétne v tomto článku zdieľame informácie, ktoré môžu byť užitočné pre iné spoločnosti. Preto sa nebojíme robiť chyby a preto zverejňujeme jednu z našich pitiek. Tu sú niektoré ďalšie zaujímavé verejné pitvy:

Zdroj: hab.com

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