ProHoster > Blog > uprava > Problemi s DNS-om u Kubernetesu. Javna obdukcija
Problemi s DNS-om u Kubernetesu. Javna obdukcija
Bilješka prijevod: Ovo je prijevod javne obdukcije s inženjerskog bloga tvrtke Pripremite se. Opisuje problem s conntrackom u Kubernetes klasteru, koji je doveo do djelomičnog prekida rada nekih proizvodnih usluga.
Ovaj bi članak mogao biti koristan onima koji žele naučiti nešto više o postmortemima ili spriječiti neke potencijalne DNS probleme u budućnosti.
Ovo nije DNS
Ne može biti DNS
Bio je to DNS
Malo o obdukcijama i procesima u Preplyju
Obdukcija opisuje kvar ili neki događaj u proizvodnji. Obdukcija uključuje vremenski slijed događaja, utjecaj korisnika, glavni uzrok, poduzete radnje i naučene lekcije.
Na tjednim sastancima uz pizzu, 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 događaja. Iako ne plješćemo nakon obdukcije, pokušavamo razviti kulturu "bez krivnje" (besprijekorna kultura). Vjerujemo da pisanje i prezentiranje obdukcija može pomoći nama (i drugima) u sprječavanju sličnih incidenata u budućnosti, zbog čega ih dijelimo.
Pojedinci uključeni u incident trebaju osjećati da mogu govoriti o detaljima bez straha od kazne ili odmazde. Bez zamjerke! Pisanje obdukcije nije kazna, već prilika za učenje cijele tvrtke.
ukratko: Djelomična nedostupnost DNS-a (26 min) za neke usluge u Kubernetes klasteru
Vliânie: 15000 XNUMX izgubljenih događaja za usluge A, B i C
Glavni uzrok: Kube-proxy nije mogao ispravno ukloniti stari unos iz conntrack tablice, pa su se neki servisi i dalje pokušavali povezati s nepostojećim podovima
Okidač: Zbog niskog opterećenja unutar Kubernetes klastera, CoreDNS-autoscaler smanjio je broj podova u implementaciji s tri na dva
rješenje: Sljedeća implementacija aplikacije pokrenula je stvaranje novih čvorova, CoreDNS-autoscaler dodao je više podova za opsluživanje klastera, što je izazvalo ponovno pisanje tablice conntrack
Otkrivanje: Prometheus monitoring otkrio je veliki broj 5xx grešaka za servise A, B i C i pokrenuo poziv dežurnim inženjerima
5xx grešaka u Kibani
Djelatnost
posljedica
Vrsta
Odgovoran
Zadatak
Onemogući autoscaler za CoreDNS
spriječeno
Amet U.
DEVOPS-695
Postavite DNS poslužitelj za predmemoriju
smanjenje
Max V.
DEVOPS-665
Postavite praćenje conntrack-a
spriječeno
Amet U.
DEVOPS-674
Naučene lekcije
Što je dobro prošlo:
Praćenje je dobro funkcioniralo. Odaziv je bio brz i organiziran
Nismo dostigli nikakva ograničenja na čvorovima
Što nije bilo u redu:
Još uvijek nepoznat pravi uzrok, sličan specifična greška u conntracku
Sve radnje ispravljaju samo posljedice, a ne glavni uzrok (bug)
Znali smo da bismo prije ili kasnije mogli imati problema s DNS-om, ali nismo davali prioritete zadacima
Gdje smo imali sreće:
Sljedeću implementaciju pokrenuo je CoreDNS-autoscaler, koji je prebrisao tablicu conntrack
Ova pogreška utjecala je samo na neke usluge
Vremenska traka (EET)
vrijeme
posljedica
22:13
CoreDNS-autoscaler smanjio je broj podova s tri na dva
22:18
Inženjeri na dužnosti počeli su primati pozive iz sustava za nadzor
22:21
Dežurni inženjeri počeli su otkrivati uzrok 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 se prestale pojavljivati, situacija se stabilizirala
Vrijeme do otkrivanja: 4 minuta
Vrijeme prije akcije: 21 minuta
Vrijeme za popravak: 1 minuta
dodatne informacije
CoreDNS zapisnici:
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
Kako bi smanjio korištenje CPU-a, Linux kernel koristi nešto što se zove conntrack. Ukratko, ovo je uslužni program koji sadrži popis NAT zapisa koji su pohranjeni u posebnoj tablici. Kada sljedeći paket stigne iz istog modula u isti modul kao i prije, konačna IP adresa neće se ponovno izračunati, već će se uzeti iz conntrack tablice.
Kako radi conntrack
Rezultati
Ovo je bio primjer jedne od naših obdukcija s korisnim poveznicama. Konkretno, u ovom članku dijelimo informacije koje mogu biti korisne drugim tvrtkama. Zato se ne bojimo pogriješiti i zato jednu od naših obdukcija objavljujemo javno. Evo još nekoliko zanimljivih javnih obdukcija: