
Për të zotëruar plotësisht Kubernetes, duhet të njihni mënyrat e ndryshme të shkallëzimit të burimeve të klasterit: sipas , kjo është një nga detyrat kryesore të Kubernetes. Ne kemi përgatitur një përmbledhje të nivelit të lartë të mekanizmave të automatizimit horizontal dhe vertical, si dhe rekomandime për t'i përdorur ato në mënyrë efektive.
Artikulli u përkthye nga ekipi që implementoi automatizimin në .
Pse është e rëndësishme të mendoni për shkallëzimin
â njĂ« mjet pĂ«r menaxhimin e burimeve dhe orkestrimin. Sigurisht, Ă«shtĂ« mirĂ« tĂ« eksperimentoni me funksionalitetet e shkĂ«lqyera tĂ« implementimit, monitorimit dhe menaxhimit tĂ« podĂ«ve (moduli pod â njĂ« grup kontejnerĂ«sh qĂ« drejtohen nĂ« pĂ«rgjigje tĂ« kĂ«rkesĂ«s).
Megjithatë, duhet të mendojmë edhe për këto çështje:
- Si të shkallëzohet modulet dhe aplikacionet?
- Si të mbahen kontejnerët në gjendje funksionale dhe efektive?
- Si të reagoni ndaj ndryshimeve të vazhdueshme në kodin dhe ngarkesat e punës nga përdoruesit?
Konfigurimi i klastereve Kubernetes për ekuilibrimin e burimeve dhe performancës mund të jetë një sfidë e komplikuar, kërkon njohuri ekspertësh mbi funksionimin e brendshëm të Kubernetes. Ngarkesa në aplikacionin tuaj ose shërbime mund të ndryshojë gjatë ditës ose madje brenda një ore, prandaj ekuilibrimin duhet ta perceptoni si një proces të vazhdueshëm.
Nivelet e automatizimit të Kubernetes
Automatizimi efektiv kërkon koordinim midis dy niveleve:
- Niveli i podëve, duke përfshirë automatizimin horizontal (Horizontal Pod Autoscaler, HPA) dhe automatizimin vertical (Vertical Pod Autoscaler, VPA). Ky është shkallëzimi i burimeve aktuale për kontejnerët tuaj.
- Niveli i klasterit, i cili menaxhohet nga sistemi i automatizimit të klasterit (Cluster Autoscaler, CA), ai rrit ose ul numrin e njësive brenda klasterit.
Moduli i automatizimit horizontal (HPA)
Siç sugjeron emri, HPA shkallëzon numrin e replikave të podëve. Si nxitës për të ndryshuar numrin e replikave, shumica e devopëve përdorin ngarkesën e procesorit dhe kujtesës. Megjithatë, sisteme mund të shkallëzohen në bazë të , kombinimi i tyre apo madje .
Schemi i punës HPA në një nivel të lartë:
- HPA monitoron vazhdimisht vlerat e metrikeve të vendosura gjatë instalimit, me intervalin default prej 30 sekondash.
- HPA përpiqet të rrisë numrin e moduleve nëse arrihet kufiri i caktuar.
- HPA përditëson numrin e replikave brenda menaxherit të implementimit/replikimit.
- Menaxheri i implementimit/replikimit pastaj deployon të gjitha modulet e nevojshme shtesë.

HPA aktivizon procesin e implementimit të moduleve kur arrihet vlera kufitare e metrikeve.
Kur përdorni HPA, merrni parasysh të följat:
- Intervali i kontrollit të HPA default është 30 sekonda. Ai përcaktohet nga flagu horizontal-pod-autoscaler-sync-period në menaxherin e kontrollit.
- Gabimi relativ default është 10%.
- Pas rritjes së fundit të numrit të moduleve, HPA pret stabilizimin e metrikeve për tre minuta. Ky interval përcaktohet nga flagu horizontal-pod-autoscaler-upscale-delay.
- Pas uljes së fundit të numrit të moduleve, HPA pret stabilizimin për pesë minuta. Ky interval përcaktohet nga flagu horizontal-pod-autoscaler-downscale-delay.
- HPA funksionon më së miri me objektet e implementimit, jo me menaxherët e replikimeve. Automatizimi horizontal i skalimit nuk është i pajtueshëm me përditësimin e vazhdueshëm (rolling update) që manipulon drejtpërdrejt me menaxherët e replikimit. Kur deployohet, numri i replikave varet drejtpërdrejt nga objektet e implementimit.
Skalimi vertical i podâave
Skalimi vertical (VPA) rezervon mĂ« shumĂ« (ose mĂ« pak) kohĂ« CPU ose memorie pĂ«r podâat ekzistues. ĂshtĂ« e pĂ«rshtatshme pĂ«r podâat me ruajtje gjendjeje (stateful) ose pa tĂ« (stateless), por kryesisht Ă«shtĂ« e destinuar pĂ«r shĂ«rbime stateful. MegjithatĂ«, mund tĂ« aplikoni VPA edhe pĂ«r modulet pa ruajtje gjendjeje, nĂ«se Ă«shtĂ« e nevojshme pĂ«r tĂ« rregulluar automatikisht sasinĂ« e resurseve fillimisht tĂ« alokuara.
VPA gjithashtu reagon ndaj ngjarjeve OOM (out of memory, mungesĂ« memorie). PĂ«r tĂ« ndryshuar kohĂ«n e procesorit dhe sasinĂ« e memories, nevojitet ribashkimi i podâave. GjatĂ« ribashkimit, VPA respekton buxhetin e shpĂ«rndarjes (), pĂ«r tĂ« garantuar numrin minimal tĂ« nevojshĂ«m tĂ« moduleve.
Ju mund të vendosni një vëllim minimal dhe maksimal burimesh për secilën modulin. Në këtë mënyrë, mund të kufizoni vëllimin maksimal të memories të caktuar në një kufi prej 8 GB. Kjo është e dobishme, nëse nyjat aktuale nuk mund të caktojnë më shumë se 8 GB memorie për kontejnerin. Specifikimet e detajuara dhe mekanizmi i funksionimit janë përshkruar në .
Për më tepër, VPA ka një funksion interesant rekomandimesh (VPA Recommender). Ai ndjek përdorimin e burimeve dhe ngjarjet OOM të të gjitha moduleve, për të sugjeruar vlera të reja për memory dhe kohën e procesorit bazuar në një algoritëm inteligjent që merr parasysh metrikat historike. Ka gjithashtu një ndërfaqe API që pranon një deshkriptor pod dhe kthen vlerat e sugjeruara për burimet.
Duhet theksuar se VPA Recommender nuk ndjek "kufirin" e burimeve. Kjo mund tĂ« çojĂ« nĂ« monopolizimin e burimeve brenda nyjave nga moduli. ĂshtĂ« mĂ« mirĂ« tĂ« vendosni njĂ« kufi nĂ« nivelin e hapĂ«sirĂ«s emrore pĂ«r tĂ« shmangur shpenzimin e madh tĂ« memories ose kohĂ«s sĂ« procesorit.
Schemi e nivelit të lartë e funksionimit të VPA:
- VPA kontrollon vazhdimisht vlerat e metrikave të specifikuara gjatë instalimit, me një interval të paracaktuar prej 10 sekondash.
- Nëse arrihet pragu i caktuar, VPA përpiqet të ndryshojë sasinë e caktuar të burimeve.
- VPA përditëson sasinë e burimeve brenda kontrolluesit të desplejimit/replikimit.
- Kur modulat rinisin, të gjitha burimet e reja aplikohen për instancat e krijuara.

VPA shton sasinë e nevojshme të burimeve
Merrni parasysh këto pika gjatë përdorimit të VPA:
- Skalimi kërkon patjetër rinisjen e pod-it. Kjo është e nevojshme për të shmangur funksionimin e pasigurt pas ndryshimeve. Për besueshmëri, modulat rinisin dhe shpërndahen në nyja sipas burimeve të reja të caktuara.
- VPA dhe HPA për momentin nuk janë të pajtueshme me njëra-tjetrën dhe nuk mund të punojnë në të njëjtat pod-e. Nëse aplikoni të dy mekanizmat e skalimit në një klastri, sigurohuni që konfigurimet të mos lejojnë që ata të aktivizohen në të njëjtat objekte.
- VPA konfiguron kërkesat e konteinerëve për burime, duke u bazuar vetëm në përdorimin e tyre të kaluar dhe aktual. Ai nuk vendos kufij për përdorimin e burimeve. Mund të ndodhin probleme me funksionimin e saktë të aplikacioneve, të cilat fillojnë të kapin gjithnjë e më shumë burime, duke bërë që Kubernetes të ndalë këtë pod.
- VPA është ende në fazën fillestare të zhvillimit. Bëni kujdes, sistemi mund të përjetojë disa ndryshime në kohët në vijim. Mund të lexoni mbi dhe . Pra, në planet është realizimi i bashkëpunimit mes VPA dhe HPA, si dhe shpërndarja e moduleve së bashku me politikën për automatizimin vertical të shkallëzimit për to (për shembull, një etiketë speciale 'requires VPA').
Automatizimi i përmasave të klasterit Kubernetes
Automatizimi i pĂ«rmasave tĂ« klasterit (Cluster Autoscaler, CA) ndryshon numrin e nyjeve, duke u bazuar nĂ« numrin e moduleve tĂ« pritura pod. Sistemi kontrollon herĂ« pas here nĂ«se ka module tĂ« pritura â dhe rrit numrin e klasterit, nĂ«se kĂ«rkohen mĂ« shumĂ« burime dhe nĂ«se klasteri nuk kalon kufijtĂ« e vendosur. CA bashkĂ«punon me ofruesin e shĂ«rbimeve cloud, duke kĂ«rkuar nyje shtesĂ« ose duke çliruar ato qĂ« nuk janĂ« nĂ« pĂ«rdorim. Versioni i parĂ« publik i CA u prezantua nĂ« Kubernetes 1.8.
Diagrami i punës së CA:
- CA kontrollon nëse ka module në gjendje pritjeje me një interval prej 10 sekondash, me të drejtë.
- Nëse një ose disa module janë në gjendje pritjeje për shkak të mungesës së burimeve të disponueshme në klaster për t'i shpërndarë, ai përpiqet të përgatisë një ose disa nyje shtesë.
- Kur ofruesi i shërbimeve cloud alokon nyjën e nevojshme, ajo i bashkohet klasterit dhe është gati për të shërbyer moduleve pod.
- Planifikuesi i Kubernetes shpĂ«rndan modulĂ«t e pritur nĂ« nyjĂ«n e re. NĂ«se pas kĂ«saj disa module akoma mbeten nĂ« gjendje pritjeje, procesi pĂ«rsĂ«ritet â dhe nyje tĂ« reja shtohen nĂ« klaster.

Alokimi automatik i nyjeve të klasterit në cloud
Merrni parasysh këtë kur përdorni CA:
- CA garanton që të gjitha modulët në klaster kanë hapësirë për të funksionuar, pa marrë parasysh nivelin e ngarkesës së procesorit. Për më tepër, ai përpiqet të garantojë që në klaster nuk ka nyje të panevojshme.
- CA regjistron nevojën për shkallëzim pas rreth 30 sekondash.
- Pas që nodi bëhet i panevojshëm, CA në mënyrë të paracaktuar pret 10 minuta përpara se të shkallëzojë sistemin.
- Në sistemin e automatikisht shkallëzues, ekziston koncepti i zgjeruesve (expanders). Këto janë strategji të ndryshme për përzgjedhjen e grupit të nodëve në të cilin do të shtohen të rinjtë.
- Apliko me pĂ«rgjegjĂ«si opsionin cluster-autoscaler.kubernetes.io/safe-to-evict (true). NĂ«se vendosni shumĂ« podâe ose nĂ«se shumĂ« prej tyre shpĂ«rndahen nĂ« tĂ« gjithĂ« nodĂ«t, do tĂ« humbni nĂ« masĂ« mundĂ«sinĂ« pĂ«r tĂ« shkallĂ«zuar pĂ«rsĂ«ri klasterin.
- PĂ«rdorni , pĂ«r tĂ« parandaluar heqjen e podâeve, e cila mund tĂ« shkaktojĂ« qĂ« njĂ« pjesĂ« e aplikacionit tuaj tĂ« dĂ«shtojĂ« plotĂ«sisht.
Si sistemet e automatikisht shkallëzuesit të Kubernetes ndërveprojnë me njëra-tjetrën
PĂ«r harmoni ideale duhet tĂ« aplikohet automatikisht shkallĂ«zimi njĂ«kohĂ«sisht nĂ« nivelin e podâeve (HPA/VPA) dhe nĂ« nivelin e klasterit. Ato ndĂ«rveprojnĂ« relativisht thjeshtĂ« me njĂ«ra-tjetrĂ«n:
- HPA ose VPA pĂ«rditĂ«sojnĂ« replikat e podâeve ose burimet e dedikuara pĂ«r podâĂ«t ekzistues.
- Nëse mungojnë nodë për shkallëzimin e planifikuar, CA vëren podët që janë në gjendje pritjeje.
- CA dedikon nodë të reja.
- Modulet shpërndahen mbi nodët e reja.

Sistemi i bashkuar i shkallëzimit të Kubernetes
Gabimet tipike në automatikisht shkallëzimin e Kubernetes
Ekziston një numër problematikave tipike me të cilat përballen dev ops-ët kur përpiqen të zbatojnë automatikisht shkallëzimin.
HPA dhe VPA varen nga metrika dhe disa të dhëna historike. Nëse ndahen burime të pamjaftueshme, modulet do të mbyllen dhe nuk do të jenë në gjendje të gjenerojnë metrika. Në këtë rast, automatikisht shkallëzimi nuk do të ndodhë kurrë.
VetĂ« operacioni i shkallĂ«zimit Ă«shtĂ« i ndjeshĂ«m ndaj kohĂ«s. Ne duam qĂ« modulet dhe klasteri tĂ« shkallĂ«zohen shpejt â pĂ«rpara se pĂ«rdoruesit tĂ« vĂ«rejnĂ« ndonjĂ« problem dhe dĂ«shtim. Prandaj, duhet marrĂ« parasysh koha mesatare e shkallĂ«zimit tĂ« podâeve dhe klasterit.
Skenari ideal â 4 minuta:
- 30 sekonda. PĂ«rditĂ«simi i metrikes synuese: 30â60 sekonda.
- 30 sekonda. HPA kontrollon vlerat e metrikave: 30 sekonda.
- Më pak se 2 sekonda. Modulet pod krijohen dhe kalojnë në gjendje pritjeje: 1 sekondë.
- Më pak se 2 sekonda. CA sheh modulet në pritje dhe dërgon thirrjet për përgatitjen e nodëve: 1 sekondë.
- 3 minuta. Ofruesi i cloud ndan nyjat. K8s pret deri sa ato të jenë gati: deri në 10 minuta (varet nga disa faktorë).
Skenari mĂ« i keq (mĂ« real) â 12 minuta:
- 30 sekonda. Përditësimi i metrikave qëllimore.
- 30 sekonda. HPA kontrollon vlerat e metrikave.
- Më pak se 2 sekonda. Modulët pod krijohen dhe kalojnë në gjendjen pritëse.
- Më pak se 2 sekonda. CA sheh modulët në pritje dhe dërgon thirrje për përgatitjen e nyjeve.
- 10 minuta. Ofruesi i cloud ndan nyjat. K8s pret deri sa ato të jenë gati. Koha e pritjes varet nga disa faktorë, si vonesa e ofruesit, vonesa e OS, funksionimi i mjeteve ndihmëse.
Mos ngatërroni mekanizmat e shkallëzimit të ofruesve të cloud me CA-në tonë. E fundit funksionon brenda klasterit Kubernetes, ndërsa mekanizmi i ofruesit të cloud funksionon mbi bazën e shpërndarjes së nyjeve. Ai nuk di se çfarë ndodh me pod-at ose aplikacionin tuaj. Këto sisteme funksionojnë paralelisht.
Si të menaxhoni shkallëzimin në Kubernetes
- Kubernetes është një mjet për menaxhimin e burimeve dhe orkestrimin. Operacionet e menaxhimit të pod-ëve dhe burimeve të klasterit janë një pikë kyçe në zotërimin e Kubernetes.
- Masteroni logjikën e shkallëzimit të pod-ëve duke marrë parasysh HPA-në dhe VPA-në.
- CA duhet përdorur vetëm nëse e kuptoni mirë nevojat e pod-ëve dhe kontejnerëve tuaj.
- Për konfigurimin optimal të klasterit, duhet të kuptoni se si sistemet e ndryshme të shkallëzimit funksionojnë së bashku.
- Kur vlerësoni kohën e shkallëzimit, mbani në mend skenarët më të keq dhe më të mirë.
Burimi: habr.com
