Poznámka preklad: Toto je preklad verejnej pitvy z inžinierskeho blogu spoločnosti . 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.

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.
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“ (). 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ť.
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

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 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
- Protokoly CoreDNS:
I0228 20:13:53.507780 1 event.go:221] Event(v1.ObjectReference{Kind:"Deployment", Namespace:"kube-system", Name:"coredns", UID:"2493eb55-3dc0-11ea-b3a2-02bb48f8c230", APIVersion:"apps/v1", ResourceVersion:"132690686", FieldPath:""}): type: 'Normal' reason: 'ScalingReplicaSet' Scaled down replica set coredns-6cbb6646c9 to 2 - Odkazy na Kibana (strih), Grafana (strih)
Для минимизации использования процессора, ядро Linux использует такую штуку как conntrack. Если кратко, то это утилита, которая содержит список NAT-записей, которые хранятся в специальной таблице. Когда следующий пакет приходит из того же пода в тот же под что и раньше, конечный IP-адрес не будет рассчитан заново, а будет взят из таблицы conntrack.

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:
- GitLab:
- Dropbox:
- Spotify:
- Mnohí ďalší z a úložisko
- Tiež verejná pitva s knihou SRE
Zdroj: hab.com
