Problemet me DNS në Kubernetes. Postmortem publik

Shënim: përkthimi: ky është përkthimi 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ë ndërprerje të pjesshme të disa shërbimeve në prodhim.

Ky artikull mund të jetë i dobishëm për ata që dëshirojnë të dinë pak më shumë rreth postmortemëve ose për të parandaluar disa probleme potenciale me DNS në të ardhmen.

Problemet me DNS në Kubernetes. Postmortem publik
Kjo nuk është DNS
Nuk mund të jetë që kjo është DNS
Kjo ishte DNS

Pak rreth postmortemëve dhe proceseve në Preply

Në postmortem përshkruhet një dështim në funksionim ose ndonjë ngjarje në prodhim. Postmortemi përfshin një kronologji ngjarjesh, përshkrimin e ndikimit te përdoruesi, shkakun kryesor, veprimet dhe mësimet e nxjerra.

Kërkimi SRE

Në mbledhjet tona javore me pizzë, rreth ekipit teknik, ndajmë informacion të ndryshëm. Një nga pjesët më të rëndësishme të këtyre mbledhjeve janë postmortemët, të cilat shpesh shoqërohen me prezantime me slaide dhe një analizë më të thellë të incidentit që ka ndodhur. Pavarësisht se nuk 'duam' pas përfundimit të postmortemëve, përpiqemi të zhvillojmë kulturën e 'pa akuza' (kultura pa akuza). Ne besojmë se shkruajtja dhe paraqitja e postmortemëve mund të na ndihmojë (dhe jo vetëm) për të parandaluar incidente të ngjashme në të ardhmen, për këtë arsye ne ndajmë ato.

Personat e përfshirë në incident duhet të ndihen se mund të flasin në detaje rreth tij pa pasur frikë nga ndëshkimi ose hakmarrja. Asnjë përbuzje! Shkruajtja e postmortemëve nuk është një ndëshkim, por një mundësi për të mësuar për të gjithë kompaninë.

Mbani CALMS & DevOps: S është për NdSharing

Probleme me DNS në Kubernetes. Postmortem

Data: 28.02.2020

Autorët: Amet U., Andrey S., Igor K., Alexey P.

Statusi: Përfunduar

Përmbledhje: Disponueshmëri e pjesshme e DNS (26 min) për disa shërbime në klasterin Kubernetes

Ndikimi: 15000 ngjarje janë humbur për shërbimet A, B dhe C

Shkaku kryesor: Kube-proxy nuk mundi të fshijë korrektësisht regjistrimin e vjetër nga tabela conntrack, prandaj disa shërbime vazhduan të përpiqen të lidhen me pod të paekzistueshëm.

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 hyrjeve conntrack për UDP peer {100.64.0.10, 100.110.33.231}, gabim: komanda conntrack ktheu: ...

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

Zgjidhja: Një tjetër deploy i aplikacionit shkaktoi krijimin e nyjave të reja, CoreDNS-autoscaler shtoi më shumë pods për të shërbyer klasterin, çka shkaktoi rinovimin e tabelës conntrack

Zbulimi: Monitorimi Prometheus zbuloi një numër të madh gabimesh 5xx për shërbimet A, B dhe C dhe iniciatoi një telefonatë për inxhinierët e kujdesit

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

Veprimet

Veprim
Lloji
Përgjegjës
Detyra

Çaktivizo autoscaler pĂ«r CoreDNS
parandalimi
Amet U.
DEVOPS-695

Vendos një server DNS që ruan cache
reduktim
Max V.
DEVOPS-665

Konfiguro monitorimin e conntrack
parandalimi
Amet U.
DEVOPS-674

Mësimet e nxjerra

ÇfarĂ« shkoi mirĂ«:

  • Monitorimi funksionoi nĂ« mĂ«nyrĂ« tĂ« qartĂ«. Reagimi ishte i shpejtĂ« dhe i organizuar
  • Nuk u pĂ«rballĂ«m me limite nĂ« nyja

ÇfarĂ« nuk shkoi mirĂ«:

  • Akoma nuk dihet shkaku real, duket si njĂ« bug specifik nĂ« conntrack
  • TĂ« gjitha veprimet e korrigjojnĂ« vetĂ«m pasojat, jo shkakun (bugun)
  • E dinim se disa herĂ« do tĂ« kishim probleme me DNS, por nuk prioritizuam detyrat

Ku kemi pasur fat:

  • NjĂ« tjetĂ«r deploy aktivizoi CoreDNS-autoscaler, i cili rinovoi tabelĂ«n conntrack
  • Ky bug preku vetĂ«m njĂ« pjesĂ« tĂ« shĂ«rbimeve

Kronologjia (EET)

Koha
Veprim

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

22:18
Inxhinierët e kujdesit filluan të merrnin telefonata nga sistemi i monitorimit

22:21
Inxhinierët e kujdesit filluan të hetojnë shkakun e gabimeve

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

22:40
Gabimet 5xx pushtuan të ndalnin shfaqjen, situata u stabilizua

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

Informacione shtesë

Për të minimizuar përdorimin e procesorit, bërthama Linux përdor një gjë të tillë si conntrack. Në përmbledhje, kjo është një utilitare që mban një listë të regjistrimeve NAT, të cilat ruhen në një tabelë të veçantë. Kur mbërrin paketi tjetër nga i njëjti pod në të njëjtin pod si më parë, adresa IP përfundimtare nuk do të llogaritet sërish, por do të merret nga tabela conntrack.
Problemet me DNS në Kubernetes. Postmortem publik
Si e drejton conntrack

Përfundime

Ky ishte një shembull i një nga postmortemët tanë me disa lidhje të dobishme. Konkretisht në këtë artikull ne ndajmë informacion që mund të jetë i dobishëm për kompani të tjera. Kjo është arsyeja pse nuk kemi frikë të bëjmë gabime dhe kjo është arsyeja pse ne e kemi bërë një nga postmortemët tanë publik. Ja disa postmortemë interesante publike:

Burimi: habr.com

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