Veidojot Kubernetes klasteru, var rasties jautÄjumi: cik darbinieku mezglus konfigurÄt un kÄda veida? Kas ir labÄks lokÄlam klasterim: iegÄdÄjieties vairÄkus jaudÄ«gus serverus vai izmantojiet duci vecu iekÄrtu savÄ datu centrÄ? Vai labÄk mÄkonÄ« uzÅemt astoÅus viena kodola vai divus Äetrkodolu gadÄ«jumus?
Atbildes uz Å”iem jautÄjumiem ir atrodamas rakstÄ.
Klasteru kapacitÄte
KopumÄ Kubernetes kopu var uzskatÄ«t par lielu "supermezglu". TÄ kopÄjÄ skaitļoÅ”anas jauda ir visu to veidojoÅ”o mezglu jaudu summa.
Ir vairÄki veidi, kÄ sasniegt vÄlamo klastera jaudas mÄrÄ·i. PiemÄram, mums ir nepiecieÅ”ams klasteris ar kopÄjo jaudu 8 procesora kodoliem un 32 GB RAM, jo lietojumprogrammu komplektam ir nepiecieÅ”ams tik daudz resursu. PÄc tam varat instalÄt divus mezglus ar 16 GB atmiÅu vai Äetrus mezglus ar 8 GB atmiÅu, divus Äetrkodolu procesorus vai Äetrus divkodolu procesorus.
Å eit ir tikai divi iespÄjamie veidi, kÄ izveidot klasteru.
Abas opcijas rada kopu ar vienÄdu jaudu, bet apakÅ”ÄjÄ konfigurÄcijÄ ir Äetri mazÄki mezgli, bet augÅ”ÄjÄ konfigurÄcijÄ ir divi lielÄki mezgli.
KurÅ” variants ir labÄks?
Lai atbildÄtu uz Å”o jautÄjumu, apskatÄ«sim abu iespÄju priekÅ”rocÄ«bas. MÄs tos esam apkopojuÅ”i tabulÄ.
VairÄki lieli mezgli
Daudzi mazi mezgli
VienkÄrÅ”Äka klasteru pÄrvaldÄ«ba (ja tÄ ir uz vietas)
VienmÄrÄ«ga automÄtiskÄ mÄrogoÅ”ana
LÄtÄk (ja uz vietas)
Cena nedaudz atŔķiras (mÄkonÄ«)
Var palaist resursietilpīgas lietojumprogrammas
Pilna replikÄcija
Resursi tiek izmantoti efektÄ«vÄk (mazÄk sistÄmas dÄmonu pieskaitÄmÄs izmaksas
AugstÄka klasteru kļūdu tolerance
LÅ«dzu, Åemiet vÄrÄ, ka mÄs runÄjam tikai par darbinieku mezgliem. Galveno mezglu skaita un lieluma izvÄle ir pavisam cita tÄma.
TÄtad, apspriedÄ«sim katru punktu no tabulas sÄ«kÄk.
PirmÄ iespÄja: vairÄki lieli mezgli
EkstrÄmÄkÄ iespÄja ir viens darbinieka mezgls visai klastera jaudai. IepriekÅ” minÄtajÄ piemÄrÄ tas bÅ«tu viens darbinieka mezgls ar 16 CPU kodoliem un 16 GB RAM.
Plusi
Plus Nr. 1. VieglÄka vadÄ«ba
Ir vieglÄk pÄrvaldÄ«t dažas maŔīnas nekÄ visu autoparku. AtjauninÄjumu un labojumu ievieÅ”ana ir ÄtrÄka, un to ir vieglÄk sinhronizÄt. ArÄ« neveiksmju skaits absolÅ«tajos skaitļos ir mazÄks.
LÅ«dzu, Åemiet vÄrÄ, ka viss iepriekÅ” minÄtais attiecas uz jÅ«su aparatÅ«ru, serveriem, nevis mÄkoÅa gadÄ«jumiem.
MÄkonÄ« situÄcija ir atŔķirÄ«ga. Tur pÄrvaldÄ«bu veic mÄkoÅpakalpojumu sniedzÄjs. TÄdÄjÄdi desmit mezglu pÄrvaldÄ«ba mÄkonÄ« daudz neatŔķiras no viena mezgla pÄrvaldÄ«bas.
Satiksmes marÅ”rutÄÅ”ana un slodzes sadalÄ«jums starp podiem mÄkonÄ«
Pro #2: mazÄka maksa par mezglu
JaudÄ«gs auto ir dÄrgÄks, taÄu cenu pieaugums ne vienmÄr ir lineÄrs. Citiem vÄrdiem sakot, viens desmit kodolu serveris ar 10 GB atmiÅu parasti ir lÄtÄks nekÄ desmit viena kodola serveri ar tÄdu paÅ”u atmiÅas apjomu.
Bet Åemiet vÄrÄ, ka Å”is noteikums parasti nedarbojas mÄkoÅpakalpojumos. Visu lielÄko mÄkoÅdatoÅ”anas pakalpojumu sniedzÄju paÅ”reizÄjÄs cenu noteikÅ”anas shÄmÄs cenas pieaug lineÄri ar jaudu.
TÄdÄjÄdi mÄkonÄ« jÅ«s parasti nevarat ietaupÄ«t uz jaudÄ«gÄkiem serveriem.
Pro #3: varat palaist resursietilpīgas lietojumprogrammas
DažÄm lietojumprogrammÄm ir nepiecieÅ”ami jaudÄ«gi serveri klasterÄ«. PiemÄram, ja maŔīnmÄcÄ«Å”anÄs sistÄmai ir nepiecieÅ”ama 8 GB atmiÅa, jÅ«s nevarÄsiet to darbinÄt 1 GB mezglos, bet tikai ar vismaz vienu lielu darbinieku mezglu.
MÄ«nusi
TrÅ«kums Nr.1. Daudz pÄkstis katrÄ mezglÄ
Ja viens un tas pats uzdevums tiek veikts mazÄkam mezglam, tad katrÄ no tiem dabiski bÅ«s vairÄk pÄkstu.
TÄ varÄtu bÅ«t problÄma.
Iemesls ir tÄds, ka katrs modulis rada papildu izmaksas konteinera izpildlaikam (piemÄram, Docker), kÄ arÄ« kubelet un cAdvisor.
PiemÄram, kubelets regulÄri pÄrbauda visus mezglÄ esoÅ”os konteinerus, lai noskaidrotu to izdzÄ«voÅ”anu ā jo vairÄk konteineru, jo vairÄk darba ir jÄveic kubelet.
CAdvisor apkopo resursu izmantoÅ”anas statistiku par visiem konteineriem mezglÄ, un kubelet regulÄri vaicÄ Å”o informÄciju un nodroÅ”ina to, izmantojot API. Atkal vairÄk konteineru nozÄ«mÄ vairÄk darba gan cAdvisor, gan kubelet.
Ja moduļu skaits palielinÄs, tas var palÄninÄt sistÄmas darbÄ«bu un pat mazinÄt tÄs uzticamÄ«bu.
Kubernetes repozitorijÄ daži
Å Ä« iemesla dÄļ Kubernetes
TrÅ«kums Nr. 2. ReplikÄcijas ierobežojums
PÄrÄk maz mezglu ierobežo lietojumprogrammas replikÄcijas efektivitÄti. PiemÄram, ja jums ir augstas pieejamÄ«bas lietojumprogramma ar piecÄm replikÄm, bet tikai diviem mezgliem, lietojumprogrammas efektÄ«vÄ replikÄcijas pakÄpe tiek samazinÄta lÄ«dz diviem.
Piecas kopijas var sadalÄ«t tikai pa diviem mezgliem, un, ja viens no tiem neizdodas, tas vienlaikus noÅems vairÄkas kopijas.
Ja jums ir pieci vai vairÄk mezgli, katra replika darbosies atseviÅ”Ä·Ä mezglÄ, un viena mezgla kļūme noÅems ne vairÄk kÄ vienu repliku.
TÄdÄjÄdi augstÄm pieejamÄ«bas prasÄ«bÄm var bÅ«t nepiecieÅ”ams noteikts minimÄlais mezglu skaits klasterÄ«.
TrÅ«kums Nr.3. SliktÄkas neveiksmes sekas
Ar nelielu mezglu skaitu katrai kļūmei ir nopietnÄkas sekas. PiemÄram, ja jums ir tikai divi mezgli un viens no tiem neizdodas, puse no jÅ«su moduļiem nekavÄjoties pazÅ«d.
Protams, Kubernetes migrÄs darba slodzi no neveiksmÄ«gÄ mezgla uz citiem. Bet, ja to ir maz, tad var nepietikt brÄ«vas jaudas. RezultÄtÄ dažas jÅ«su lietojumprogrammas nebÅ«s pieejamas, lÄ«dz parÄdÄ«sit neveiksmÄ«go mezglu.
TÄdÄjÄdi, jo vairÄk mezglu, jo mazÄka ir aparatÅ«ras kļūmju ietekme.
4. trÅ«kums: vairÄk automÄtiskÄs mÄrogoÅ”anas darbÄ«bu
Kubernetes ir klasteru automÄtiskÄs mÄrogoÅ”anas sistÄma mÄkoÅa infrastruktÅ«rai, kas ļauj automÄtiski pievienot vai noÅemt mezglus atkarÄ«bÄ no jÅ«su paÅ”reizÄjÄm vajadzÄ«bÄm. Ar lielÄkiem mezgliem automÄtiskÄ mÄrogoÅ”ana kļūst pÄkÅ”ÅÄka un sarežģītÄka. PiemÄram, divos mezglos, pievienojot papildu mezglu, klastera jauda tiks nekavÄjoties palielinÄta par 50%. Un jums bÅ«s jÄmaksÄ par Å”iem resursiem, pat ja tie jums nav vajadzÄ«gi.
TÄdÄjÄdi, ja plÄnojat izmantot automÄtisko klasteru mÄrogoÅ”anu, jo mazÄki mezgli, jo elastÄ«gÄku un izmaksu ziÅÄ efektÄ«vÄku mÄrogoÅ”anu iegÅ«sit.
Tagad apskatīsim daudzu mazu mezglu priekŔrocības un trūkumus.
OtrÄ iespÄja: daudzi mazi mezgli
Å Ä«s pieejas priekÅ”rocÄ«bas bÅ«tÄ«bÄ izriet no pretÄjÄs iespÄjas trÅ«kumiem ar vairÄkiem lieliem mezgliem.
Plusi
Pro #1: mazÄka kļūmes ietekme
Jo vairÄk mezglu, jo mazÄk pÄkstu katrÄ mezglÄ. PiemÄram, ja jums ir simts moduļu uz desmit mezgliem, tad katrÄ mezglÄ bÅ«s vidÄji desmit moduļi.
TÄdÄ veidÄ, ja kÄds no mezgliem neizdodas, jÅ«s zaudÄjat tikai 10% no darba slodzes. IespÄjams, ka tiks ietekmÄts tikai neliels skaits kopiju un visa lietojumprogramma darbosies.
TurklÄt atlikuÅ”ajiem mezgliem, visticamÄk, bÅ«s pietiekami daudz brÄ«vu resursu, lai apstrÄdÄtu neveiksmÄ«gÄ mezgla darba slodzi, tÄpÄc Kubernetes var brÄ«vi pÄrplÄnot podziÅus, un jÅ«su lietojumprogrammas salÄ«dzinoÅ”i Ätri atgriezÄ«sies funkcionÄlÄ stÄvoklÄ«.
Pro #2: laba replikÄcija
Ja mezglu ir pietiekami daudz, Kubernetes plÄnotÄjs var pieŔķirt dažÄdus mezglus visÄm replikÄm. TÄdÄ veidÄ, ja mezgls neizdodas, tiks ietekmÄta tikai viena kopija un lietojumprogramma paliks pieejama.
MÄ«nusi
TrÅ«kums Nr.1. GrÅ«ti vadÄms
Lielu skaitu mezglu ir grÅ«tÄk pÄrvaldÄ«t. PiemÄram, katram Kubernetes mezglam ir jÄsazinÄs ar visiem pÄrÄjiem, tas ir, savienojumu skaits pieaug kvadrÄtiski, un visi Å”ie savienojumi ir jÄseko.
Kubernetes Controller Manager mezglu kontrolleris regulÄri iziet cauri visiem klastera mezgliem, lai pÄrbaudÄ«tu stÄvokli ā jo vairÄk mezglu, jo lielÄka ir kontrollera slodze.
Pieaug arÄ« etcd datubÄzes slodze - katrs kubelet un kube-proxy izsauc
KopumÄ katrs darbinieka mezgls uzliek papildu slodzi galveno mezglu sistÄmas komponentiem.
Kubernetes oficiÄli atbalsta kopas ar
Lai pÄrvaldÄ«tu lielu skaitu darbinieku mezglu, jums vajadzÄtu izvÄlÄties jaudÄ«gÄkus galvenos mezglus. PiemÄram, kube-up
Å o specifisko problÄmu risinÄÅ”anai ir Ä«paÅ”as izstrÄdes, piemÄram,
TrÅ«kums #2: lielÄkas pieskaitÄmÄs izmaksas.
KatrÄ darbinieka mezglÄ Kubernetes palaiž sistÄmas dÄmonu kopu ā tie ietver konteinera izpildlaiku (piemÄram, Docker), kube starpniekserveri un kubelet, tostarp cAdvisor. KopÄ viÅi patÄrÄ noteiktu fiksÄtu resursu daudzumu.
Ja jums ir daudz mazu mezglu, Å”o pieskaitÄmo izdevumu Ä«patsvars katrÄ mezglÄ ir lielÄks. PiemÄram, iedomÄjieties, ka visi sistÄmas dÄmoni vienÄ mezglÄ kopÄ izmanto 0,1 CPU kodolu un 0,1 GB atmiÅu. Ja jums ir viens desmit kodolu mezgls ar 10 GB atmiÅu, dÄmoni patÄrÄ 1% no klastera jaudas. No otras puses, desmit viena kodola mezglos ar 1 GB atmiÅu dÄmoni aizÅems 10% no klastera ietilpÄ«bas.
TÄdÄjÄdi, jo mazÄk mezglu, jo efektÄ«vÄk tiek izmantota infrastruktÅ«ra.
Trūkums Nr.3. Neefektīva resursu izmantoŔana
Mazos mezglos atlikuÅ”Äs resursu daļas var bÅ«t pÄrÄk mazas, lai tÄm pieŔķirtu jebkÄdu darba slodzi, tÄpÄc tÄs paliek neizmantotas.
PiemÄram, katram podam ir nepiecieÅ”ams 0,75 GB atmiÅas. Ja jums ir desmit mezgli, katrs ar 1 GB atmiÅu, varat palaist desmit blokus, atstÄjot katram mezglam 0,25 GB neizmantotas atmiÅas.
Tas nozÄ«mÄ, ka 25% no visas klastera atmiÅas tiek iztÄrÄti.
LielÄ mezglÄ ar 10 GB atmiÅu varat darbinÄt 13 no Å”iem moduļiem - un bÅ«s tikai viens neizmantots 0,25 GB fragments.
Å ajÄ gadÄ«jumÄ tiek iztÄrÄti tikai 2,5% atmiÅas.
TÄdÄjÄdi lielÄkos mezglos resursi tiek izmantoti optimÄlÄk.
VairÄki lieli mezgli vai daudzi mazi?
TÄtad, kas ir labÄks: daži lieli mezgli klasterÄ« vai daudzi mazi? KÄ vienmÄr, skaidras atbildes nav. Daudz kas ir atkarÄ«gs no pieteikuma veida.
PiemÄram, ja lietojumprogrammai ir nepiecieÅ”ami 10 GB atmiÅas, lielÄki mezgli ir acÄ«mredzama izvÄle. Un, ja lietojumprogrammai ir nepiecieÅ”ama desmitkÄrtÄ«ga replikÄcija, lai nodroÅ”inÄtu augstu pieejamÄ«bu, diez vai ir vÄrts riskÄt ar kopijas izvietoÅ”anu tikai divos mezglos ā klasterÄ« ir jÄbÅ«t vismaz desmit mezgliem.
VidÄjÄs situÄcijÄs izdariet izvÄli, pamatojoties uz katras iespÄjas priekÅ”rocÄ«bÄm un trÅ«kumiem. IespÄjams, daži argumenti ir atbilstoÅ”Äki jÅ«su situÄcijai nekÄ citi.
Un nemaz nav nepiecieÅ”ams visus mezglus padarÄ«t vienÄda izmÄra. Nekas neliedz vispirms eksperimentÄt ar tÄda paÅ”a izmÄra mezgliem, pÄc tam pievienot tiem cita izmÄra mezglus, apvienojot tos klasterÄ«. Darbinieku mezgli Kubernetes klasterÄ« var bÅ«t pilnÄ«gi neviendabÄ«gi. TÄtad jÅ«s varat mÄÄ£inÄt apvienot abu pieeju priekÅ”rocÄ«bas.
Nav vienas receptes, un katrai situÄcijai ir savas nianses, un tikai ražoÅ”ana parÄdÄ«s patiesÄ«bu.
Tulkojumu sagatavojusi mÄkoÅa platformas komanda
VairÄk par Kubernetes:
Avots: www.habr.com