Probleme met DNS in Kubernetes. Openbare nadoodse ondersoek
Let wel. vertaling: Dit is 'n vertaling van 'n openbare nadoodse ondersoek vanaf die maatskappy se ingenieursblog Berei voor. Dit beskryf 'n probleem met verbinding in 'n Kubernetes-kluster, wat gelei het tot gedeeltelike stilstand van sommige produksiedienste.
Hierdie artikel kan nuttig wees vir diegene wat 'n bietjie meer wil leer oor nadoodse ondersoeke of 'n paar potensiële DNS-probleme in die toekoms wil voorkom.
Dit is nie DNS nie
Dit kan nie DNS wees nie
Dit was DNS
'n Bietjie oor nadoodse ondersoeke en prosesse in Preply
’n Nadoodse ondersoek beskryf ’n wanfunksie of een of ander gebeurtenis in produksie. Die nadoodse ondersoek sluit 'n tydlyn van gebeure, gebruikerimpak, hoofoorsaak, aksies wat geneem is en lesse geleer in.
By weeklikse vergaderings met pizza, onder die tegniese span, deel ons verskeie inligting. Een van die belangrikste dele van sulke vergaderings is nadoodse ondersoeke, wat meestal gepaard gaan met 'n aanbieding met skyfies en 'n meer in-diepte ontleding van die voorval. Al klap ons nie na nadoodse ondersoeke nie, probeer ons 'n kultuur van "geen blaam" ontwikkel (onberispelike kultuur). Ons glo dat die skryf en aanbied van nadoodse ondersoeke ons (en ander) kan help om soortgelyke voorvalle in die toekoms te voorkom, en daarom deel ons dit.
Individue wat by 'n voorval betrokke is, moet voel dat hulle in detail kan praat sonder vrees vir straf of vergelding. Geen skuld nie! Om 'n nadoodse ondersoek te skryf is nie 'n straf nie, maar 'n leergeleentheid vir die hele maatskappy.
Probleme met DNS in Kubernetes. Nadoodse ondersoek
datum: 28.02.2020
Skrywers: Amet U., Andrey S., Igor K., Alexey P.
Status: Klaar
kortliks: Gedeeltelike DNS-onbeskikbaarheid (26 min) vir sommige dienste in die Kubernetes-groepering
Invloed: 15000 XNUMX geleenthede verloor vir dienste A, B en C
Kernoorsaak: Kube-proxy kon nie 'n ou inskrywing korrek uit die verbindingstabel verwyder nie, so sommige dienste het steeds probeer koppel aan nie-bestaande peule
Sneller: As gevolg van die lae vrag binne die Kubernetes-groepering, het CoreDNS-autoscaler die aantal peule in die ontplooiing van drie na twee verminder
oplossing: Die volgende ontplooiing van die toepassing het die skepping van nuwe nodusse begin, CoreDNS-autoscaler het meer peule bygevoeg om die groep te bedien, wat 'n herskrywing van die verbindingstabel uitgelok het
Bespeuring: Prometheus-monitering het 'n groot aantal 5xx-foute vir dienste A, B en C opgespoor en 'n oproep na die aan diens ingenieurs begin
5xx foute in Kibana
Aktiwiteit
effek
Tipe
Verantwoordelik
Taak
Deaktiveer autoscaler vir CoreDNS
voorkom
Amet U.
DEVOPS-695
Stel 'n kas-DNS-bediener op
afneem
Max V.
DEVOPS-665
Stel verbindingsmonitering op
voorkom
Amet U.
DEVOPS-674
Lesse geleer
Wat goed gegaan het:
Die monitering het goed gewerk. Die reaksie was vinnig en georganiseerd
Ons het geen limiete op die nodusse getref nie
Wat was fout:
Nog onbekend werklike oorsaak, soortgelyk aan spesifieke fout in verband
Alle aksies korrigeer slegs die gevolge, nie die oorsaak nie (fout)
Ons het geweet dat ons vroeër of later probleme met DNS kan hê, maar ons het nie die take geprioritiseer nie
Waar ons gelukkig was:
Die volgende ontplooiing is geaktiveer deur CoreDNS-autoscaler, wat die verbindingstabel oorskryf het
Hierdie fout het slegs sekere dienste beïnvloed
Tydlyn (EET)
Tyd
effek
22:13
CoreDNS-autoscaler het die aantal peule van drie na twee verminder
22:18
Ingenieurs aan diens het oproepe van die moniteringstelsel begin ontvang
22:21
Die ingenieurs aan diens het begin om die oorsaak van die foute uit te vind.
22:39
Ingenieurs aan diens het een van die nuutste dienste na die vorige weergawe begin terugrol
22:40
5xx-foute het opgehou om te verskyn, die situasie het gestabiliseer
Tyd tot opsporing: 4 min
Tyd voor aksie: 21 min
Tyd om reg te maak: 1 min
bykomende inligting
CoreDNS logs:
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
Om SVE-gebruik te verminder, gebruik die Linux-kern iets wat conntrack genoem word. Kortom, dit is 'n hulpprogram wat 'n lys van NAT-rekords bevat wat in 'n spesiale tabel gestoor word. Wanneer die volgende pakkie van dieselfde peul na dieselfde peul as voorheen aankom, sal die finale IP-adres nie herbereken word nie, maar uit die verbindingstabel geneem word.
Hoe verbinding werk
Resultate van
Dit was 'n voorbeeld van een van ons nadoodse ondersoeke met 'n paar nuttige skakels. Spesifiek in hierdie artikel deel ons inligting wat nuttig kan wees vir ander maatskappye. Dis hoekom ons nie bang is om foute te maak nie en daarom maak ons een van ons nadoodse ondersoeke openbaar. Hier is 'n paar meer interessante openbare nadoodse ondersoeke: