Problémy s DNS v Kubernetes. Veřejná pitva

Poznámka. překlad: Toto je překlad veřejné pitvy z inženýrského blogu společnosti Preferujte. Popisuje problém s conntrackem v clusteru Kubernetes, který vedl k částečnému výpadku některých produkčních služeb.

Tento článek může být užitečný pro ty, kteří se chtějí dozvědět něco více o pitvě nebo předejít některým potenciálním problémům s DNS v budoucnu.

Problémy s DNS v Kubernetes. Veřejná pitva
Toto není DNS
Nemůže to být DNS
Byl to DNS

Něco málo o pitvách a procesech v Preply

Postmortem popisuje poruchu nebo nějakou událost ve výrobě. Postmortem zahrnuje časovou osu událostí, dopad na uživatele, hlavní příčinu, přijatá opatření a poučení.

Hledám SRE

Na týdenních schůzkách s pizzou mezi technickým týmem sdílíme různé informace. Jednou z nejdůležitějších částí takových setkání jsou pitvy, které jsou nejčastěji doprovázeny prezentací s diapozitivy a hlubší analýzou incidentu. I když po posmrtných akcích netleskáme, snažíme se rozvíjet kulturu „bez viny“ (bezúhonná kultura). Věříme, že psaní a předkládání posmrtných zpráv nám (i ostatním) může pomoci předcházet podobným incidentům v budoucnu, a proto je sdílíme.

Jednotlivci zapojení do incidentu by měli mít pocit, že mohou mluvit podrobně bez strachu z trestu nebo odplaty. Žádná vina! Psaní pitvy není trestem, ale příležitostí k učení pro celou společnost.

Keep CALMS & DevOps: S je pro sdílení

Problémy s DNS v Kubernetes. Postmortem

Дата: 28.02.2020

Autoři: Amet U., Andrey S., Igor K., Alexey P.

Status: Hotovo

Stručně: Částečná nedostupnost DNS (26 min) pro některé služby v clusteru Kubernetes

Dopad: 15000 XNUMX ztracených událostí pro služby A, B a C

Příčina: Kube-proxy nedokázal správně odstranit starou položku z tabulky conntrack, takže se některé služby stále pokoušely připojit k neexistujícím modulům

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: ...

Spoušť: Kvůli nízké zátěži uvnitř clusteru Kubernetes snížil CoreDNS-autoscaler počet modulů v nasazení ze tří na dva.

řešení: Další nasazení aplikace iniciovalo vytváření nových uzlů, CoreDNS-autoscaler přidal další moduly pro obsluhu clusteru, což vyvolalo přepsání tabulky conntrack.

Detekce: Monitoring Prometheus zjistil velký počet chyb 5xx pro služby A, B a C a inicioval volání techniků ve službě

Problémy s DNS v Kubernetes. Veřejná pitva
5xx chyb v Kibaně

Činnost

účinek
Typ
Odpovědný
Úkol

Zakázat automatické škálování pro CoreDNS
zabráněno
Amet U.
DEVOPS-695

Nastavte server DNS pro ukládání do mezipaměti
pokles
Max V.
DEVOPS-665

Nastavte sledování conntrack
zabráněno
Amet U.
DEVOPS-674

Ponaučení

Co se povedlo:

  • Monitoring fungoval dobře. Odezva byla rychlá a organizovaná
  • U uzlů jsme nenarazili na žádné limity

Co bylo špatně:

  • Stále neznámá skutečná základní příčina, podobná konkrétní chyba v conntrack
  • Všechny akce opravují pouze následky, nikoli hlavní příčinu (chybu)
  • Věděli jsme, že dříve nebo později můžeme mít problémy s DNS, ale nestanovili jsme priority

Kde jsme měli štěstí:

  • Další nasazení spustil CoreDNS-autoscaler, který přepsal tabulku conntrack
  • Tato chyba ovlivnila pouze některé služby

Časová osa (EET)

čas
účinek

22:13
CoreDNS-autoscaler snížil počet modulů ze tří na dva

22:18
Inženýři ve službě začali přijímat hovory z monitorovacího systému

22:21
Inženýři ve službě začali zjišťovat příčinu chyb.

22:39
Inženýři ve službě začali jednu z nejnovějších služeb vrátit na předchozí verzi

22:40
Chyby 5xx se přestaly objevovat, situace se stabilizovala

  • Čas do detekce: 4 minut
  • Čas před akcí: 21 minut
  • Čas na opravu: 1 minut

doplňující informace

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

Výsledky

Toto byl příklad jedné z našich pitev s několika užitečnými odkazy. Konkrétně v tomto článku sdílíme informace, které mohou být užitečné pro jiné společnosti. Proto se nebojíme dělat chyby a proto zveřejňujeme jednu z našich pitev. Zde jsou některé další zajímavé veřejné pitvy:

Zdroj: www.habr.com

Kupte si spolehlivý hosting pro stránky s DDoS ochranou, VPS VDS servery 🔥 Kupte si spolehlivý webhosting s ochranou DDoS, VPS VDS servery | ProHoster