Prublemi cù DNS in Kubernetes. Post mortem publicu

Nota. traduzzione: Questa hè una traduzzione di un postmortem publicu da u blog di l'ingegneria di a cumpagnia Preferenze. Descrive un prublema cù conntrack in un cluster Kubernetes, chì hà purtatu à un downtime parziale di certi servizii di produzzione.

Questu articulu pò esse utile per quelli chì volenu amparà un pocu di più nantu à i postmortems o impediscenu qualchi prublemi DNS potenziali in u futuru.

Prublemi cù DNS in Kubernetes. Post mortem publicu
Questu ùn hè micca DNS
Ùn pò micca esse DNS
Era DNS

Un pocu nantu à l'autopsia è i prucessi in Preply

Un postmortem descrive un malfunzionamentu o qualchì avvenimentu in a produzzione. U postmortem include una cronologia di l'avvenimenti, l'impattu di l'utilizatori, a causa radicale, l'azzioni pigliate è e lezioni amparate.

In cerca di SRE

À i scontri settimanali cù a pizza, trà a squadra tecnica, spartemu diverse infurmazioni. Una di e parti più impurtanti di tali riunioni hè post-mortems, chì sò più spessu accumpagnati da una presentazione cù slides è un analisi più approfonditu di l'incidentu. Ancu s'ellu ùn ci battemu micca dopu à l'autopsia, pruvemu di sviluppà una cultura di "senza culpa" (cultura irreprensibile). Cridemu chì a scrittura è a presentazione di l'autopsia pò aiutà à noi (è à l'altri) prevene incidenti simili in u futuru, chì hè per quessa chì li spartemu.

L'individui implicati in un incidente anu da sente chì ponu parlà in dettagliu senza teme di punizioni o retribuzione. Nisuna culpa ! Scrivite un postmortem ùn hè micca una punizione, ma una opportunità di apprendimentu per tutta a cumpagnia.

Mantene CALMS & DevOps: S hè per spartera

Prublemi cù DNS in Kubernetes. Post mortem

Data: 28.02.2020

Autori: Amet U., Andrey S., Igor K., Alexey P.

Status: Finitu

Tempu brevi: Indisponibilità parziale di DNS (26 min) per certi servizii in u cluster Kubernetes

Impact: 15000 avvenimenti persi per i servizii A, B è C

Causa radica: Kube-proxy ùn hà micca pussutu sguassà currettamente una vechja entrata da a tavola di cuntrack, cusì certi servizii anu sempre pruvatu à cunnette cù pods inesistenti.

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

Trigger: A causa di a bassa carica in u cluster Kubernetes, CoreDNS-autoscaler hà riduciutu u numeru di pods in a distribuzione da trè à dui.

suluzione: A prossima implementazione di l'applicazione hà iniziatu a creazione di novi nodi, CoreDNS-autoscaler hà aghjustatu più pods per serve u cluster, chì pruvucò una riscrittura di a tavola conntrack.

Detezzione: U monitoraghju di Prometheus hà rilevatu un gran numaru di errori 5xx per i servizii A, B è C è hà iniziatu una chjama à l'ingegneri di serviziu.

Prublemi cù DNS in Kubernetes. Post mortem publicu
Errori 5xx in Kibana

Actions

effettu
Type
Responsabile
Objettivu

Disattiva l'autoscaler per CoreDNS
impeditu
Amet U.
DEVOPS-695

Configurate un servitore DNS di cache
diminuite
Max V.
DEVOPS-665

Configurate u monitoraghju conttrack
impeditu
Amet U.
DEVOPS-674

Lezioni amparate

Chì hè andatu bè:

  • U monitoraghju hà travagliatu bè. A risposta hè stata rapida è organizata
  • Ùn avemu micca culpitu nisun limite nantu à i nodi

Chì era sbagliatu:

  • Ancora scunnisciuta vera causa vera, simile à bug specificu in cuntrariu
  • Tutte l'azzioni curreghjanu solu e cunsequenze, micca a causa radicali (bug)
  • Sapemu chì prima o dopu pudemu avè prublemi cù DNS, ma ùn avemu micca priurità i travaglii

Induve avemu avutu a furtuna:

  • A prossima implementazione hè stata attivata da CoreDNS-autoscaler, chì hà sovrascrittu a tabella di cuntrack.
  • Stu bug hà affettatu solu certi servizii

Timeline (EET)

Время
effettu

22:13
CoreDNS-autoscaler hà riduciutu u numeru di pods da trè à dui

22:18
L'ingegneri di turnu cuminciaru à riceve chjamate da u sistema di surviglianza

22:21
L'ingegneri di turnu cuminciaru à scopre a causa di l'errori.

22:39
L'ingegneri di turnu cuminciaru à ritruvà unu di l'ultimi servizii à a versione precedente

22:40
L'errori 5xx anu cessatu di appare, a situazione hè stabilizzata

  • Tempu di deteczione: 4 min
  • Tempu prima di l'azzione: 21 min
  • U tempu di riparà: 1 min

applicàrisi nantu à u corsu

Per minimizzà l'usu di CPU, u kernel Linux usa qualcosa chjamatu conntrack. In corta, questa hè una utilità chì cuntene una lista di registri NAT chì sò guardati in una tavola speciale. Quandu u prossimu pacchettu ghjunghje da u stessu pod à u stessu pod cum'è prima, l'indirizzu IP finali ùn serà micca ricalculatu, ma serà pigliatu da a tavola conntrack.
Prublemi cù DNS in Kubernetes. Post mortem publicu
Cumu funziona conttrack

Risultati

Questu era un esempiu di unu di i nostri postmortems cù qualchi ligami utili. In particulare in questu articulu, spartemu infurmazioni chì ponu esse utili à altre imprese. Hè per quessa chì ùn avemu micca paura di sbaglià è hè per quessa chì facemu publicu unu di i nostri post-mortems. Eccu alcuni più interessanti post mortem publichi:

Source: www.habr.com

Add a comment