Эскертүү котормо: Бул компаниянын инженердик блогунан ачык өлгөндөн кийинки котормосу . Бул кээ бир өндүрүш кызматтарынын жарым-жартылай токтоп калышына алып келген Kubernetes кластериндеги байланыш көйгөйүн сүрөттөйт.
Бул макала постмортемдер жөнүндө бир аз көбүрөөк билгиси келгендер үчүн пайдалуу болушу мүмкүн же келечекте кээ бир мүмкүн болуучу DNS көйгөйлөрүнүн алдын алуу.

Бул DNS эмес
Бул DNS болушу мүмкүн эмес
Бул DNS болчу
Preplyдеги өлүмдөн кийинки процесстер жана процесстер жөнүндө бир аз
Постмортем өндүрүштөгү бузулууну же кандайдыр бир окуяны сүрөттөйт. Постмортем окуялардын хронологиясын, колдонуучунун таасирин, түпкү себебин, жасалган аракеттерди жана алынган сабактарды камтыйт.
Пицца менен жума сайын болгон жолугушууларда техникалык топтун арасында биз ар кандай маалыматтарды бөлүшөбүз. Мындай жолугушуулардын эң маанилүү бөлүктөрүнүн бири болуп өлгөндөн кийинки изилдөөлөр саналат, алар көбүнчө слайддар менен презентация жана окуяны тереңирээк талдоо менен коштолот. Өлгөндөн кийин кол чаппасак да, “күнөө жок” маданиятын өнүктүрүүгө аракет кылабыз (). Постмортемдерди жазуу жана көрсөтүү бизге (жана башкаларга) келечекте ушундай окуялардын алдын алууга жардам берет деп ишенебиз, ошондуктан биз аларды бөлүшүп жатабыз.
Окуяга катышкан адамдар жазадан же жазадан коркпостон, майда-чүйдөсүнө чейин сүйлөй аларын сезиши керек. Айып жок! Постмортем жазуу жаза эмес, бүткүл компания үчүн окуу мүмкүнчүлүгү.
Kubernetesтеги DNS менен көйгөйлөр. Постмортем
датасы: 28.02.2020
Авторлор: Амет У., Андрей С., Игорь К., Алексей П.
Статус: Бүттү
кыскача: Kubernetes кластериндеги кээ бир кызматтар үчүн жарым-жартылай DNS жеткиликсиздиги (26 мүн.).
Таасири: А, В жана С кызматтары үчүн 15000 XNUMX окуя жоголду
Негизги себеп: Kube-прокси эски жазууну conntrack жадыбалынан туура алып сала алган жок, андыктан кээ бир кызматтар дагы эле жок подкасттарга туташууга аракет кылып жатышат
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: ...Триггер: Kubernetes кластеринин ичиндеги жүктүн аздыгынан, CoreDNS-autoscaler жайгаштыруудагы поддондордун санын үчтөн экиге чейин кыскартты
чечим: Тиркеменин кийинки жайылтылышы жаңы түйүндөрдү түзүүнү демилгеледи, CoreDNS-autoscaler кластерге кызмат кылуу үчүн кошумча поддондорду кошту, бул conntrack таблицасын кайра жазууга түрткү болду.
Аныктоо: Prometheus мониторинги A, B жана C кызматтары үчүн көп сандагы 5xx каталарын аныктап, нөөмөттөгү инженерлерди чакырды.

Кибанадагы 5xx катасы
Действия
таасири
түрү
Жооптуу
маселе
CoreDNS үчүн автоматтык масштабды өчүрүү
алдын алды
Амет У.
DEVOPS-695
Кэштөө DNS серверин орнотуңуз
азайтуу
Макс В.
DEVOPS-665
Conntrack мониторинг орнотуу
алдын алды
Амет У.
DEVOPS-674
Үйрөнгөн сабактар
Эмнеси жакшы болду:
- Мониторинг жакшы иштеди. Жооп тез жана уюшкандыкта болду
- Биз түйүндөр боюнча эч кандай чектөөлөрдү койгон жокпуз
Эмне болду:
- Окшош, дагы эле белгисиз чыныгы түпкү себеби каршы
- Бардык аракеттер түпкү себебин эмес, кесепеттерин гана оңдойт (ката)
- Биз эртеби-кечпи DNS менен көйгөйлөр болушу мүмкүн экенин билген, бирок биз милдеттерди биринчи орунга койгон жокпуз
Кайдан бактыбыз:
- Кийинки жайгаштыруу Conntrack таблицасын кайра жазган CoreDNS-autoscaler тарабынан ишке ашырылган
- Бул мүчүлүштүк кээ бир кызматтарга гана таасирин тийгизди
Убакыт тилкеси (EET)
Время
таасири
22:13
CoreDNS-автоматтык масштабдоочу поддондордун санын үчтөн экиге кыскартты
22:18
Мониторинг системасынан нөөмөттөгү инженерлер чалууларды ала башташты
22:21
Нөөмөттө турган инженерлер каталардын себебин аныктай башташты.
22:39
Нөөмөттө турган инженерлер акыркы кызматтардын бирин мурунку версияга кайтара башташты
22:40
5xx каталары көрүнбөй калды, абал турукташып калды
- Аныктоо убактысы: 4 мүнөт
- Аракетке чейинки убакыт: 21 мүнөт
- Оңдоо убактысы: 1 мүнөт
кошумча маалымат
- CoreDNS журналдары:
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 - Шилтемелер Кибана (кесилген), Графана (кесилген)
CPU колдонууну азайтуу үчүн, ядро Linux Ал conntrack деп аталган нерсени колдонот. Кыскача айтканда, бул атайын таблицада сакталган NAT жазууларынын тизмесин камтыган утилита. Кийинки пакет мурункудай эле ошол эле поддон ошол эле подго келгенде, көздөгөн IP дареги кайра эсептелбейт, бирок conntrack таблицасынан алынат.

Conntrack кантип иштейт
натыйжалары
Бул кээ бир пайдалуу шилтемелер менен биздин постмортемдердин биринин мисалы болгон. Тактап айтканда, бул макалада биз башка компаниялар үчүн пайдалуу болушу мүмкүн болгон маалыматты бөлүшөбүз. Ошон үчүн биз ката кетирүүдөн коркпойбуз жана өлүмдөн кийинки текшерүүлөрүбүздүн бирин ачык жарыялайбыз. Бул жерде дагы бир нече кызыктуу коомдук постмортемдер:
- GitLab:
- Dropbox:
- Spotify:
- Көптөгөн башкалардан жана репозиторий
- дагы коомдук өлүмдөн кийинки SRE китеби менен
Source: www.habr.com
