Kubernetes klasteru projektÄÅ”ana: cik daudz to vajadzÄtu bÅ«t?
PiezÄ«me. tulk.: Å”is materiÄls ir no izglÄ«tojoÅ”a projekta mÄcÄ«ties8s ir atbilde uz populÄru jautÄjumu, projektÄjot uz Kubernetes balstÄ«tu infrastruktÅ«ru. MÄs ceram, ka diezgan detalizÄts katras iespÄjas plusu un mÄ«nusu apraksts palÄ«dzÄs jums izdarÄ«t labÄko izvÄli jÅ«su projektam.
TL; DR: vienu un to paÅ”u darba slodžu kopu var palaist vairÄkos lielos klasteros (katram klasterim bÅ«s liels slodžu skaits) vai daudzÄs mazÄs (ar nelielu slodžu skaitu katrÄ klasterÄ«).
TÄlÄk ir sniegta tabula, kurÄ novÄrtÄti katras pieejas plusi un mÄ«nusi:
Izmantojot Kubernetes kÄ platformu lietojumprogrammu palaiÅ”anai, bieži rodas vairÄki bÅ«tiski jautÄjumi par klasteru iestatÄ«Å”anas sarežģītÄ«bu:
Cik kopu man vajadzÄtu izmantot?
Cik lielas man tÄs padarÄ«t?
Kas jÄiekļauj katrÄ klasterÄ«?
Å ajÄ rakstÄ es mÄÄ£inÄÅ”u atbildÄt uz visiem Å”iem jautÄjumiem, analizÄjot katras pieejas plusus un mÄ«nusus.
JautÄjuma paziÅojums
KÄ programmatÅ«ras izstrÄdÄtÄjs jÅ«s, iespÄjams, izstrÄdÄjat un izmantojat daudzas lietojumprogrammas vienlaikus.
TurklÄt daudzi Å”o lietojumprogrammu gadÄ«jumi, iespÄjams, darbosies dažÄdÄs vidÄs, piemÄram, tÄs var bÅ«t dev, pÄrbaude Šø prod.
RezultÄts ir vesela lietojumprogrammu un vidi matrica:
Lietojumprogrammas un vide
IepriekÅ” minÄtajÄ piemÄrÄ ir attÄlotas 3 lietojumprogrammas un 3 vides, kÄ rezultÄtÄ kopÄ ir 9 iespÄjamÄs opcijas.
Katrs lietojumprogrammas gadÄ«jums ir autonoma izvietoÅ”anas vienÄ«ba, ar kuru var strÄdÄt neatkarÄ«gi no citiem.
LÅ«dzu, Åemiet vÄrÄ, ka lietojumprogrammas gadÄ«jums var sastÄvÄt no daudziem komponenti, piemÄram, priekÅ”gals, aizmugursistÄma, datubÄze utt. Mikropakalpojumu lietojumprogrammas gadÄ«jumÄ instancÄ tiks iekļauti visi mikropakalpojumi.
TÄ rezultÄtÄ Kubernetes lietotÄjiem ir vairÄki jautÄjumi:
Vai visas lietojumprogrammas ir jÄievieto vienÄ klasterÄ«?
Vai ir vÄrts izveidot atseviŔķu klasteru katrai lietojumprogrammas instancei?
Vai varbÅ«t ir jÄizmanto iepriekÅ” minÄto pieeju kombinÄcija?
Visas Ŕīs iespÄjas ir diezgan dzÄ«votspÄjÄ«gas, jo Kubernetes ir elastÄ«ga sistÄma, kas neierobežo lietotÄja iespÄjas.
Å eit ir daži no iespÄjamiem veidiem:
viens liels kopīgs klasteris;
daudzas mazas augsti specializÄtas kopas;
viena klastera uz vienu pieteikumu;
viens klasteris katrÄ vidÄ.
KÄ parÄdÄ«ts zemÄk, pirmÄs divas pieejas atrodas opciju skalas pretÄjos galos.
KopumÄ viens klasteris tiek uzskatÄ«ts par ālielÄkuā par citu, ja tajÄ ir lielÄks mezglu un pÄkstu skaits. PiemÄram, klasteris ar 10 mezgliem un 100 pÄkstiem ir lielÄks nekÄ klasteris ar 1 mezglu un 10 pÄkstiem.
Nu ko, sÄksim!
1. Viens liels kopīgs klasteris
PirmÄ iespÄja ir visas darba slodzes ievietot vienÄ klasterÄ«:
Viens liels klasteris
Å Ä«s pieejas ietvaros klasteris tiek izmantots kÄ universÄls infrastruktÅ«ras platforma ā jÅ«s vienkÄrÅ”i izvietojat visu nepiecieÅ”amo esoÅ”ajÄ Kubernetes klasterÄ«.
VÄrdtelpas Kubernetes ļauj loÄ£iski atdalÄ«t klastera daļas vienu no otras, lai katrai lietojumprogrammas instancei varÄtu bÅ«t sava nosaukumvieta.
Apskatīsim Ŕīs pieejas plusus un mīnusus.
+ Efektīva resursu izmantoŔana
Izmantojot vienu klasteru, jums ir nepiecieÅ”ama tikai viena visu Kubernetes klastera palaiÅ”anai un pÄrvaldÄ«bai nepiecieÅ”amo resursu kopija.
PiemÄram, tas attiecas uz galvenajiem mezgliem. Parasti katrÄ Kubernetes klasterÄ« ir 3 galvenie mezgli, tÄpÄc vienai klasterim to skaits paliks tÄds (salÄ«dzinÄjumam 10 klasteriem bÅ«s nepiecieÅ”ami 30 galvenie mezgli).
IepriekÅ” minÄtais smalkums attiecas arÄ« uz citiem pakalpojumiem, kas darbojas visÄ klasterÄ«, piemÄram, slodzes lÄ«dzsvarotÄjiem, ieejas kontrolleriem, autentifikÄcijas, reÄ£istrÄÅ”anas un uzraudzÄ«bas sistÄmÄm.
VienÄ klasterÄ« visus Å”os pakalpojumus var izmantot vienlaikus visÄm darba slodzÄm (nav nepiecieÅ”ams veidot to kopijas, kÄ tas ir vairÄku klasteru gadÄ«jumÄ).
+ LÄti
IepriekÅ”minÄtÄ rezultÄtÄ mazÄk klasteru parasti ir lÄtÄki, jo nav pieskaitÄmu izmaksu.
Tas jo Ä«paÅ”i attiecas uz galvenajiem mezgliem, kas var maksÄt ievÄrojamu naudas summu neatkarÄ«gi no tÄ, kÄ tie tiek mitinÄti (uz vietas vai mÄkonÄ«).
Ir arÄ« pÄrvaldÄ«ti pakalpojumi, kas iekasÄ fiksÄtu maksu par katra Kubernetes klastera darbÄ«bu (piemÄram, Amazon Elastic Kubernetes Service, EKS).
+ EfektÄ«va administrÄÅ”ana
PÄrvaldÄ«t vienu klasteru ir vieglÄk nekÄ pÄrvaldÄ«t vairÄkus.
Viena klastera gadÄ«jumÄ tas viss bÅ«s jÄdara tikai vienu reizi.
DaudzÄm kopÄm darbÄ«bas bÅ«s jÄatkÄrto daudzas reizes, kas, iespÄjams, prasÄ«s zinÄmu procesu un rÄ«ku automatizÄciju, lai nodroÅ”inÄtu procesa konsekvenci un konsekvenci.
Un tagad daži vÄrdi par mÄ«nusiem.
ā Viens neveiksmes punkts
Atteikuma gadÄ«jumÄ vienÄ«gais klasteris nekavÄjoties pÄrtrauks darboties viss darba slodzes!
Ir daudz veidu, kÄ lietas var noiet greizi:
Kubernetes atjauninÄÅ”ana izraisa negaidÄ«tas blakusparÄdÄ«bas;
viens no klastera komponentiem nav pareizi konfigurÄts;
kļūme pamata infrastruktÅ«rÄ.
Viens Å”Äds incidents var radÄ«t nopietnus bojÄjumus visÄm darba slodzÄm, kas tiek mitinÄtas koplietotÄ klasterÄ«.
ā Nav stingras izolÄcijas
DarboÅ”anÄs koplietotÄ klasterÄ« nozÄ«mÄ, ka lietojumprogrammas koplieto aparatÅ«ru, tÄ«kla iespÄjas un operÄtÄjsistÄmu klastera mezglos.
SavÄ ziÅÄ divi konteineri ar divÄm dažÄdÄm lietojumprogrammÄm, kas darbojas vienÄ mezglÄ, ir kÄ divi procesi, kas darbojas vienÄ un tajÄ paÅ”Ä maŔīnÄ, kurÄ darbojas viens un tas pats OS kodols.
Linux konteineri nodroÅ”ina zinÄmu izolÄciju, taÄu tÄ nav tik spÄcÄ«ga kÄ, piemÄram, virtuÄlÄs maŔīnas. BÅ«tÄ«bÄ process konteinerÄ ir tas pats process, kas darbojas resursdatora operÄtÄjsistÄmÄ.
Tas var bÅ«t droŔības problÄma: Ŕī vienoÅ”anÄs teorÄtiski ļauj nesaistÄ«tÄm lietojumprogrammÄm sazinÄties savÄ starpÄ (tÄ«Å”i vai nejauÅ”i).
TurklÄt visas Kubernetes klastera darba slodzes koplieto dažus klastera mÄroga pakalpojumus, piemÄram, DNS - tas ļauj lietojumprogrammÄm atrast citu klastera lietojumprogrammu pakalpojumus.
Visiem iepriekÅ”minÄtajiem punktiem var bÅ«t atŔķirÄ«ga nozÄ«me atkarÄ«bÄ no lietojumprogrammas droŔības prasÄ«bÄm.
Kubernetes nodroÅ”ina dažÄdus rÄ«kus, lai novÄrstu droŔības problÄmas, piemÄram, PodSecurityPolicies Šø TÄ«kla politikas. TomÄr, lai tos pareizi uzstÄdÄ«tu, ir nepiecieÅ”ama zinÄma pieredze, turklÄt tie nespÄj aizvÄrt pilnÄ«gi visus droŔības caurumus.
Ir svarÄ«gi vienmÄr atcerÄties, ka Kubernetes sÄkotnÄji bija paredzÄts dalÄ«Å”anÄs, nevis priekÅ” izolÄcija un droŔība.
ā Stingras vairÄku Ä«res lÄ«gumu trÅ«kums
Å emot vÄrÄ koplietojamo resursu pÄrpilnÄ«bu Kubernetes klasterÄ«, ir daudz veidu, kÄ dažÄdas lietojumprogrammas var iedarboties uz viena otrai.
PiemÄram, lietojumprogramma var monopolizÄt koplietotu resursu (piemÄram, centrÄlo procesoru vai atmiÅu) un liegt citÄm lietojumprogrammÄm, kas darbojas tajÄ paÅ”Ä mezglÄ, piekļuvi tam.
Viena klastera gadÄ«jumÄ jums ir jÄatver piekļuve tai daudziem cilvÄkiem. Un jo lielÄks to skaits, jo lielÄks risks, ka viÅi kaut ko āsalauzÄ«sā.
TomÄr reÄlajÄ dzÄ«vÄ problÄmas var sÄkties daudz agrÄk - piemÄram, tikai ar 500 mezgli.
Fakts ir tÄds, ka lielas kopas rada lielu slodzi Kubernetes vadÄ«bas slÄnim. Citiem vÄrdiem sakot, lai nodroÅ”inÄtu klastera efektÄ«vu darbÄ«bu, ir nepiecieÅ”ama rÅ«pÄ«ga regulÄÅ”ana.
Bet padomÄsim par pretÄjo pieeju: daudz mazu kopu.
2. Daudzas mazas, specializÄtas kopas
Izmantojot Ŕo pieeju, katram izvietojamajam elementam izmantojat atseviŔķu kopu.
Daudz mazu kopu
Å Ä« panta vajadzÄ«bÄm, saskaÅÄ ar izvietojams elements attiecas uz lietojumprogrammas gadÄ«jumu, piemÄram, atseviŔķas lietojumprogrammas izstrÄdÄtÄju versiju.
Å Ä« stratÄÄ£ija izmanto Kubernetes kÄ specializÄtu izpildlaiks atseviŔķiem lietojumprogrammu gadÄ«jumiem.
Apskatīsim Ŕīs pieejas plusus un mīnusus.
+ Ierobežots āsprÄdziena rÄdiussā
Ja klasteris neizdodas, negatÄ«vÄs sekas attiecas tikai uz tÄm darba slodzÄm, kas tika izvietotas Å”ajÄ klasterÄ«. Visas pÄrÄjÄs darba slodzes paliek neskartas.
+ IzolÄcija
AtseviŔķos klasteros mitinÄtÄs darba slodzes neizmanto tÄdus resursus kÄ procesors, atmiÅa, operÄtÄjsistÄma, tÄ«kls vai citi pakalpojumi.
RezultÄts ir cieÅ”a izolÄcija starp nesaistÄ«tÄm lietojumprogrammÄm, kas var bÅ«t noderÄ«ga to droŔībai.
+ Neliels lietotÄju skaits
Å emot vÄrÄ, ka katrÄ klasterÄ« ir tikai ierobežots darba slodžu kopums, tiek samazinÄts to lietotÄju skaits, kuriem ir piekļuve tai.
Jo mazÄkam cilvÄku skaitam ir piekļuve klasterim, jo āāmazÄks ir risks, ka kaut kas āsaplÄ«sÄ«sā.
Apskatīsim mīnusus.
ā NeefektÄ«va resursu izmantoÅ”ana
KÄ minÄts iepriekÅ”, katram Kubernetes klasterim ir nepiecieÅ”ams noteikts pÄrvaldÄ«bas resursu kopums: galvenie mezgli, vadÄ«bas slÄÅa komponenti, uzraudzÄ«bas un reÄ£istrÄÅ”anas risinÄjumi.
Liela skaita mazu klasteru gadÄ«jumÄ vadÄ«bai ir jÄatvÄl lielÄka resursu daļa.
ā DÄrgi
NeefektÄ«va resursu izmantoÅ”ana automÄtiski rada lielas izmaksas.
PiemÄram, 30 galveno mezglu uzturÄÅ”ana trÄ«s vietÄ ar vienÄdu skaitļoÅ”anas jaudu noteikti ietekmÄs izmaksas.
ā GrÅ«tÄ«bas administrÄÅ”anÄ
VairÄku Kubernetes klasteru pÄrvaldÄ«ba ir daudz grÅ«tÄka nekÄ tikai viena.
PiemÄram, jums bÅ«s jÄkonfigurÄ katra klastera autentifikÄcija un autorizÄcija. VairÄkas reizes bÅ«s jÄatjaunina arÄ« Kubernetes versija.
VisticamÄk, jums bÅ«s jÄizmanto automatizÄcija, lai padarÄ«tu visus Å”os uzdevumus efektÄ«vÄkus.
Tagad apskatÄ«sim mazÄk ekstrÄmus scenÄrijus.
3. Viena klastera katrai lietojumprogrammai
Izmantojot Å”o pieeju, jÅ«s izveidojat atseviŔķu kopu visiem konkrÄtas lietojumprogrammas gadÄ«jumiem.
Klasteris katrai lietojumprogrammai
Å o ceļu var uzskatÄ«t par principa "vispÄrinÄjumu"atseviŔķs klasteris katrai komandaiā, jo parasti inženieru komanda izstrÄdÄ vienu vai vairÄkas lietojumprogrammas.
Apskatīsim Ŕīs pieejas plusus un mīnusus.
+ Klasteru var pielÄgot lietojumprogrammai
Ja lietojumprogrammai ir Ä«paÅ”as vajadzÄ«bas, tÄs var ieviest klasterÄ«, neietekmÄjot citas kopas.
Å Ädas vajadzÄ«bas var ietvert GPU darbiniekus, noteiktus CNI spraudÅus, pakalpojumu tÄ«klu vai kÄdu citu pakalpojumu.
Katru klasteru var pielÄgot tajÄ esoÅ”ajai lietojumprogrammai, lai tajÄ bÅ«tu tikai tas, kas ir nepiecieÅ”ams.
ā DažÄdas vides vienÄ klasterÄ«
Å Ä«s pieejas trÅ«kums ir tÄds, ka lietojumprogrammu gadÄ«jumi no dažÄdÄm vidÄm lÄ«dzÄspastÄv vienÄ klasterÄ«.
PiemÄram, lietojumprogrammas prod versija darbojas tajÄ paÅ”Ä klasterÄ«, kur izstrÄdÄtÄja versija. Tas nozÄ«mÄ arÄ« to, ka izstrÄdÄtÄji darbojas tajÄ paÅ”Ä klasterÄ«, kurÄ tiek darbinÄta lietojumprogrammas ražoÅ”anas versija.
Ja izstrÄdÄtÄju darbÄ«bas vai izstrÄdÄtÄja versijas kļūmju dÄļ klasterÄ« rodas kļūme, tad potenciÄli var ciest arÄ« prod versija - milzÄ«gs Ŕīs pieejas trÅ«kums.
Un visbeidzot, pÄdÄjais scenÄrijs mÅ«su sarakstÄ.
4. Viens klasteris katrÄ vidÄ
Å is scenÄrijs paredz atseviŔķas kopas pieŔķirÅ”anu katrai videi:
Viens klasteris katrÄ vidÄ
PiemÄram, jums var bÅ«t kopas dev, pÄrbaude Šø prod, kurÄ jÅ«s darbinÄsit visus konkrÄtai videi veltÄ«tas lietojumprogrammas gadÄ«jumus.
Šeit ir Ŕīs pieejas plusi un mīnusi.
+ Prod vides izolÄcija
Izmantojot Å”o pieeju, visas vides ir izolÄtas viena no otras. TomÄr praksÄ tas ir Ä«paÅ”i svarÄ«gi ražoÅ”anas vidÄ.
Lietojumprogrammas ražoÅ”anas versijas tagad ir neatkarÄ«gas no tÄ, kas notiek citos klasteros un vidÄs.
TÄdÄ veidÄ, ja izstrÄdÄtÄju klasterÄ« pÄkÅ”Åi rodas problÄma, lietojumprogrammu prod versijas turpinÄs darboties tÄ, it kÄ nekas nebÅ«tu noticis.
+ Klasteru var pielÄgot videi
Katru klasteru var pielÄgot savai videi. PiemÄram, varat:
instalÄjiet rÄ«kus izstrÄdei un atkļūdoÅ”anai izstrÄdÄtÄju klasterÄ«;
instalÄjiet testu ietvarus un rÄ«kus klasterÄ« pÄrbaude;
klasterÄ« izmantojiet jaudÄ«gÄku aparatÅ«ru un tÄ«kla kanÄlus prod.
Tas ļauj palielinÄt gan lietojumprogrammu izstrÄdes, gan darbÄ«bas efektivitÄti.
+ Piekļuves ierobežoŔana ražoŔanas klasterim
NepiecieÅ”amÄ«ba strÄdÄt tieÅ”i ar produktu kopu rodas reti, tÄpÄc jÅ«s varat ievÄrojami ierobežot to cilvÄku loku, kuriem tas ir pieejams.
Varat iet vÄl tÄlÄk un pilnÄ«bÄ liegt cilvÄkiem piekļuvi Å”im klasterim un veikt visas izvietoÅ”anas, izmantojot automatizÄtu CI/CD rÄ«ku. Å Äda pieeja samazinÄs cilvÄku kļūdu risku tieÅ”i tur, kur tÄ ir visatbilstoÅ”ÄkÄ.
Un tagad daži vÄrdi par mÄ«nusiem.
ā Nav izolÄcijas starp lietojumiem
Galvenais pieejas trÅ«kums ir aparatÅ«ras un resursu izolÄcijas trÅ«kums starp lietojumprogrammÄm.
NesaistÄ«tÄs lietojumprogrammas koplieto klastera resursus: sistÄmas kodolu, procesoru, atmiÅu un dažus citus pakalpojumus.
Ja lietojumprogrammai ir Ä«paÅ”as prasÄ«bas, tÄs ir jÄizpilda visÄs kopÄs.
PiemÄram, ja lietojumprogrammai ir nepiecieÅ”ams GPU, katrÄ klasterÄ« ir jÄbÅ«t vismaz vienam darbiniekam ar GPU (pat ja to izmanto tikai Ŕī lietojumprogramma).
RezultÄtÄ mÄs riskÄjam ar lielÄkÄm izmaksÄm un neefektÄ«vu resursu izmantoÅ”anu.
SecinÄjums
Ja jums ir noteikts lietojumprogrammu komplekts, tÄs var ievietot vairÄkos lielos klasteros vai daudzos mazos.
RakstÄ aplÅ«koti dažÄdu pieeju plusi un mÄ«nusi, sÄkot no viena globÄla klastera lÄ«dz vairÄkiem maziem un ļoti specializÄtiem klasteriem:
viena liela vispÄrÄjÄ kopa;
daudzas mazas augsti specializÄtas kopas;
viena klastera uz vienu pieteikumu;
viens klasteris katrÄ vidÄ.
TÄtad, kÄda pieeja jums bÅ«tu jÄizmanto?
KÄ vienmÄr, atbilde ir atkarÄ«ga no lietoÅ”anas gadÄ«juma: jums ir jÄizsver dažÄdu pieeju plusi un mÄ«nusi un jÄizvÄlas optimÄlÄkais variants.
TomÄr izvÄle neaprobežojas tikai ar iepriekÅ” minÄtajiem piemÄriem ā varat izmantot jebkuru to kombinÄciju!
PiemÄram, katrai komandai varat organizÄt pÄris klasterus: izstrÄdes klasteri (kurÄ bÅ«s vides dev Šø pÄrbaude) un klasteris priekÅ” ražoÅ”ana (kur atradÄ«sies ražoÅ”anas vide).
Pamatojoties uz Å”ajÄ rakstÄ sniegto informÄciju, varat atbilstoÅ”i optimizÄt plusus un mÄ«nusus konkrÄtam scenÄrijam. Veiksmi!