Problemet me DNS në Kubernetes. Postmortem publik

Shënim: kjo është një përkthim i një postmortemi publik nga blogu inxhinierik i kompanisë Preply. Në të përshkruhet problemi me conntrack në klasterin Kubernetes, i cili çoi në një bllokim të pjesshëm të disa shërbimeve të prodhimit.

Ky artikull mund të jetë i dobishëm për ata që dëshirojnë të dinë pak më shumë rreth postmortemeve ose të parandalojnë disa probleme të mundshme me DNS në të ardhmen.

Problemet me DNS në Kubernetes. Postmortem publik
Nuk është DNS
Nuk mund të jetë që është DNS
Ishte DNS

Pak fjalë për postmortemet dhe proceset në Preply

Në postmortem përshkruhet një dështim në funksionim ose ndonjë ngjarje në prodhim. Postmortemi përfshin një kronologji të ngjarjeve, përshkrimin e ndikimit mbi përdoruesin, shkakun e parë, veprimet dhe mësimet e nxjerra.

Seeking SRE

Në mbledhjet javore me pizzë, në mesin e ekipit teknik, ne ndajmë informacion të ndryshëm. Një nga pjesët më të rëndësishme të këtyre mbledhjeve janë postmortemet, të cilat shpesh shoqërohen me prezantime dhe një analizë më të thellë të incidentit të ndodhur. Edhe pse ne nuk 'duartrokasim' pas postmortemeve, ne përpiqemi të zhvillojmë një kulturë 'pa fajësim' (blameless culture). Besojmë se shkruarja dhe paraqitja e postmortemeve mund të na ndihmojnë (dhe jo vetëm ne) në parandalimin e incidenteve të ngjashme në të ardhmen, prandaj ne i ndajmë ato.

Personat e involvuar në incident duhet të ndihen se mund të flasin hollësisht për të, pa frikë nga dënimi ose hakmarrja. Asnjë faji! Shkruarja e postmortemit nuk është një dënim, por një mundësi për të mësuar për të gjithë kompaninë.

Keep CALMS & DevOps: S is for Sharing

Problemet me DNS në Kubernetes. Postmortem

Data: 28.02.2020

Shkruar nga: Amet U., Andrey S., Igor K., Alexey P.

Statusi: E përfunduar

Shkurtimisht: Disponueshmëria e pjesshme e DNS (26 minuta) për disa shërbime në klasterin Kubernetes

Ndikimi: 15000 ngjarje të humbura për shërbimet A, B dhe C

Shkaku i parë: Kube-proxy nuk arriti të fshijë siç duhet regjistrimin e vjetër nga tabela conntrack, prandaj disa shërbime vazhduan të përpiqen të lidheshin me podet që nuk ekzistonin

E0228 20:13:53.795782       1 proxier.go:610] Dështoi të fshijë kube-system/kube-dns:dns endpoint connections, gabim: gabim në fshirjen e regjistrimeve conntrack për UDP peer {100.64.0.10, 100.110.33.231}, gabim: komanda conntrack ktheu: ...

Gara: Për shkak të ngarkesës së ulët brenda klasterit Kubernetes, CoreDNS-autoscaler reduktoi numrin e podëve në deployment nga tre në dy

Zgjidhja: Një tjetër deployment aplikacioni inicoi krijimin e nodeve të reja, CoreDNS-autoscaler shtoi më shumë podë për të shërbyer klasterin, çfarë shkaktoi përshkrimin e tabelës conntrack

Zbulimi: Monitorimi Prometheus zbuloi një numër të madh të gabimeve 5xx për shërbimet A, B dhe C dhe inicioi një thirrje për inxhinierët në detyrë

Problemet me DNS në Kubernetes. Postmortem publik
Gabimet 5xx në Kibana

Veprime

Veprimi
Tipo
Përgjegjës
Detyra

Çaktivizoni autoscaler-in pĂ«r CoreDNS
parandaloni.
Amet U.
DEVOPS-695

Instaloni serverin DNS memorizues
pakësimet.
Max V.
DEVOPS-665

Konfiguroni monitorimin conntrack
parandaloni.
Amet U.
DEVOPS-674

Mësimet e nxjerra

ÇfarĂ« shkoi mirĂ«:

  • Monitorimi funksionoi saktĂ«. Reagimi ishte i shpejtĂ« dhe i organizuar
  • Nuk u pĂ«rballĂ«m me asnjĂ« kufizim nĂ« node

ÇfarĂ« nuk shkoi siç duhet:

  • Akoma njĂ« shkak i parĂ« i panjohur, duke dukur si njĂ« bug specifik nĂ« conntrack
  • TĂ« gjitha veprimet korrigjojnĂ« vetĂ«m pasojat, jo shkakun e parĂ« (bugun)
  • E dinim se njĂ« ose mĂ« vonĂ« mund tĂ« kishim probleme me DNS, por nuk e prioritizuam detyrĂ«n

Ku patëm fat:

  • NjĂ« tjetĂ«r ndihmĂ«s inicoi CoreDNS-autoscaler, i cili pĂ«rshkroi tabelĂ«n conntrack
  • Ky bug preku vetĂ«m njĂ« pjesĂ« tĂ« shĂ«rbimeve

Kronologjia (EET)

Koha
Veprimi

22:13
CoreDNS-autoscaler reduktoi numrin e podëve nga tre në dy

22:18
Inxhinierët në detyrë filluan të merrnin telefonata nga sistemi i monitorimit

22:21
Inxhinierët në detyrë filluan të hetojnë shkakun e gabimeve

22:39
Inxhinierët në detyrë filluan të rikthejnë një nga shërbimet e fundit në versionin e mëparshëm

22:40
Gabimet 5xx ndaluan së shfaquri, situata u stabilizua

  • Koha deri nĂ« zbulim: 4 minuta
  • Koha deri nĂ« veprim: 21 minuta
  • Koha deri nĂ« korrigjim: 1 minutĂ«

Informacione shtesë

Për të minimizuar përdorimin e procesorit, bërthama Linux përdor një gjë si conntrack. Nëse e shqyrtojmë shkurt, kjo është një utilitare që përmban një listë të regjistrimeve NAT, të cilat mbahen në një tabelë të veçantë. Kur paketa e ardhshme vjen nga e njëjta pod në të njëjtin pod si më parë, adresa përfundimtare IP nuk do të llogaritet nga e para, por do të merret nga tabela conntrack.
Problemet me DNS në Kubernetes. Postmortem publik
Si funksionon conntrack

Përfundimet

Ky ishte një shembull i një prej postmortem-ëve tona me disa lidhje të dobishme. Konkretisht në këtë artikull, ne ndajmë informacion që mund të jetë i dobishëm për kompanitë e tjera. Këtu është arsyja pse ne nuk kemi frikë të bëjmë gabime dhe pse ne e bëjmë një prej postmortem-ëve tona publike. Këtu janë disa postmortem të tjera interesante publikisht:

Burimi: habr.com

Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster