Google-ի 7 բեռնարկղերի լավագույն փորձը

Նշում. թարգմ.Բնօրինակ հոդվածի հեղինակը Google Cloud Solutions-ի ճարտարապետ Թեո Չամլին է: Google Cloud բլոգի այս գրառման մեջ նա ներկայացնում է իր ընկերության ավելի մանրամասն ուղեցույցի ամփոփագիրը, որը կոչվում է «Լավագույն պրակտիկա բեռնարկղերի շահագործման համար« Դրանում Google-ի փորձագետները հավաքել են կոնտեյներների շահագործման լավագույն փորձը՝ Google Kubernetes Engine-ի օգտագործման համատեքստում և ավելին՝ շոշափելով թեմաների լայն շրջանակ՝ անվտանգությունից մինչև մոնիտորինգ և գրանցում: Այսպիսով, որո՞նք են բեռնարկղերի ամենակարևոր պրակտիկան ըստ Google-ի:

Google-ի 7 բեռնարկղերի լավագույն փորձը

Kubernetes շարժիչ (Kubernetes-ի վրա հիմնված ծառայություն՝ Google Cloud-ում կոնտեյներային հավելվածներ գործարկելու համար. մոտ. թարգմանություն) Աշխատանքային ծանրաբեռնվածություն գործարկելու լավագույն միջոցներից մեկն է, որը պետք է մասշտաբի: Կուբերնետես կապահովի հավելվածների մեծ մասի անխափան աշխատանքը, եթե դրանք կոնտեյներային են: Բայց եթե ցանկանում եք, որ ձեր հավելվածը հեշտ կառավարվի և ցանկանում եք լիարժեք օգտվել Kubernetes-ից, դուք պետք է հետևեք լավագույն փորձին: Դրանք կպարզեցնեն հավելվածի աշխատանքը, դրա մոնիտորինգն ու վրիպազերծումը, ինչպես նաև կբարձրացնեն անվտանգությունը։

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

1. Օգտագործեք բնիկ կոնտեյներների հատման մեխանիզմներ

Եթե ​​հավելվածն աշխատում է Kubernetes կլաստերի վրա, տեղեկամատյանների համար շատ բան պետք չէ: Հավանաբար, ձեր օգտագործած կլաստերի մեջ արդեն ներկառուցված է գրանցման կենտրոնացված համակարգ: Kubernetes Engine-ի օգտագործման դեպքում դա պատասխանատու է Stackdriver Logging. (Նշում. թարգմ.Եվ եթե դուք օգտագործում եք ձեր սեփական Kubernetes տեղադրումը, խորհուրդ ենք տալիս ավելի մոտիկից նայել մեր բաց կոդով լուծումը. գերան.) Պահպանեք ձեր կյանքը պարզ և օգտագործեք բեռնարկղերի անտառահատման մեխանիզմները: Գրեք տեղեկամատյաններ stdout-ում և stderr-ում. դրանք ավտոմատ կերպով կստացվեն, կպահվեն և ինդեքսավորվեն:

Ցանկության դեպքում կարող եք նաև տեղեկամատյաններ գրել JSON ձևաչափ. Այս մոտեցումը կհեշտացնի դրանցում մետատվյալներ ավելացնելը: Եվ նրանց հետ, Stackdriver Logging-ը հնարավորություն կունենա որոնել տեղեկամատյաններում՝ օգտագործելով այս մետատվյալները:

2. Համոզվեք, որ բեռնարկղերը քաղաքացիություն չունեն և անփոփոխ են

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

Քաղաքացիություն չունեցող նշանակում է, որ ցանկացած վիճակ (ցանկացած տեսակի մշտական ​​տվյալներ) պահվում է բեռնարկղից դուրս: Դրա համար, կախված կարիքներից, կարող են օգտագործվել տարբեր տեսակի արտաքին պահեստներ. Cloud Պահպանման, Մշտական ​​սկավառակներ, Redis, Ամպային SQL կամ այլ կառավարվող տվյալների բազաներ: (Նշում. թարգմ.Այս մասին ավելին կարդացեք մեր հոդվածում «Օպերատորներ Kubernetes-ի համար. ինչպես գործարկել պետական ​​ծրագրեր«.)

Անփոփոխ նշանակում է, որ բեռնարկղը չի փոփոխվի իր կյանքի ընթացքում. չկան թարմացումներ, կարկատներ, կոնֆիգուրացիայի փոփոխություններ: Եթե ​​Ձեզ անհրաժեշտ է թարմացնել ձեր հավելվածի կոդը կամ կիրառել կարկատել, ստեղծեք նոր պատկեր և տեղադրեք այն: Խորհուրդ է տրվում տեղափոխել կոնտեյների կոնֆիգուրացիան (լսման պորտ, գործարկման միջավայրի ընտրանքներ և այլն) դեպի արտաքին՝ դեպի Secrets и ConfigMaps. Նրանք կարող են թարմացվել առանց նոր կոնտեյների պատկեր ստեղծելու: Պատկերի հավաքմամբ խողովակաշարեր հեշտությամբ ստեղծելու համար կարող եք օգտագործել Cloud Build. (Նշում. թարգմ.Այս նպատակների համար մենք օգտագործում ենք բաց կոդով գործիք դափ.)

Google-ի 7 բեռնարկղերի լավագույն փորձը
Kubernetes-ում Deployment կոնֆիգուրացիայի թարմացման օրինակ՝ օգտագործելով ConfigMap-ը, որը տեղադրված է pods-ում որպես կազմաձև

3. Խուսափեք արտոնյալ տարաներից

Դուք ձեր սերվերների վրա հավելվածներ չեք գործարկում որպես արմատ, այնպես չէ՞: Եթե ​​հարձակվողը մտնի հավելված, նա կստանա root մուտք: Նույն նկատառումները վերաբերում են արտոնյալ կոնտեյներների չաշխատմանը: Եթե ​​Ձեզ անհրաժեշտ է փոխել հյուրընկալողի կարգավորումները, կարող եք կոնկրետ նշել կոնտեյները կարողությունները օգտագործելով տարբերակը securityContext Կուբերնետեսում։ Եթե ​​Ձեզ անհրաժեշտ է փոխել sysctls, Kubernetes ունի առանձին վերացական սրա համար. Ընդհանուր առմամբ, փորձեք առավելագույնս օգտագործել սկզբից- և կողային բեռնարկղեր՝ նմանատիպ արտոնյալ գործողություններ կատարելու համար: Պետք չէ, որ դրանք հասանելի լինեն ինչպես ներքին, այնպես էլ արտաքին տրաֆիկի համար:

Եթե ​​դուք կառավարում եք կլաստեր, կարող եք օգտագործել Pod անվտանգության քաղաքականություն արտոնյալ բեռնարկղերի օգտագործման սահմանափակումների համար։

4. Խուսափեք վազելուց որպես արմատ

Արտոնյալ կոնտեյներներն արդեն քննարկվել են, բայց ավելի լավ կլինի, եթե բացի սրանից, բեռնարկղի ներսում հավելվածներ չգործարկեք որպես root: Եթե ​​հարձակվողը գտնում է հեռավոր խոցելիություն արմատային իրավունքներով հավելվածում, որը թույլ է տալիս կոդի գործարկումը, որից հետո նա կարող է լքել կոնտեյները դեռևս անհայտ խոցելիության միջոցով, նա արմատ կստանա հոսթի վրա:

Սրանից խուսափելու լավագույն միջոցը ի սկզբանե որևէ բան որպես root չգործարկելն է: Դա անելու համար կարող եք օգտագործել հրահանգը USER в Dockerfile կամ runAsUser Կուբերնետեսում։ Կլաստերի ադմինիստրատորը կարող է նաև կարգավորել հարկադիր վարքագիծը՝ օգտագործելով Pod անվտանգության քաղաքականություն.

5. Դարձրեք հավելվածը հեշտ վերահսկվող

Ինչպես անտառահատումները, մոնիտորինգը հավելվածների կառավարման անբաժանելի մասն է: Կուբերնետես համայնքում մոնիտորինգի հանրաճանաչ լուծումն է Պրոմեթեւս - համակարգ, որն ավտոմատ կերպով հայտնաբերում է մոնիտորինգ պահանջող պատյաններն ու ծառայությունները: (Նշում. թարգմ.Տե՛ս նաև մեր մանրամասն հաշվետվություն Պրոմեթևսի և Կուբերնետեսի միջոցով մոնիտորինգի թեմայի վերաբերյալ): Stackdriver ի վիճակի է վերահսկել Kubernetes-ի կլաստերները և ներառում է Prometheus-ի իր տարբերակը՝ հավելվածների մոնիտորինգի համար:

Google-ի 7 բեռնարկղերի լավագույն փորձը
Kubernetes-ի վահանակ Stackdriver-ում

Պրոմեթևսն ակնկալում է, որ հավելվածը չափումներ կուղարկի դեպի HTTP վերջնակետ: Հասանելի է դրա համար Պրոմեթևսի հաճախորդների գրադարաններ. Նույն ձևաչափն օգտագործվում է այլ գործիքների կողմից, ինչպիսիք են Բաց մարդահամար и Իստիո.

6. Հասանելի դարձրեք հավելվածի առողջական վիճակը

Արտադրության մեջ հավելվածների կառավարմանն օգնում է իր վիճակը ամբողջ համակարգին հաղորդելու կարողությունը: Հավելվածը գործարկվո՞ւմ է: Լա՞վ է։ Պատրա՞ստ եք տրաֆիկ ընդունելու: Ինչպե՞ս է նա իրեն պահում։ Այս խնդրի լուծման ամենատարածված միջոցը առողջական ստուգումներ իրականացնելն է (առողջության ստուգում). Kubernetes-ը ունի երկու տեսակ. աշխուժության և պատրաստականության զոնդեր.

Կենսունակության հետաքննության համար (կենսունակության ստուգումներ) հավելվածը պետք է ունենա HTTP վերջնակետ, որը վերադարձնում է «200 OK» պատասխան, եթե այն գործառական է, և դրա հիմնական կախվածությունները բավարարված են: Պատրաստության հետաքննության համար (սպասարկման պատրաստության ստուգում) հավելվածը պետք է ունենա մեկ այլ HTTP վերջնակետ, որը վերադարձնում է «200 OK» պատասխանը, եթե հավելվածը առողջ վիճակում է, սկզբնավորման քայլերն ավարտված են, և ցանկացած վավեր հարցում սխալ չի առաջացնում: Kubernetes-ը կուղղորդի երթևեկությունը դեպի կոնտեյներ միայն այն դեպքում, եթե հավելվածը պատրաստ է այս ստուգումների համաձայն: Երկու վերջնակետերը կարող են միավորվել, եթե տարբերություն չկա աշխուժության և պատրաստակամության վիճակների միջև:

Այս մասին ավելին կարող եք կարդալ Sandeep Dinesh-ի, Developer Advocate Google-ի համապատասխան հոդվածում.Kubernetes-ի լավագույն պրակտիկա. Առողջական ստուգումների ստեղծում՝ պատրաստվածության և աշխուժության զոնդերով.

7. Զգուշորեն ընտրեք ձեր պատկերի տարբերակը

Հանրային և մասնավոր պատկերների մեծ մասը օգտագործում է պիտակավորման համակարգ, որը նման է նկարագրվածին Բեռնարկղերի կառուցման լավագույն փորձը. Եթե ​​պատկերն օգտագործում է համակարգին մոտ իմաստային տարբերակում, անհրաժեշտ է հաշվի առնել պիտակավորման առանձնահատկությունները։ Օրինակ, պիտակ latest կարող է հաճախակի տեղափոխվել պատկերից պատկեր. հնարավոր չէ վստահել, եթե ձեզ անհրաժեշտ են կանխատեսելի և կրկնվող կառուցումներ և տեղադրումներ:

Դուք կարող եք օգտագործել պիտակը X.Y.Z (դրանք գրեթե միշտ անփոփոխ են), բայց այս դեպքում հետևեք պատկերի բոլոր կարկատներին և թարմացումներին: Եթե ​​ձեր օգտագործած պատկերն ունի պիտակ X.Y, սա լավ տարբերակ է ոսկե միջինի համար։ Ընտրելով այն՝ դուք ավտոմատ կերպով ստանում եք patches և միևնույն ժամանակ ապավինում հավելվածի կայուն տարբերակին։

PS թարգմանչից

Կարդացեք նաև մեր բլոգում.

Source: www.habr.com

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