Kubernetes-də DNS ilə bağlı problemlər. İctimai ölümdən sonra

Qeyd. tərcümə: Bu, şirkətin mühəndislik bloqundan ictimai postmortem tərcüməsidir Əvvəlcədən. Bu, bəzi istehsal xidmətlərinin qismən dayanmasına səbəb olan Kubernetes klasterində əlaqə ilə bağlı problemi təsvir edir.

Bu məqalə postmortemlər haqqında bir az daha çox öyrənmək və ya gələcəkdə bəzi potensial DNS problemlərinin qarşısını almaq istəyənlər üçün faydalı ola bilər.

Kubernetes-də DNS ilə bağlı problemlər. İctimai ölümdən sonra
Bu DNS deyil
DNS ola bilməz
DNS idi

Preply-də postmortemlər və proseslər haqqında bir az

Postmortem istehsalda nasazlığı və ya hər hansı hadisəni təsvir edir. Postmortem hadisələrin qrafikini, istifadəçi təsiri, kök səbəb, görülən tədbirlər və öyrənilən dərsləri əhatə edir.

SRE axtarılır

Pizza ilə həftəlik görüşlərdə texniki heyət arasında müxtəlif məlumatlar paylaşırıq. Bu cür görüşlərin ən vacib hissələrindən biri ölümdən sonrakı müayinələrdir ki, onlar daha çox slaydlarla təqdimat və hadisənin daha dərin təhlili ilə müşayiət olunur. Ölümdən sonra əl çalmasaq da, "günahsızlıq" mədəniyyətini inkişaf etdirməyə çalışırıq (qüsursuz mədəniyyət). Biz inanırıq ki, postmortemləri yazmaq və təqdim etmək bizə (və başqalarına) gələcəkdə oxşar hadisələrin qarşısını almağa kömək edə bilər, buna görə də onları paylaşırıq.

İnsidentdə iştirak edən şəxslər hiss etməlidirlər ki, cəza və ya qisas qorxusu olmadan təfərrüatları ilə danışa bilərlər. Günah yoxdur! Postmortem yazmaq cəza deyil, bütün şirkət üçün öyrənmə fürsətidir.

CALMS & DevOps-u saxlayın: S Paylaşma üçündür

Kubernetes-də DNS ilə bağlı problemlər. Ölümdən sonra

Tarix: 28.02.2020

Müəlliflər: Amet U., Andrey S., İqor K., Aleksey P.

Status: Bitdi

Qısaca: Kubernetes klasterindəki bəzi xidmətlər üçün qismən DNS əlçatanlığı (26 dəq).

Təsir: A, B və C xidmətləri üçün 15000 hadisə itirildi

Kök səbəb: Kube-proxy köhnə girişi conntrack cədvəlindən düzgün silə bilmədi, buna görə də bəzi xidmətlər hələ də mövcud olmayan podlara qoşulmağa çalışırdı.

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

Tətik: Kubernetes klasterində aşağı yükə görə, CoreDNS-autoscaler yerləşdirmədəki podların sayını üçdən ikiyə endirdi.

həll: Tətbiqin növbəti tətbiqi yeni qovşaqların yaradılmasına başladı, CoreDNS-autoscaler klasterə xidmət etmək üçün daha çox podlar əlavə etdi, bu da conntrack cədvəlinin yenidən yazılmasına səbəb oldu.

Aşkarlama: Prometheus monitorinqi A, B və C xidmətləri üçün çoxlu sayda 5xx səhv aşkar etdi və növbətçi mühəndislərə zəng etməyə başladı.

Kubernetes-də DNS ilə bağlı problemlər. İctimai ölümdən sonra
Kibana'da 5xx səhvləri

Aktivlik

effekt
Növü
Məsul
Tapşırıq

CoreDNS üçün avtomatik miqyaslayıcıyı söndürün
qarşısını aldı
Amet Ü.
DEVOPS-695

Keşləmə DNS serverini qurun
azalma
Maks V.
DEVOPS-665

Bağlantı monitorinqini qurun
qarşısını aldı
Amet Ü.
DEVOPS-674

Öyrənilmiş dərslər

Nə yaxşı getdi:

  • Monitorinq yaxşı nəticə verdi. Cavab sürətli və mütəşəkkil idi
  • Düyünlərdə heç bir məhdudiyyət vurmadıq

Nə səhv idi:

  • Bənzər bir real kök səbəbi hələ də bilinmir xüsusi səhv ziddiyyətdə
  • Bütün hərəkətlər kök səbəbi deyil, yalnız nəticələri düzəldir (səhv)
  • Biz bilirdik ki, gec-tez DNS ilə bağlı problemlər yarana bilər, lakin biz tapşırıqları prioritet hesab etmirdik

Bəxtimiz gətirdiyi yer:

  • Növbəti yerləşdirmə, əlaqə cədvəlinin üzərinə yazan CoreDNS-autoscaler tərəfindən işə salındı.
  • Bu səhv yalnız bəzi xidmətlərə təsir etdi

Zaman qrafiki (EET)

vaxt
effekt

22:13
CoreDNS-autoscaler podların sayını üçdən ikiyə endirdi

22:18
Növbətçi mühəndislərə monitorinq sistemindən zənglər gəlməyə başlayıb

22:21
Növbətçi mühəndislər xətaların səbəbini öyrənməyə başlayıblar.

22:39
Növbətçi mühəndislər ən son xidmətlərdən birini əvvəlki versiyaya qaytarmağa başladılar

22:40
5xx səhvləri görünməyi dayandırdı, vəziyyət sabitləşdi

  • Aşkarlama vaxtı: 4 dəqiqə
  • Fəaliyyətdən əvvəl vaxt: 21 dəqiqə
  • Düzəltmə vaxtı: 1 dəqiqə

Əlavə məlumat

CPU istifadəsini minimuma endirmək üçün Linux nüvəsi conntrack adlı bir şeydən istifadə edir. Bir sözlə, bu, xüsusi cədvəldə saxlanılan NAT qeydlərinin siyahısını ehtiva edən bir yardım proqramıdır. Növbəti paket əvvəlki kimi eyni poddan eyni poda çatdıqda, son IP ünvanı yenidən hesablanmayacaq, lakin conntrack cədvəlindən götürüləcək.
Kubernetes-də DNS ilə bağlı problemlər. İctimai ölümdən sonra
Conntrack necə işləyir

Nəticələri

Bu, bəzi faydalı bağlantıları olan postmortemlərimizdən birinin nümunəsi idi. Xüsusilə bu məqalədə biz digər şirkətlər üçün faydalı ola biləcək məlumatları paylaşırıq. Buna görə də biz səhv etməkdən qorxmuruq və buna görə də ölümdən sonrakı əməliyyatlarımızdan birini ictimailəşdiririk. Burada daha maraqlı ictimai postmortemlər var:

Mənbə: www.habr.com

Добавить комментарий