Nodet punuese të Kubernetes: shumë të vogla apo disa të mëdha?

Nodet punuese të Kubernetes: shumë të vogla apo disa të mëdha?
Kur krijoni një klaster Kubernetes, mund të lindin pyetje: sa node pune të konfiguroni dhe çfarë lloji? Cila është më e mira për një klaster on-premise: të blini disa serverë të fuqishëm ose të angazhoni një duzinë makinerish të vjetra në qendrën tuaj të të dhënave? Dhe në cloud, është më mirë të merrni tetë instance me një bërthamë ose dy me katër bërthama?

Përgjigjet për këto pyetje janë në artikullin të Daniel Weibels, inxhinier programues dhe mësues në projektin mësues Learningk8s në përkthimin e ekipit Kubernetes aaS nga Mail.ru.

Kapaciteti i klasterit

Në përgjithësi, një klaster Kubernetes mund të konsiderohet si një "super-node" i madh. Kapaciteti i tij i përgjithshëm të llogaritur është shuma e kapacitetit të të gjithë node-ve përbërëse.

Ekzistojnë disa mënyra për të arritur kapacitetin e dëshiruar të klasterit. Për shembull, na nevojitet një klaster me një kapacitet total prej 8 bërthamash procesorike dhe 32 GB memorie RAM, sepse grupi i aplikacioneve kërkon një sasi të tillë burimesh. Atëherë mund të instaloni dy node me 16 GB memorie ose katër node me 8 GB memorie, dy procesorë katër bërthamorë ose katër procesorë me dy bërthama.

Ja vetëm dy mënyra të mundshme për të krijuar një klaster:

Nodet punuese të Kubernetes: shumë të vogla apo disa të mëdha?
Të dy opsionet ofrojnë një klaster me të njëjtin kapacitet, por në konfigurimin më poshtë janë vendosur katër node më të vogla, ndryshe nga konfigurimi më sipër me dy node më të mëdhenj.

Cila është alternativa më e mirë?

Për t'iu përgjigjur këtij pyetje, le të shqyrtojmë avantazhet e të dy opsioneve. I kemi paraqitur ato në një tabelë.

Disa node të mëdhenj

Shumë node të vogla

Menaxhimi i klasterit është më i thjeshtë (nëse është on-premise)

Autoskalarimi funksionon më mirë

Më lirë (nëse është on-premise)

Çmimi ndonjĂ«herĂ« Ă«shtĂ« i ngjashĂ«m (nĂ« cloud)

Mund të ekzekutoni aplikacione me burime të rënda

Replikimi i plotë

Burimet përdoren më efikasishëm (me më pak overhead për demonët e sistemit)
Qëndrueshmëria e klasterit është më e lartë

Vini re se po flasim vetëm për node punuese. Zgjedhja e numrit dhe madhësisë së node-ve kryesor është një temë krejtësisht tjetër.

Pra, le të diskutojmë më në detaje për secilën pikë nga tabela.

Opsioni i parë: disa node të mëdhenj

Opsioni më ekstrem është një node pune për të gjithë kapacitetin e klasterit. Në shembullin lart, kjo do të ishte një node pune me 16 bërthama CPU dhe 16 GB memorie RAM.

Pikat pozitive

Avantazhi # 1. Menaxhimi është më i thjeshtë
ËshtĂ« mĂ« e lehtĂ« tĂ« menaxhosh disa makina sesa tĂ« menaxhosh njĂ« park tĂ« tĂ«rĂ«. Aktualizimet dhe rregullimet realizohen mĂ« shpejt, dhe sinkronizimi Ă«shtĂ« mĂ« i thjeshtĂ«. Numri i ndĂ«rprerjeve nĂ« shifra absolute Ă«shtĂ« gjithashtu mĂ« i vogĂ«l.

Kujdes, gjithë kjo e thënë është për harduerin tuaj, për serverët tuaj, dhe jo për instancat cloud.

Situata në cloud është ndryshe. Atje menaxhimi bëhet nga ofruesi i shërbimeve cloud. Pra, menaxhimi i dhjetë nyjave në cloud nuk ndryshon shumë nga menaxhimi i një nyje.

Routimi i trafikut dhe shpërndarja e ngarkesës midis pod-ëve në cloud kryhet automatikisht: trafiku që vjen nga interneti drejtohet në balancuesin kryesor të ngarkesës, i cili e drejton trafikun në portin e një nga nyjave (shërbimi NodePort vendos një port në intervalin 30000-32767 në çdo nyje të klasterit). Rregullat e themeluara nga kube-proxy e ridrejtojnë trafikun nga nyja në pod. Kështu duket për dhjetë pod në dy nyje:

Nodet punuese të Kubernetes: shumë të vogla apo disa të mëdha?
Pika e dytë. Më pak shpenzime për nyje
Një makinë e fuqishme është më e shtrenjtë, por rritja e çmimit nuk është domosdoshmërisht lineare. Në fjalë të tjera, një server me dhjetë të bërthamave me 10 GB RAM zakonisht është më i lirë se dhjetë një-bërthamash me të njëjtin sasi RAM.

Por kujdes, kjo rregull është zakonisht e pavlefshme në shërbimet cloud. Në skemat aktuale të çmimit, te të gjithë ofruesit kryesorë të shërbimeve cloud, çmimet rriten linearisht me rritjen e kapacitetit.

Pra, në cloud zakonisht nuk mund të kursesh për serverë më të fuqishëm.

Pika e tretë. Mund të nisni aplikacione kërkuese të resurseve
Disa aplikacione kërkojnë serverë të fuqishëm në klaster. Për shembull, nëse një sistem mësimi të makinerisë kërkon 8 GB RAM, nuk mund ta nisin atë në nyja me 1 GB, por vetëm nëse ka të paktën një nyje të madhe pune.

Disavantazhet

Minus i parë. Shumë pod në nyje
Nëse e njëjta detyrë ekzekutohet në një numër më të vogël nyjash, atëherë natyrisht që në secilën prej tyre do të ketë më shumë pod.

Kjo mund të bëhet një problem.

Arsyeja është se çdo modul sjell disa të dhëna mbi overhead-in në ambientin e ekzekutimit të kontejnerëve (p.sh., Docker), si dhe në kubelet dhe cAdvisor.

Për shembull, kubelet rregullisht vërteton qëndrueshmërinë e të gjithë kontejnerëve në nyjë - sa më shumë kontejnerë, aq më shumë punë për kubelet.

CAdvisor mbledh statistika për përdorimin e resurseve të të gjitha kontejnerëve në nod, ndërsa kubelet kërkon rregullisht këtë informacion dhe e ofron atë përmes API. Sërish, sa më shumë kontejnerë, aq më shumë punë për cAdvisor dhe kubelet.

Nëse numri i moduleve rritet, kjo mund të ngadalësojë sistemin dhe madje ta dëmtojë besueshmërinë e tij.

Nodet punuese të Kubernetes: shumë të vogla apo disa të mëdha?
Në depoja Kubernetes disa kanë ankuar, që nodet lëvizin ndërmjet statusit Ready/NotReady, pasi kontrollet e rregullta të kubelet për të gjithë kontejnerët në nod kërkojnë shumë kohë.
PĂ«r kĂ«tĂ« arsye, Kubernetes r rekomandon qĂ« tĂ« vendosen mĂ« shumĂ« se 110 pod-e nĂ« nod. NĂ« varĂ«si tĂ« performancĂ«s sĂ« nodit, mund tĂ« ekzekutoni mĂ« shumĂ« pod-e nĂ« nod, por Ă«shtĂ« e vĂ«shtirĂ« tĂ« parashikohet nĂ«se do tĂ« ketĂ« probleme apo do tĂ« funksionojĂ« mirĂ«. ËshtĂ« mirĂ« ta testoni paraprakisht.

Minus Nr. 2. Kufizimi i replikimit
Numri shumë i vogël i nodve kufizon shkallën efektive të replikimit të aplikacioneve. Për shembull, nëse keni një aplikacion me disponueshmëri të lartë me pesë replika, por vetëm dy nod, atëherë shkalla efektive e replikimit të aplikacionit zvogëlohet në dy.

Pesë replika mund të shpërndahen vetëm në dy nod, dhe nëse një nga ato dështon, menjëherë dëmton disa replika.

Nëse keni pesë nod ose më shumë, çdo replikë do të ekzekutohet në një nod të veçantë, dhe dështimi i një nodi do të eliminojë maksimum një replikë.

Kështu, kërkesat për disponueshmëri të lartë mund të kërkojnë një numër minimal nodesh në klaster.

Minus Nr. 3. Pasojat më të këqija të dështimit
Me një numër të vogël nodesh, çdo dështim sjell pasoja më të rënda. Për shembull, nëse keni vetëm dy nod, dhe një prej tyre dështon, menjëherë humbet gjysmën e moduleve tuaja.

Natyrisht, Kubernetes do ta transferojë ngarkesën e punës nga nodi i dështuar në të tjerët. Por nëse ato janë të pakta, mund të mos ketë kapacitet të mjaftueshëm të lirë. Si rezultat, disa nga aplikacionet tuaja do të jenë të paqasshme derisa të ngrihet nodi i dështuar.

Pra, aq më shumë nodet, aq më pak ndikimi i dështimeve harduese.

Minus Nr. 4. Më shumë hapa të automatikës
Në Kubernetes funksionon një sistem i automatikës për shkallëzimin e klastereve për infrastrukturën cloud, i cili lejon shtimin ose heqjen automatikisht të nyjave në varësi të nevojave aktuale. Me nyje të mëdha, shkallëzimi bëhet më abrupt dhe i ngathët. Për shembull, nëse keni dy nyje, shtimi i një nyje të re do të rrisë kapacitetin e klasterit menjëherë me 50%. Dhe do t'ju duhet të paguani për këto burime, edhe nëse nuk i nevojiten.

Prandaj, nĂ«se planifikoni tĂ« pĂ«rdorni automatikĂ«n pĂ«r shkallĂ«zimin e klasterit, aq mĂ« tĂ« vogla tĂ« jenĂ« nyjat — aq mĂ« fleksibĂ«l dhe ekonomik do tĂ« jetĂ« shkallĂ«zimi.

Tani le të shqyrtojmë avantazhet dhe disavantazhet e një numri të madh nyjash të vogla.

Varianti i dytë: shumë nyje të vogla

Përfitimet e këtij qasjeje, në thelb, rrjedhin nga disavantazhet e variantit të kundërt me disa nyje të mëdha.

Pikat pozitive

PĂ«rfitimi № 1. MĂ« pak pasojat e dĂ«shtimit
Sa më shumë nyje, aq më pak podë në çdo nyje. Për shembull, nëse keni njëqind module në dhjetë nyje, atëherë në çdo nyje do të ketë mesatarisht dhjetë module.

Prandaj, nëse një nga nyjat dështon, humbni vetëm 10% të ngarkesës së punës. Ekziston mundësia që të ndikohen vetëm disa kopje, ndërsa aplikacionet si një e tërë të mbeten në gjendje funksionimi.

Për më tepër, në nyjat e mbetura, me siguri do të ketë resurse të mjaftueshme për ngarkesën e punës së nyjës në dështim, kështu që Kubernetes mund ta riplanojë lehtësisht podët tuaj, dhe aplikacionet tuaja do të rikthehen në gjendje funksionimi relativisht shpejt.

PĂ«rfitimi № 2. Replikim i mirĂ«
Nëse ka mjaft nyje, planifikuesi i Kubernetes-it mund të caktojë të gjitha kopjet në nyje të ndryshme. Kështu, në rastin e dështimit të nyjës, do të preket vetëm një kopje, ndërsa aplikacioni do të mbetet i aksesueshëm.

Disavantazhet

Disavantazhi № 1. MĂ« e vĂ«shtirĂ« pĂ«r menaxhim
Me një numër të madh nyjash është më e vështirë të menaxhosh. Për shembull, çdo nyje e Kubernetes-it duhet të ndërveprojë me të gjitha nyjat e tjera, dmth numri i lidhjeve rritet katror dhe të gjitha këto lidhje duhet të monitorohen.

Kontrolluesi i nyjave nĂ« menaxherin e kontrolluesve tĂ« Kubernetes-it inspekton rregullisht tĂ« gjitha nyjat nĂ« klaster pĂ«r tĂ« kontrolluar shĂ«ndetin — sa mĂ« shumĂ« nyje, aq mĂ« e madhe ngarkesa mbi kontrolluesin.

Ngarkohet gjithashtu edhe database etctd — çdo kubelet dhe kube-proxy thĂ«rret watcher pĂ«r etcd (nĂ«pĂ«rmjet API), tĂ« cilit etcd duhet tĂ« transmetojĂ« azhurnimet e objektit.

Në përgjithësi, çdo nyje punuese ngarkon më shumë komponentët sistemorë të nyjave kryesore.

Nodet punuese të Kubernetes: shumë të vogla apo disa të mëdha?
Zyrtarisht, Kubernetes mbështet klastere me numrin e nyjeve deri në 5000. Megjithatë, në praktikë, tashmë 500 nyje mund të shkaktojnë probleme jo triviale.

Për të menaxhuar një numër të madh nyjesh punuese, duhet të zgjidhni nyje kryesore më të fuqishme. Për shembull, kube-up instalon automatikisht madhësinë e duhur të VM për nyjën kryesore në varësi të numrit të nyjeve punuese. Kështu, sa më shumë nyje punuese, aq më të fuqishme duhet të jenë nyjet kryesore.

Për të zgjidhur këto probleme specifike, ekzistojnë zhvillime speciale, si Virtual Kubelet. Ky sistem lejon shmangien e kufizimeve dhe ndërtimin e klastereve me një numër të madh nyjesh punuese.

Disavantazhi Nr. 2. Më shumë overhead
NĂ« çdo nyje punuese, Kubernetes ekzekuton njĂ« grup demonĂ«sh sistemorĂ« — kĂ«tu pĂ«rfshihet mjedisi i ekzekutimit tĂ« kontejnerĂ«ve (p.sh., Docker), kube-proxy dhe kubelet, duke pĂ«rfshirĂ« cAdvisor. TĂ« gjitha sĂ« bashku konsumojnĂ« njĂ« sasi tĂ« caktuar tĂ« burimeve.

Nëse keni shumë nyje të vogla, përqindja e këtij overheadi në çdo nyje është më e madhe. Për shembull, imagjinoni se të gjithë demonët sistemorë të një nyje së bashku përdorin 0,1 bërthamë CPU dhe 0,1 GB memorie. Nëse keni një nyje me dhjetë bërthama dhe 10 GB memorie, demons do të konsumojnë 1% të kapacitetit të klasterit. Nga ana tjetër, në dhjetë nyje me një bërthamë dhe 1 GB memorie, demons do të marrin 10% të kapacitetit të klasterit.

Prandaj, sa më pak nyje të keni, aq më efikasisht shfrytëzohet infrastruktura.

Disavantazhi Nr. 3. Shfrytëzim joefikas i burimeve
Në nyje të vogla mund të ndodhë që fragmente të mbetura të burimeve të jenë shumë të vogla për t'u caktuar një ngarkesë pune, kështu që ato mbeten të paqartuara.

PĂ«r shembull, çdo pod kĂ«rkon 0,75 GB memorie. NĂ«se keni dhjetĂ« nyje dhe nĂ« secilĂ«n 1 GB memorie, mund tĂ« ekzekutoni dhjetĂ« pod’e — kĂ«shtu, nĂ« secilĂ«n nyje do tĂ« mbetet 0,25 GB memorie tĂ« pashfrytĂ«zuar.

Kjo do të thotë se 25% e memories së gjithë klasterit shkon kot.

NĂ« njĂ« nyje tĂ« madhe me 10 GB memorie, mund tĂ« ekzekutoni 13 tĂ« tilla module — dhe do tĂ« mbetet vetĂ«m njĂ« fragment i pashfrytĂ«zuar 0,25 GB.

Në këtë rast, vetëm 2,5% e memories po shpenzohet kot.

Prandaj, në nyjat e mëdha shfrytëzohen më optimalisht burimet.

Disa nyje të mëdha apo shumë të vogla?

Pra, çfarë është më mirë: disa nyje të mëdha në klaster apo shumë të vogla? Si gjithmonë, nuk ka një përgjigje të qartë. Shumë varet nga lloji i aplikacionit.

PĂ«r shembull, nĂ«se aplikacioni kĂ«rkon 10 GB memorie, zgjedhja Ă«shtĂ« e qartĂ« nĂ« favor tĂ« nyjeve tĂ« mĂ«dha. Por nĂ«se aplikacioni kĂ«rkon njĂ« riprodhim dhjetĂ«fish pĂ«r disponueshmĂ«ri tĂ« lartĂ«, ndoshta nuk ia vlen tĂ« rrezikoni duke vendosur replikat nĂ« vetĂ«m dy nyje — nĂ« klaster duhet tĂ« ketĂ« tĂ« paktĂ«n dhjetĂ« nyje.

Në situata ndërmjetëse, bëni zgjedhjen tuaj duke u bazuar në avantazhet dhe disavantazhet e secilës mundësi. Ndoshta disa argumente janë më relevante për situatën tuaj se të tjerat.

Dhe nuk është e nevojshme të keni të gjitha nyjet të njëjtës madhësi. Asgjë nuk ju pengon të eksperimentoni fillimisht me nyje të një madhësie, pastaj t'i shtoni ato nyje të një madhësie tjetër, duke i kombinuar në klaster. Nyjet e punës në klasterin Kubernetes mund të jenë plotësisht heterogjene. Kështu që mund ta provoni kombinimin e avantazheve të të dy qasjeve.

Nuk ekziston një recetë e vetme, dhe çdo situatë ka nuancat e saj, dhe vetëm prodhimi do të tregojë të vërtetën.

Përkthimi është përgatitur nga ekipi i platformës cloud Mail.ru Cloud Solutions.

Më shumë për Kubernetes: 25 mjete të dobishme për menaxhimin dhe implementimin e klastereve.

Burimi: habr.com

Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster