Երկու տեխնոլոգիաների համեմատություն՝ դադարեցնելու բանավեճն այն մասին, թե որն է ավելի լավը:
Ops, ես դա նորից արեցի: Ես օգտագործեցի այս գրավիչ վերնագիրը, որպեսզի անպայման գրավեմ ձեր ուշադրությունը, կներեք դրա համար: Ես ձեր ուշադրության կարիքն ունեմ՝ մտորելու համար այս մեծ թեման ներկայացնելու համար: Ի՞նչ եք կարծում, Kubernetes-ը DevOps աշխարհում վերջին գովազդային լավագույն տեխնոլոգիան է: Դե, այսօր, ինչպես երբեք, տեխնոլոգիաները անցողիկ են, և դուք պետք է պատրաստ լինեք փոփոխությունների: Ես սիրում եմ Kubernetes-ը և ուրախ եմ կրկին խոսել դրա մասին: Դա DevOps սցենարի ամենաթեժ բառն է: Այս հոդվածը կարդալով՝ դուք կգտնեք մեծ հարցի պատասխանը.
Դա ենթակառուցվածքների կառավարման վերջնական լուծումն է, թե՞ մենք պետք է խաղադրույք կատարենք Անսերվերի վրա, որն ավելի երկար է մղում մեր սրտերը գործառնական թիմից: Հիշեք, որ NoOps-ը գալիս է:
Կարծում եմ, որ փոփոխությունները սովորական են տեխնոլոգիայի մեջ։ Մեր նախնիները ճանապարհորդում են վագոններով, իսկ մենք՝ ինքնաթիռներով։ Դա առաջընթացի մի մասն է:
Վերջին տարիներին փոքր հեղափոխություն եղավ, որը վիրտուալ մեքենաներից ավելի ու ավելի շատ հավելվածներ բերեց կոնտեյներներ՝ հիմնականում Kubernetes-ի միջոցով տեղակայելու հնարավորության շնորհիվ:
Մինչ այս հեղափոխությունը տեղի է ունենում, կար մի փոքրիկ հզոր բառ. Այն «Անսերվեր» է: Մարդկանց մեծամասնությունը դա համարում է չարիք, մյուսները նման են Prince Charming-ին, որը կարող է փրկել ծրագրավորողներին շահագործման մղձավանջից: Դե, եկեք տեսնենք, թե որոնք են խնդիրները և հնարավորությունները, և լռեք, հորիզոնում ոչ մի սպառնալիք:
Ո՞րն է տարբերությունը Kubernetes-ի և առանց սերվերի միջև:
Անսերվերըամպային մոդել է, որտեղ դուք ցանկանում եք զերծ մնալ սերվերից և ենթակառուցվածքից: Նպատակը ֆիքսված ծախսերից խուսափելն է, շուկա դուրս գալու ժամանակը և թիմերի միջև շփումը (շահագործում և մշակում) նվազեցնելը: Բետոնի մեջ, պատկերացրեք, որ կա մի շերտ, որը կարող է կլանել ձեր կոդը, և այն պատասխանատու է կատարման համար: Առանց սերվերի նման բան է:
Դուք տրամադրում եք կոդը, վաճառողը տրամադրում է մնացածը:
Ամենատարածված առանց սերվերի իրականացումներն ունեն քաղաքացիություն չունեցող կոնտեյներներ SDK-ով, որը թույլ է տալիս ձեր կոդը ինտեգրվել համակարգին և հաշիվ-ապրանքագիր ներկայացնել ձեզ՝ հիմնվելով ռեսուրսների օգտագործման վրա: Շատ դեպքերում մենք կարող ենք ամպի վրա վերբեռնել մեր գործառույթը («FaaS», Գործում է որպես ծառայություն)և այդ գործառույթն ակտիվանում է HTTP զանգերի միջոցով: Ամպային խոշոր մատակարարներն առաջարկում են նմանատիպ ամպային փորձ.
- Amazon՝ AWS Lambda
- Microsoft Azure. Azure գործառույթներ
- Google Cloud. Cloud Functions
Իհարկե, սերվերները չեն անհետացել: Դուք դրանք չեք տեսնում, քանի որ դրանք թաքցված են վաճառողի կողմից, որն օգտագործում է դրանք ծառայությունը տրամադրելու համար: Սերվերները դեռ կենդանի են, բայց դուք չեք տեսնում որևէ ram, CPU կամ սկավառակի տարածք: Դուք պարզապես կենտրոնանում եք կոդի վրա: Դուք կարող եք ձեր ջանքերը ներդնել այնտեղ, որտեղ դա իսկապես անհրաժեշտ է:
Իսկ ի՞նչ էKubernetes-ը: Մտածեք Kubernetes-ի մասին որպես շրջանակ՝ բաշխված համակարգեր գործարկելու համար, որոնք նայում են պարզ դոկերի պատկերներից: Այն հոգում է ձեր մասշտաբի պահանջները, տեղակայումը և բեռի հավասարակշռումը: Այդ բոլոր նյութերը կարելի է հեշտությամբ նկարագրել՝ օգտագործելով պարզ YAML ֆայլեր և նորից օգտագործել՝ ստեղծելով վերարտադրվող միջավայր՝ ըստ դիզայնի:
Kubernetes-ը ենթակառուցվածք է ձեր ձեռքին:
Պարզապես որոշ կազմաձևման ֆայլեր փոխելով, դուք լիովին վերահսկում եք կոնտեյների օրինակները (ծառայություններ և պատիճներ), ցանցային և տեղակայում: Kubernetes-ը հոգում է ձեր մասշտաբի պահանջները, ձախողումը, տեղակայման օրինաչափությունները և այլն: Kubernetes-ում նորեկների համար ես գրել եմ լավ ներածական հոդված Kubernetes-ի մասին:
Kubernetes-ը, ինչպես առանց սերվերի, թույլ է տալիս բարդ ճարտարապետություն՝ sysadmin-ից ցածր ջանքերով: Նման տեխնոլոգիան փոխակերպում է դասական տեղակայումը, որը մարդկանց ինտենսիվ է, խելացի և արագ: Բարև տղաներ, NoOps-ը գալիս է:
Որո՞նք են Kubernetes-ի առավելությունները:
Kubernetes-ի օգտագործման մեծ առավելությունն այն է, որ դուք կարող եք կարգավորել ձեր կլաստերը, ինչպես դա սովորական սերվերային ֆերմա էր, բայց առանց ֆիզիկապես կառավարելու ծախսերի: Տրամաբանորեն, դուք կարող եք վերստեղծել զուգահեռություն սերվերների և ձեր կլաստերի բաղադրիչների միջև: Դուք ունեք պատյաններ և ծառայություններ, որոնք կարող եք ակնթարթորեն ստեղծել, կարծես դա վիրտուալ մեքենա է: Դուք ունեք ցանց, պահեստավորում և այլն: Սա թարգմանվում է որպես կլաստերի ցածր մակարդակի հասանելիությամբ բոլոր առանձին բաղադրիչների ավելի խորը վերահսկողություն:
Այսպիսով, իմ առավելությունների ցանկը, օգտագործելով Kubernetes-ը առանց սերվերի հարթակների փոխարեն.
- մեծ համատեղելիություն անցյալի հետ: Եթե դուք բեռնարկղերի տեղափոխման մեջ եք, հեշտ է, եթե ոչ, դա պարզապես ձեր հավելվածի բաղադրիչների կոնտեյներավորման արժեքն է:
- մեծ վերահսկողություն տեղի ունեցածի վերաբերյալ
- ավելի քիչ վաճառողի կողպում: Kubernetes-ը Kubernetes է, իսկ Docker կոնտեյները պարզապես Docker կոնտեյներ է: Թղթի վրա դուք կարող եք տեղափոխել ենթակառուցվածքը մեկ սեղմումով
- յուրաքանչյուր բաղադրիչը լավ կարգավորելու ունակություն
- կարող է աշխատել նաև on-prem (ծրագրավորողների կամ ծայրահեղ դեպքերի համար, կամ եթե դուք պարզապես խելագար եք)
- Ծախսերի կանխատեսում. Դուք վճարում եք ռեսուրսների համար կլաստերին, որոնք կարելի է ավելի լավ կանխատեսել, քան առանց սերվերի մոտեցման դեպքում:
Որո՞նք են Serverless-ի առավելությունները:
Kubernetes-ը մեծ առաջընթաց է sysadmin-ի ջանքերը նվազեցնելու ուղղությամբ, բայց չի հասցվել զրոյի: Սերվերազուրկ մոտեցումը, հիմնականում, խուսափում է ցանկացած sysadmin բաղադրիչից, քանի որ միակ մասը, որի մասին պետք է հոգ տանել, աղբյուրի կոդը է: Դա նման է լեգո աղյուսի հավաքածուն և դրանք միասին հավաքելուն: Յուրաքանչյուր աղյուս աշխատում է առանձին։ Պարզապես պետք է թույլ տալ, որ նրանք ճիշտ շփվեն: Հենց դա. FaaS-ի լուծումները կարող են թվալ չափազանց դժվար, որպեսզի դրանք տեղադրվեն՝ պայմանավորված նրանց մտածելակերպի փոփոխությամբ: Այս դեպքում, դուք կարող եք մոտենալ որոշ ավելի մեղմ առանց սերվերի լուծման, որն ուղղակիորեն կտեղադրի ձեր հավելվածը՝ առանց փոփոխությունների: Նման լուծման լավ օրինակ է Heroku-ն, որը վերացվում է սերվերից և ավանդական DevOps-ից՝ տրամադրելով NoOps Serverless փորձ, որը կարող է խթանել ձեր հավելվածի զարգացումը` նվազեցնելով հոսթինգի բոլոր շփումները (դուք նաև ունեք անվճար մակարդակ):
Արդյո՞ք առանց սերվերի ավարտն է Kubernetes-ը:
Նույնիսկ առանց սերվերի նորություն է թվում մեր օրերում, AWS Lambda-ի առաջին թողարկումը 2014-ին է: Այդ տարի Docker-ը առաջին քայլերն էր անում (առաջին պաշտոնական թողարկումը եղել է 2013-ին, և ես վստահ չեմ, թե երբ էր այն պատրաստ արտադրության սցենարների համար: գործարկման ժամանակը): Kubernetes-ը ծնվել է 2014 թվականին: Այսպիսով, մենք կարող ենք ասել, որ առանց սերվերի հասանելի է եղել կոնտեյների նույն ժամանակից՝ ավելի քիչ կամ ավելի: Այս տեսանկյունից, առանց սերվերը չի գալիս Kubernetes-ից հետո, և մենք չենք կարող առանց սերվերի համարել որպես կոնտեյներների փոխարինում: Դրանք ընդամենը երկու տարբեր մոտեցումներ են վեբ հավելվածում հոսթինգի մասի ներդրման համար: Միգուցե որոշ դեպքերում դուք կարող եք նախընտրել մեկը կամ մյուսը: Ե՞րբ մեկը և երբ մյուսը: Ճիշտ պատասխանը, ինչպես մեր լայքերի շատ հարցերի համար, «դա կախված է»: Խորհրդատուի և լավ խորհրդատուի միջև տարբերությունը շատ փոխլրացնող լուծումներ իմանալն է և սցենարի հիման վրա լավագույնը գտնելը:
Ինչ տանել տուն
Մենք արդեն քննարկել ենք երկու լուծման դրական կողմերը, այնուհետև կարող ենք փակել՝ ասելով, որ պարզապես իմանալով տեխնոլոգիաները՝ կարող եք գտնել լավագույն լուծումը ձեր սցենարի համար: Օգտագործելով մեծ ամպային ծառայություն, ինչպիսին է Google Cloud-ը կամ այլոց, դուք պատրաստ կլինեք իրականացնել ցանկացած լուծում: Պարզապես ժամանակն է փորձարկել այն գործիքները, որոնք նա տրամադրում է և հասկանալ դրական/դեմ:
Այս հոդվածը օգտակար համարեցի՞ք: Հետևեք ինձ (Դանիել Ֆոնտանի) Medium-ում և դիտեք DevOps-ի իմ ամենահայտնի հոդվածները ստորև: Մի մոռացեք 👏 այս հոդվածը կիսելու համար: