
Për t'u njohur plotësisht me Kubernetes, është e nevojshme të njihni mënyrat e ndryshme të skalimit të burimeve të klasterit: , 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 të skalimit dhe rritjes së madhësisë së klasterëve, si dhe rekomandime se si t'i përdorni ato në mënyrë efektive.
Artikulli u përkthye nga ekipi që implementoi automatizimin .
Pse është e rëndësishme të mendoni për skalimin
â njĂ« mjet pĂ«r menaxhimin e burimeve dhe orkestrimin. Sigurisht, Ă«shtĂ« e bukur tĂ« merremi me funksionet e mrekullueshme tĂ« implementimit, monitorimit dhe menaxhimit tĂ« pod-Ă«ve (moduli pod Ă«shtĂ« njĂ« grup kontejnerĂ«sh qĂ« ekzekutohen nĂ« pĂ«rgjigje tĂ« njĂ« kĂ«rkese).
Megjithatë, është e nevojshme të mendohet edhe për këto pyetje:
- Si të shkallëzojmë modulet dhe aplikacionet?
- Si t'i mbajmë kontejnerët në një gjendje funksionale dhe efektive?
- Si të reagojmë ndaj ndryshimeve të vazhdueshme në kod dhe ngarkesat nga përdoruesit?
Konfigurimi i klastereve Kubernetes për balancimin e burimeve dhe performancës mund të jetë një nga detyrat më të vështira, duke kërkuar njohuri ekspertësh për funksionimin e brendshëm të Kubernetes. Ngarkesa në aplikacionin tuaj ose shërbimet mund të ndryshojë gjatë ditës ose madje brenda një ore, kështu që balancimi duhet të paraqitet si një proces i vazhdueshëm.
Nivelet e automatizimit në Kubernetes
Automatizimi efektiv kërkon koordinim midis dy niveleve:
- Niveli i pod-ëve, i cili përfshin automatizimin horizontal (Horizontal Pod Autoscaler, HPA) dhe automatizimin vertical (Vertical Pod Autoscaler, VPA). Ky automatizim përfshin rritjen e burimeve ekzistuese për kontejnerët tuaj.
- Niveli i klasterit, i cili menaxhohet nga sistemi i automatizimit të klasterit (Cluster Autoscaler, CA), i cili rrit ose ul numrin e nyjeve brenda klasterit.
Moduli i automatizimit horizontal (HPA)
Siç sugjeron emri, HPA automatizon numrin e replikave të pod-ëve. Si triger të ndryshimit të numrit të replikave, shumica e zhvilluesve të DevOps përdorin ngarkesën e procesorit dhe të memories. Megjithatë, është e mundur të automatizohet sistemi duke u bazuar në , kombinimin e tyre ose madje .
HPA kontrollon vazhdimisht vlerat e metrikeve të caktuara gjatë vendosjes, me një interval të paracaktuar prej 30 sekondash.
- HPA përpiqet të rrisë numrin e moduleve nëse arrihet një kufi i caktuar.
- HPA përditëson numrin e replikave brenda kontrolluesit të implementimit/replikimit.
- Kontrolluesi i implementimit/replikimit pastaj implementon të gjitha modulët e nevojshëm shtesë.
- HPA fillon procesin e implementimit të moduleve me arritjen e vlerës së kufirit të metrikeve

Kur përdorni HPA, merrni parasysh sa vijon:
Intervali i kontrollit të HPA është në default 30 sekonda. Ky është vendosur me flamurin
- horizontal-pod-autoscaler-sync-period në menaxherin e kontrolluesit. Gabimi relativ në default është 10%.
- Pas rritjes së fundit të numrit të moduleve, HPA pret stabilizimin e metrikeve për tre minuta. Ky interval është vendosur me flamurin
- horizontal-pod-autoscaler-upscale-delay Pas uljes së fundit të numrit të moduleve, HPA pret stabilizimin për pesë minuta. Ky interval është vendosur me flamurin.
- horizontal-pod-autoscaler-downscale-delay HPA funksionon më mirë me objektet e implementimit dhe jo me kontrolluesit e replikimit. Automatizimi horizontal është i papajtueshëm me përditësimet e rregullta (rolling update) që ndikojnë drejtpërdrejt në kontrolluesit e replikimit. Kur implementohet, numri i replikave varet drejtpërdrejt nga objektet e implementimit..
- HPA funksionon më mirë me objektet e shpërndarjes, jo me kontrollorët e replikimit. Autoskalimi horizontal është në kundërshtim me përditësimin rresht, i cili manipulohet drejtpërdrejt nga kontrollorët e replikimit. Gjatë shpërndarjes, numri i replikave varet drejtpërdrejt nga objektet e shpërndarjes.
Automatizimi vertical i pod-ëve
Automatizimi vertical (VPA) ndan më shumë (ose më pak) kohë procesori ose memorie për pod-ët ekzistues. Ky është i përshtatshëm për pod-et me ruajtje (stateful) ose pa ruajtje (stateless), por kryesisht është i dizajnuar për shërbimet stateful. Megjithatë, mund ta aplikoni VPA për modulet pa ruajtje nëse është e nevojshme të korrektohet automatikisht sasia fillimisht e ndarë e burimeve.
VPA gjithashtu reagon ndaj ngjarjeve OOM (out of memory, mungesë memorie). Për të ndryshuar kohën e përpunimit dhe sasinë e memories, nevojitet rivendosja e pod-ëve. Gjatë rivendosjes, VPA respekton buxhetin e shpërndarjes (), për të garantuar numrin minimal të moduleve të nevojshëm.
Mund të vendosni një sasi minimale dhe maksimale burimesh për çdo modul. Pra, është e mundur të kufizohet sasia maksimale e memories në 8 GB. Kjo është e dobishme nëse nodet aktuale saktësisht nuk mund të ofrojnë 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 monitoron përdorimin e burimeve dhe ngjarjet OOM të të gjithë moduleve, për t'u ofruar vlera të reja për memorie dhe kohën e procesorit bazuar në një algoritëm inteligjent që merr parasysh metrikat historike. Gjithashtu, ka një ndërfaqe API që merr një descriptor pod dhe kthen vlerat e rekomanduara për burimet.
Duhet theksuar se VPA Recommender nuk monitoron "limitin" e burimeve. Kjo mund tĂ« çojĂ« nĂ« faktin qĂ« moduli monopolizon burimet brenda nodĂ«ve. ĂshtĂ« mĂ« mirĂ« tĂ« vendosni njĂ« kufi nĂ« nivelin e hapĂ«sirĂ«s emĂ«rtuese, pĂ«r tĂ« shmangur shpenzime tĂ« mĂ«dha tĂ« memories ose kohĂ«s sĂ« procesorit.
Skema e punës së VPA në nivel të lartë:
- VPA kontrollon vazhdimisht vlerat e metrikave të specifikuara gjatë vendosjes, me një interval të paracaktuar prej 10 sekondash.
- Nëse arrihet threshold-i i caktuar, VPA përpiqet të ndryshojë sasinë e burimeve të ndara.
- VPA përditëson sasinë e burimeve brenda kontrolluesit të shpërndarjes/replikimit.
- Kur moduli riniset, të gjitha burimet e reja aplikohen në instancat e krijuara.

VPA shton sasinë e nevojshme të burimeve
Konsideroni këto pika kur përdorni VPA:
- Skalimi kërkon rinisjen e detyrueshme të pod-it. Kjo është e nevojshme për të shmangur punën e pasigurt pas ndryshimeve. Për siguri, modulet rinisen dhe shpërndahen në nodë sipas burimeve të reja të ndara.
- VPA dhe HPA aktualisht nuk janë të pajtueshëm me njëri-tjetrin dhe nuk mund të funksionojnë mbi të njëjtat pod. Nëse përdorni të dy mekanizmat e skalimit në një grup, sigurohuni që konfigurat e tyre mos t'i lejojnë të aktivizohen mbi të njëjtat objekte.
- VPA konfiguron kërkesat e burimeve të kontejnerëve vetëm në bazë të përdorimit të kaluar dhe aktual. Ai nuk vendos limite për përdorimin e burimeve. Mund të ndodhin probleme me funksionimin e gabuar të aplikacioneve, të cilat do të fillojnë të konsumojnë gjithnjë e më shumë burime, duke shkaktuar që Kubernetes të ndalojë këtë pod.
- VPA është ende në fazën e hershme të zhvillimit. Bëni kujdes që sistemi mund të kalojë disa ndryshime së shpejti. Mund të lexoni rreth dhe . Kështu, në planet është të realizohet bashkëpunimi i VPA dhe HPA, si dhe shpërndarja e moduleve së bashku me politikën e automatikës vertikale për to (për shembull, një etiketë e veçantë 'requires VPA').
Automatizimi i klasterit Kubernetes
Automatizimi i klasterit (Cluster Autoscaler, CA) ndryshon numrin e nodĂ«ve, nĂ« bazĂ« tĂ« numrit tĂ« moduleve pod qĂ« presin. Sistemi kontrollon periodikisht nĂ«se ka module nĂ« pritje â dhe rrit madhĂ«sinĂ« 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 nodĂ« tĂ« tjera ose çliruar ato qĂ« nuk janĂ« nĂ« pĂ«rdorim. Versioni i parĂ« publik i CA u prezantua nĂ« Kubernetes 1.8.
Skema e punës së CA në nivel të lartë:
- CA kontrollon nëse ka module në pritje me një interval të paracaktuar prej 10 sekondash.
- Nëse një ose disa module janë në pritje për shkak se klasteri nuk ka burime të mjaftueshme për t'i alokuar, ai përpiqet të përgatisë një ose disa nodë të tjera.
- Kur ofruesi i shërbimeve cloud ofron nodin e nevojshëm, ai bashkohet me klasterin dhe është gati të shërbejë moduleve pod.
- Planifikuesi i Kubernetes shpĂ«rndan module tĂ« pritura nĂ« nodet e reja. NĂ«se pas kĂ«saj disa module ende mbeten nĂ« pritje, procesi pĂ«rsĂ«ritet â dhe nodĂ« tĂ« reja shtohen nĂ« klaster.

Shpërndarja automatike e nodëve të klasterit në cloud
Konsideroni këtë gjatë përdorimit të CA:
- CA garanton që të gjitha modulet në klaster kanë vend për të funksionuar, pavarësisht nga niveli i ngarkesës së procesorit. Për më tepër, ai përpiqet të sigurojë që në klaster nuk ka nodë të panevojshme.
- CA regjistron nevojën për skalim rreth 30 sekonda.
- Pasi një nod bëhet i panevojshëm, CA sipas parazgjedhjes pret 10 minuta para se të ndryshojë madhësinë e sistemit.
- Në sistemin e automatizimit të skalimit ekziston koncepti i zgjeruesve (expanders). Këto janë strategji të ndryshme për të zgjedhur grupin e nodëve, në të cilin do të shtohen të reja.
- PĂ«rdorni mundĂ«sinĂ« me pĂ«rgjegjĂ«si cluster-autoscaler.kubernetes.io/safe-to-evict (true). NĂ«se vendosni shumĂ« podâe ose nĂ«se shumĂ« prej tyre janĂ« shpĂ«rndarĂ« mbi tĂ« gjitha nyjat, do tĂ« humbni nĂ« masĂ« mundĂ«sinĂ« pĂ«r tĂ« zvogĂ«luar shkallĂ«n e klasterit.
- PĂ«rdorni , pĂ«r tĂ« parandaluar fshirjen e podâeve, duke bĂ«rĂ« qĂ« pjesa e aplikacionit tuaj mund tĂ« dĂ«shtojĂ« krejtĂ«sisht.
Si sistemet e autoskalimit Kubernetes ndërveprojnë me njëra-tjetrën
PĂ«r njĂ« harmoni tĂ« pĂ«rsosur, duhet tĂ« pĂ«rdorni autoskalimin si nĂ« nivelin e podâeve (HPA/VPA), ashtu edhe nĂ« nivelin e klasterit. Ato ndĂ«rveprojnĂ« relativisht lehtĂ« me njĂ«ra-tjetrĂ«n:
- HPA ose VPA pĂ«rditĂ«sojnĂ« replikat e podâeve ose resurset e dedikuara pĂ«r podâĂ«t ekzistues.
- NĂ«se ka mungesĂ« nyjash pĂ«r shkallĂ«zimin e planifikuar, CA vĂ«ren se ka podâe nĂ« gjendje pritjeje.
- CA ndan nyja të reja.
- Modulet shpërndahen mbi nyjat e reja.

Sistemi i përbashkët i shkallëzimit Kubernetes
Gabimet tipike në autoskalimin Kubernetes
Ekzistojnë disa probleme tipike me të cilat DevOps përballen kur përpiqen të zbatojnë autoskalimin.
HPA dhe VPA varen nga metrikat dhe disa të dhëna historike. Nëse resurseve u janë dhënë më pak se sa nevojiten, modulet do të zvogëlohen dhe nuk do të kenë mundësi të gjenerojnë metrika. Në këtë rast, autoskalimi nuk do të realizohet kurrë.
Operacioni i shkallĂ«zimit Ă«shtĂ« i ndjeshĂ«m ndaj kohĂ«s. Ne duam qĂ« modulet dhe klasteri tĂ« shkallĂ«zohen shpejt â para se pĂ«rdoruesit tĂ« vĂ«rejnĂ« ndonjĂ« problem apo dĂ«shtim. Prandaj duhet tĂ« merrni parasysh kohĂ«n mesatare tĂ« shkallĂ«zimit tĂ« podâeve dhe klasterit.
Scenari ideal është 4 minuta:
- 30 sekonda. Rindërtimi i metrikave të synuara: 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 nyjave: 1 sekondë.
- 3 minuta. Ofruesi i cloud-it ndan nyja. K8s pret që ato të jenë gati: deri në 10 minuta (varet nga disa faktorë).
Scenari më i keq (më realist) është 12 minuta:
- 30 sekonda. Rindërtimi i metrikave të synuara.
- 30 sekonda. HPA kontrollon vlerat e metrikave.
- Më pak se 2 sekonda. Modulet pod krijohen dhe kalojnë në gjendje pritjeje.
- Më pak se 2 sekonda. CA sheh modulet në pritje dhe dërgon thirrjet për përgatitjen e nyjave.
- 10 minuta. Ofruesi i cloud-it ndan nyja. K8s pret që 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-it me CA tonĂ«. E fundit punon brenda klasterit Kubernetes, ndĂ«rsa mekanizmi i ofruesit tĂ« cloud-it punon nĂ« bazĂ« tĂ« shpĂ«rndarjes sĂ« nyjave. Ai nuk di se çfarĂ« ndodh me podâĂ«t ose aplikacionin tuaj. KĂ«to sisteme punojnĂ« paralelisht.
Si të menaxhoni shkallëzimin në Kubernetes
- Kubernetes Ă«shtĂ« njĂ« mjet pĂ«r menaxhimin e resurseve dhe orkestrimin. Operacionet e menaxhimit tĂ« podâeve dhe resurseve tĂ« klasterit janĂ« njĂ« pikĂ« kyçe nĂ« zotĂ«rimin e Kubernetes.
- Merrni logjikĂ«n e shkallĂ«zueshmĂ«risĂ« sĂ« podâeve nĂ« konsideratĂ« duke u bazuar nĂ« HPA dhe VPA.
- CA duhet tĂ« pĂ«rdoret vetĂ«m nĂ«se e kuptoni mirĂ« nevojat e podâeve dhe kontejnerĂ«ve tuaj.
- Për një konfigurim optimal të klasterit, duhet të kuptoni si funksionojnë së bashku sistemet e ndryshme të shkallëzimit.
- Kur vlerësoni kohën e shkallëzimit, kini parasysh skenarët më të keq dhe më të mirë.
Burimi: habr.com
