Kubernetes-ի լավագույն փորձը. Kubernetes Liveness-ի վավերացում պատրաստակամության և աշխուժության թեստերով

Kubernetes-ի լավագույն փորձը. Փոքր կոնտեյներների ստեղծում
Kubernetes-ի լավագույն փորձը. Kubernetes-ի կազմակերպում անվանատարածքով

Kubernetes-ի լավագույն փորձը. Kubernetes Liveness-ի վավերացում պատրաստակամության և աշխուժության թեստերով

Բաշխված համակարգերը կարող են դժվար լինել կառավարելը, քանի որ դրանք ունեն բազմաթիվ շարժվող, փոփոխվող տարրեր, որոնք բոլորը պետք է ճիշտ աշխատեն, որպեսզի համակարգը գործի: Եթե ​​տարրերից մեկը խափանվի, համակարգը պետք է հայտնաբերի այն, շրջանցի և շտկի, և այս ամենը պետք է կատարվի ավտոմատ կերպով։ Այս Kubernetes-ի լավագույն պրակտիկաների շարքում մենք կսովորենք, թե ինչպես կարգավորել պատրաստակամության և կենսունակության թեստերը՝ ստուգելու Kubernetes կլաստերի առողջությունը:

Առողջության ստուգումը համակարգին տեղեկացնելու պարզ միջոց է, թե արդյոք ձեր հավելվածի օրինակն աշխատում է, թե ոչ: Եթե ​​ձեր հավելվածի օրինակն անջատված է, ապա այլ ծառայություններ չպետք է մուտք գործեն այն կամ հարցումներ ուղարկեն դրան: Փոխարենը, հարցումը պետք է ուղարկվի հավելվածի մեկ այլ օրինակ, որն արդեն աշխատում է կամ կգործարկվի ավելի ուշ: Բացի այդ, համակարգը պետք է վերականգնի ձեր հավելվածի կորցրած ֆունկցիոնալությունը:

Լռելյայնորեն, Kubernetes-ը կսկսի երթևեկություն ուղարկել պատիճ, երբ բոլոր բեռնարկղերը աշխատում են, և կվերագործարկի բեռնարկղերը, երբ դրանք խափանվեն: Այս լռելյայն համակարգի վարքագիծը կարող է բավականին լավ լինել սկզբի համար, բայց դուք կարող եք բարելավել ձեր արտադրանքի տեղակայման հուսալիությունը՝ օգտագործելով մաքսային առողջական ստուգումներ:

Kubernetes-ի լավագույն փորձը. Kubernetes Liveness-ի վավերացում պատրաստակամության և աշխուժության թեստերով

Բարեբախտաբար, Kubernetes-ը դա բավականին հեշտ է դարձնում, ուստի այս ստուգումները անտեսելու արդարացում չկա: Kubernetes-ը տրամադրում է երկու տեսակի Առողջության Ստուգումներ, և կարևոր է հասկանալ տարբերությունները յուրաքանչյուրի օգտագործման մեջ:

Պատրաստակամության թեստը նախատեսված է Kubernetes-ին ասելու համար, որ ձեր հավելվածը պատրաստ է կարգավորել տրաֆիկը: Նախքան ծառայությանը թույլ տալ երթևեկություն ուղարկել pod, Kubernetes-ը պետք է ստուգի, որ պատրաստության ստուգումը հաջող է: Եթե ​​պատրաստակամության թեստը ձախողվի, Kubernetes-ը կդադարեցնի երթևեկություն ուղարկել պատիճ, մինչև թեստն անցնի:

Liveness թեստը Kubernetes-ին ասում է՝ ձեր դիմումը կենդանի է, թե մեռած: Առաջին դեպքում Kubernetes-ը հանգիստ կթողնի այն, երկրորդում կջնջի մեռած պատիճը և այն կփոխարինի նորով։

Եկեք պատկերացնենք մի սցենար, երբ ձեր հավելվածը տաքանալու և գործարկելու համար տևում է 1 րոպե: Ձեր ծառայությունը չի սկսի աշխատել այնքան ժամանակ, քանի դեռ հավելվածը ամբողջությամբ չի բեռնվել և գործարկվել, թեև աշխատանքային հոսքն արդեն սկսվել է: Դուք նաև խնդիրներ կունենաք, եթե ցանկանում եք մեծացնել այս տեղաբաշխումը մի քանի օրինակների, քանի որ այդ պատճենները չպետք է տրաֆիկ ստանան, քանի դեռ լիովին պատրաստ չեն: Այնուամենայնիվ, լռելյայնորեն, Kubernetes-ը կսկսի թրաֆիկ ուղարկել հենց որ սկսվեն կոնտեյների ներսում գործընթացները:

Պատրաստակամության թեստն օգտագործելիս Kubernetes-ը կսպասի մինչև հավելվածն ամբողջությամբ գործարկվի, նախքան ծառայությանը թույլ կտա թրաֆիկը ուղարկել նոր օրինակին:

Kubernetes-ի լավագույն փորձը. Kubernetes Liveness-ի վավերացում պատրաստակամության և աշխուժության թեստերով

Եկեք պատկերացնենք մեկ այլ սցենար, որում հավելվածը երկար ժամանակ կախված է՝ դադարեցնելով սպասարկման հարցումները։ Քանի որ գործընթացը շարունակվում է, Kubernetes-ը լռելյայն կենթադրի, որ ամեն ինչ լավ է և կշարունակի հարցումներ ուղարկել չաշխատող pod: Բայց Liveness-ն օգտագործելիս Kubernetes-ը կհայտնաբերի, որ հավելվածն այլևս չի սպասարկում հարցումները և լռելյայն կվերագործարկի մեռած pod-ը:

Kubernetes-ի լավագույն փորձը. Kubernetes Liveness-ի վավերացում պատրաստակամության և աշխուժության թեստերով

Եկեք նայենք, թե ինչպես են փորձարկվում պատրաստվածությունն ու կենսունակությունը։ Փորձարկման երեք եղանակ կա՝ HTTP, Command և TCP: Ստուգելու համար կարող եք օգտագործել դրանցից որևէ մեկը: Օգտատիրոջ փորձարկման ամենատարածված միջոցը HTTP զոնդն է:

Նույնիսկ եթե ձեր հավելվածը HTTP սերվեր չէ, դուք դեռ կարող եք ստեղծել թեթև HTTP սերվեր ձեր հավելվածի ներսում՝ Liveness թեստի հետ փոխազդելու համար: Դրանից հետո Kubernetes-ը կսկսի ձայնագրել pod-ը, և եթե HTTP-ի պատասխանը գտնվում է 200 կամ 300 ms միջակայքում, դա ցույց կտա, որ pod-ը առողջ է։ Հակառակ դեպքում մոդուլը կնշվի որպես «անառողջ»:

Kubernetes-ի լավագույն փորձը. Kubernetes Liveness-ի վավերացում պատրաստակամության և աշխուժության թեստերով

Հրամանի թեստերի համար Kubernetes-ը գործարկում է հրամանը ձեր կոնտեյների ներսում: Եթե ​​հրամանը վերադառնում է զրոյական ելքի կոդով, ապա կոնտեյները կնշվի որպես առողջ, հակառակ դեպքում 1-ից մինչև 255 ելքի կարգավիճակի համարը ստանալուց հետո բեռնարկղը կնշվի որպես «հիվանդ»: Այս փորձարկման մեթոդը օգտակար է, եթե դուք չեք կարող կամ չեք ցանկանում գործարկել HTTP սերվեր, բայց կարող եք գործարկել հրաման, որը կստուգի ձեր հավելվածի առողջությունը:

Kubernetes-ի լավագույն փորձը. Kubernetes Liveness-ի վավերացում պատրաստակամության և աշխուժության թեստերով

Վերջնական ստուգման մեխանիզմը TCP թեստն է: Kubernetes-ը կփորձի TCP կապ հաստատել նշված նավահանգստում: Եթե ​​դա հնարավոր է անել, ապա տարան համարվում է առողջ, եթե ոչ, ապա այն համարվում է ոչ կենսունակ: Այս մեթոդը կարող է օգտակար լինել, եթե դուք օգտագործում եք այնպիսի սցենար, որտեղ HTTP հարցումով կամ հրամանի կատարմամբ փորձարկումն այնքան էլ լավ չի աշխատում: Օրինակ, TCP-ի միջոցով հաստատման հիմնական ծառայությունները կլինեն gRPC կամ FTP:

Kubernetes-ի լավագույն փորձը. Kubernetes Liveness-ի վավերացում պատրաստակամության և աշխուժության թեստերով

Թեստերը կարող են կազմաձևվել մի քանի ձևով՝ տարբեր պարամետրերով: Դուք կարող եք նշել, թե որքան հաճախ պետք է դրանք կատարվեն, որոնք են հաջողության և ձախողման շեմերը և որքան ժամանակ սպասել պատասխաններին: Լրացուցիչ տեղեկությունների համար տե՛ս Պատրաստության և Կենսունակության թեստերի փաստաթղթերը: Այնուամենայնիվ, Liveness թեստը կարգավորելու մեջ կա մի շատ կարևոր կետ՝ թեստավորման հետաձգման սկզբնական կարգավորումը initialDelaySeconds: Ինչպես նշեցի, այս թեստի ձախողումը կհանգեցնի մոդուլի վերագործարկմանը: Այսպիսով, դուք պետք է համոզվեք, որ թեստավորումը չի սկսվում այնքան ժամանակ, քանի դեռ հավելվածը պատրաստ չէ, այլապես այն կսկսի վերագործարկել հեծանիվը: Ես խորհուրդ եմ տալիս օգտագործել P99 գործարկման ժամանակը կամ բուֆերից հավելվածի գործարկման միջին ժամանակը: Հիշեք, որ կարգավորեք այս արժեքը, քանի որ ձեր հավելվածի գործարկման ժամանակն ավելի արագ կամ դանդաղ է դառնում:

Փորձագետների մեծ մասը կհաստատի, որ առողջության ստուգումները պարտադիր ստուգում են ցանկացած բաշխված համակարգի համար, և Kubernetes-ը բացառություն չէ: Ծառայությունների առողջության ստուգումների օգտագործումը ապահովում է Kubernetes-ի հուսալի, անխափան աշխատանքը և օգտատերերի համար հեշտ է:

Շարունակությունը շատ շուտով...

Մի քանի գովազդ 🙂

Շնորհակալություն մեզ հետ մնալու համար: Ձեզ դուր են գալիս մեր հոդվածները: Ցանկանու՞մ եք տեսնել ավելի հետաքրքիր բովանդակություն: Աջակցեք մեզ՝ պատվիրելով կամ խորհուրդ տալով ընկերներին, ամպային VPS մշակողների համար $4.99-ից, մուտքի մակարդակի սերվերների եզակի անալոգ, որը հորինվել է մեր կողմից ձեզ համար. Ամբողջ ճշմարտությունը VPS (KVM) E5-2697 v3 (6 Cores) 10GB DDR4 480GB SSD 1Gbps 19 դոլարից կամ ինչպես կիսել սերվերը: (հասանելի է RAID1 և RAID10-ով, մինչև 24 միջուկով և մինչև 40 ԳԲ DDR4):

Dell R730xd 2 անգամ ավելի էժան Ամստերդամի Equinix Tier IV տվյալների կենտրոնում: Միայն այստեղ 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 հեռուստացույց $199-ից Նիդեռլանդներում! Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - $99-ից: Կարդացեք մասին Ինչպես կառուցել ենթակառուցվածքի կորպ. դաս՝ 730 եվրո արժողությամբ Dell R5xd E2650-4 v9000 սերվերների օգտագործմամբ մեկ կոպեկի համար:

Source: www.habr.com

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