Problemi sa DNS-om u Kubernetesu. Javna obdukcija

Bilješka. prijevod: Ovo je prijevod javne obdukcije sa inženjerskog bloga kompanije Predgovor. Opisuje problem s conntrack-om u Kubernetes klasteru, koji je doveo do djelomičnog zastoja nekih proizvodnih usluga.

Ovaj članak može biti koristan za one koji žele naučiti nešto više o obdukcijama ili spriječiti neke potencijalne DNS probleme u budućnosti.

Problemi sa DNS-om u Kubernetesu. Javna obdukcija
Ovo nije DNS
To ne može biti DNS
Bio je to DNS

Malo o obdukcijama i procesima u Preply-u

Obdukcija opisuje kvar ili neki događaj u proizvodnji. Obdukcija uključuje vremensku liniju događaja, uticaj korisnika, osnovni uzrok, preduzete radnje i naučene lekcije.

Tražim SRE

Na sedmičnim sastancima sa pizza, među tehničkim timom, dijelimo razne informacije. Jedan od najvažnijih dijelova ovakvih sastanaka su obdukcije, koje su najčešće popraćene prezentacijom sa slajdovima i dubljom analizom incidenta. Iako ne plješćemo nakon obdukcije, pokušavamo razviti kulturu "bez krivice" (besprekorna kultura). Vjerujemo da pisanje i predstavljanje obdukcija može pomoći nama (i drugima) da spriječimo slične incidente u budućnosti, zbog čega ih dijelimo.

Pojedinci uključeni u incident treba da osjećaju da mogu govoriti u detalje bez straha od kazne ili odmazde. Bez krivice! Pisanje obdukcije nije kazna, već prilika za učenje za cijelu kompaniju.

Zadržite CALMS & DevOps: S je za dijeljenje

Problemi sa DNS-om u Kubernetesu. Postmortem

Datum: 28.02.2020

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

Status: Završeno

Ukratko: Djelomična nedostupnost DNS-a (26 min) za neke usluge u Kubernetes klasteru

Utjecaj: 15000 događaja izgubljeno za usluge A, B i C

Izvorni razlog: Kube-proxy nije mogao ispravno ukloniti stari unos iz tabele conntrack, tako da su se neke usluge još uvijek pokušavale povezati s nepostojećim podovima

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

okidač: Zbog malog opterećenja unutar Kubernetes klastera, CoreDNS-autoscaler je smanjio broj podova u implementaciji sa tri na dva

rješenje: Sljedeća implementacija aplikacije pokrenula je kreiranje novih čvorova, CoreDNS-autoscaler je dodao više podova za opsluživanje klastera, što je izazvalo ponovno pisanje tabele conntrack

Detekcija: Prometheus monitoring je otkrio veliki broj 5xx grešaka za servise A, B i C i pokrenuo poziv dežurnim inženjerima

Problemi sa DNS-om u Kubernetesu. Javna obdukcija
5xx greške u Kibani

Akcije

efekt
Tip
Odgovoran
Cilj

Onemogući autoscaler za CoreDNS
sprečeno
Amet U.
DEVOPS-695

Podesite DNS server za keširanje
smanjiti
Max V.
DEVOPS-665

Podesite nadzor veze
sprečeno
Amet U.
DEVOPS-674

Naučene lekcije

Šta je dobro prošlo:

  • Monitoring je dobro funkcionisao. Odgovor je bio brz i organizovan
  • Nismo postigli nikakva ograničenja na čvorovima

šta nije u redu:

  • Još uvijek nepoznat pravi osnovni uzrok, slično specifična greška in conntrack
  • Sve radnje ispravljaju samo posledice, a ne i osnovni uzrok (bug)
  • Znali smo da bismo prije ili kasnije mogli imati problema s DNS-om, ali nismo davali prioritet zadacima

Gdje nam se posrećilo:

  • Sljedeću implementaciju pokrenuo je CoreDNS-autoscaler, koji je prepisao conntrack tablicu
  • Ova greška je uticala samo na neke usluge

Vremenska traka (EET)

Время
efekt

22:13
CoreDNS-autoscaler smanjio je broj podova sa tri na dva

22:18
Dežurni inženjeri su počeli da primaju pozive iz sistema za nadzor

22:21
Dežurni inženjeri počeli su da otkrivaju uzroke grešaka.

22:39
Dežurni inženjeri počeli su vraćati jednu od najnovijih usluga na prethodnu verziju

22:40
5xx greške su prestale da se pojavljuju, situacija se stabilizovala

  • Vrijeme do detekcije: 4 minuta
  • Vrijeme prije akcije: 21 minuta
  • Vrijeme je za popravku: 1 minuta

dodatne informacije

Da bi se smanjila upotreba CPU-a, Linux kernel koristi nešto što se zove conntrack. Ukratko, ovo je uslužni program koji sadrži listu NAT zapisa koji su pohranjeni u posebnoj tabeli. Kada sljedeći paket stigne iz istog pod u isti pod kao i prije, konačna IP adresa neće biti ponovo izračunata, već će biti uzeta iz tabele conntrack.
Problemi sa DNS-om u Kubernetesu. Javna obdukcija
Kako funkcioniše conntrack

Ishodi

Ovo je bio primjer jedne od naših obdukcija s nekim korisnim linkovima. Konkretno, u ovom članku dijelimo informacije koje mogu biti korisne drugim kompanijama. Zato se ne bojimo pogriješiti i zato jednu od naših obdukcija objavljujemo javno. Evo još nekih zanimljivih javnih obdukcija:

izvor: www.habr.com

Dodajte komentar