DNS-ի հետ կապված խնդիրներ Kubernetes-ում. Հանրային դիահերձում

Նշում թարգմանություն: Սա ընկերության ինժեներական բլոգից հրապարակային դիահերձման թարգմանությունն է Պատրաստել. Այն նկարագրում է Kubernetes-ի կլաստերի հետ կապված մի խնդիր, որը հանգեցրել է որոշ արտադրական ծառայությունների մասնակի խափանումների:

Այս հոդվածը կարող է օգտակար լինել նրանց համար, ովքեր ցանկանում են մի փոքր ավելին իմանալ հետմահուների մասին կամ կանխել ապագայում DNS-ի որոշ հնարավոր խնդիրներ:

DNS-ի հետ կապված խնդիրներ Kubernetes-ում. Հանրային դիահերձում
Սա DNS չէ
Դա չի կարող լինել DNS
Դա DNS էր

Մի փոքր Preply-ում հետմահուների և գործընթացների մասին

Հետմահու նկարագրում է անսարքություն կամ ինչ-որ իրադարձություն արտադրության մեջ: Հետմահու ներառում է իրադարձությունների ժամանակացույցը, օգտագործողի ազդեցությունը, հիմնական պատճառը, ձեռնարկված գործողությունները և քաղված դասերը:

Փնտրում եմ SRE

Պիցցայի հետ ամենշաբաթյա հանդիպումների ժամանակ տեխնիկական թիմում մենք կիսվում ենք տարբեր տեղեկություններով: Նման հանդիպումների ամենակարևոր մասերից է դիահերձումը, որն առավել հաճախ ուղեկցվում է սլայդներով ներկայացումով և դեպքի ավելի խորը վերլուծությամբ։ Թեև մահապատժից հետո մենք ծափ չենք տալիս, մենք փորձում ենք զարգացնել «առանց մեղքի» մշակույթը (անմեղ մշակույթ). Մենք հավատում ենք, որ հետմահու գրելը և ներկայացնելը կարող է օգնել մեզ (և մյուսներին) կանխել նմանատիպ միջադեպերը ապագայում, այդ իսկ պատճառով մենք կիսվում ենք դրանք:

Միջադեպի մեջ ներգրավված անհատները պետք է զգան, որ կարող են մանրամասնորեն խոսել՝ առանց պատժի կամ հատուցման վախի: Ոչ մի մեղք: Հետմահու գրելը պատիժ չէ, այլ սովորելու հնարավորություն ողջ ընկերության համար:

Պահպանեք CALMS և DevOps. S-ը համօգտագործման համար է

DNS-ի հետ կապված խնդիրներ Kubernetes-ում. Հետմահու

Дата: 28.02.2020

Հեղինակներ: Ամետ Ու., Անդրեյ Ս., Իգոր Կ., Ալեքսեյ Պ.

Ստատուս: Ավարտված

Կարճ ասած ` DNS-ի մասնակի անհասանելիություն (26 րոպե) Kubernetes կլաստերի որոշ ծառայությունների համար

Ազդեցություն: 15000 իրադարձություն կորցրեց A, B և C ծառայությունների համար

Սկզբնական պատճառ: Kube-proxy-ը չկարողացավ ճիշտ կերպով հեռացնել հին մուտքը 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: ...

Գործարկիչ. Կուբերնետես կլաստերի ներսում ցածր բեռնվածության պատճառով CoreDNS-autoscaler-ը նվազեցրեց տեղաբաշխման բլոկների քանակը երեքից երկուսի:

լուծում: Հավելվածի հաջորդ տեղակայումը սկիզբ դրեց նոր հանգույցների ստեղծմանը.

Հայտնաբերում: Պրոմեթևսի մոնիտորինգը հայտնաբերել է մեծ թվով 5xx սխալներ A, B և C ծառայությունների համար և զանգահարել հերթապահ ինժեներներին:

DNS-ի հետ կապված խնդիրներ Kubernetes-ում. Հանրային դիահերձում
5xx սխալներ Kibana-ում

Գործունեություն

ազդեցություն
Տիպ
Պատասխանատու
Առաջադրանք

Անջատել Autoscaler-ը CoreDNS-ի համար
կանխվել է
Ամետ Ու.
DEVOPS-695

Ստեղծեք քեշավորման DNS սերվեր
նվազում
Մաքս Վ.
DEVOPS-665

Սահմանեք contrack մոնիտորինգը
կանխվել է
Ամետ Ու.
DEVOPS-674

Քաղված դասերը

Ինչ լավ անցավ.

  • Մոնիտորինգը լավ է աշխատել։ Արձագանքը արագ էր և կազմակերպված
  • Մենք հանգույցների վրա ոչ մի սահմանափակում չենք սահմանել

Ինչն էր սխալ:

  • Դեռևս անհայտ իրական արմատական ​​պատճառը, նման է կոնկրետ սխալ ի հակադրում
  • Բոլոր գործողությունները ուղղում են միայն հետևանքները, ոչ թե հիմնական պատճառը (վրիպակը)
  • Մենք գիտեինք, որ վաղ թե ուշ կարող ենք խնդիրներ ունենալ DNS-ի հետ, բայց առաջնահերթություն չէինք տալիս առաջադրանքներին

Որտեղ մեր բախտը բերեց.

  • Հաջորդ տեղակայումը գործարկվել է CoreDNS-autoscaler-ի կողմից, որը վերագրել է contrack աղյուսակը
  • Այս սխալը ազդել է միայն որոշ ծառայությունների վրա

Ժամանակացույց (EET)

Ժամանակ
ազդեցություն

22:13
CoreDNS-autoscaler-ը նվազեցրեց պատիճների քանակը երեքից երկուսի

22:18
Հերթապահ ինժեներները սկսեցին ահազանգեր ստանալ մոնիտորինգի համակարգից

22:21
Հերթապահ ինժեներները սկսել են պարզել սխալների պատճառը։

22:39
Հերթապահ ինժեներները սկսեցին վերադարձնել վերջին ծառայություններից մեկը նախորդ տարբերակին

22:40
5xx սխալները դադարեցին հայտնվել, իրավիճակը կայունացել է

  • Հայտնաբերման ժամանակը. 4 րոպե
  • Գործողությունից առաջ ժամանակը. 21 րոպե
  • Ուղղելու ժամանակը. 1 րոպե

Լրացուցիչ տեղեկություններ

CPU-ի օգտագործումը նվազագույնի հասցնելու համար Linux միջուկն օգտագործում է մի բան, որը կոչվում է conntrack: Մի խոսքով, սա օգտակար ծրագիր է, որը պարունակում է NAT գրառումների ցանկ, որոնք պահվում են հատուկ աղյուսակում: Երբ հաջորդ փաթեթը ժամանում է նույն pod-ից նույն pod, ինչ նախկինում, վերջնական IP հասցեն չի վերահաշվարկվի, այլ կվերցվի conntrack աղյուսակից:
DNS-ի հետ կապված խնդիրներ Kubernetes-ում. Հանրային դիահերձում
Ինչպես է աշխատում contrack-ը

Արդյունքները

Սա մեր հետմահուներից մեկի օրինակն էր՝ մի քանի օգտակար հղումներով: Մասնավորապես այս հոդվածում մենք կիսվում ենք տեղեկություններով, որոնք կարող են օգտակար լինել այլ ընկերությունների համար: Ահա թե ինչու մենք չենք վախենում սխալվելուց և դրա համար մենք հրապարակում ենք մեր հետմահուներից մեկը: Ահա ևս մի քանի հետաքրքիր հրապարակային դիահերձումներ.

Source: www.habr.com

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