ProHoster > Blogs > AdministrÄcija > TrÄ«s automÄtiskÄs mÄrogoÅ”anas lÄ«meÅi programmÄ Kubernetes: kÄ tos efektÄ«vi izmantot
TrÄ«s automÄtiskÄs mÄrogoÅ”anas lÄ«meÅi programmÄ Kubernetes: kÄ tos efektÄ«vi izmantot
Lai pilnÄ«bÄ apgÅ«tu Kubernetes, jums jÄzina dažÄdi veidi, kÄ mÄrogot klastera resursus: pÄc pÄc sistÄmas izstrÄdÄtÄju domÄm, tas ir viens no Kubernetes galvenajiem uzdevumiem. MÄs esam snieguÅ”i augsta lÄ«meÅa pÄrskatu par horizontÄlÄs un vertikÄlÄs automÄtiskÄs mÄrogoÅ”anas un klasteru izmÄru maiÅas mehÄnismiem, kÄ arÄ« ieteikumus, kÄ tos efektÄ«vi izmantot.
Kubernetes - rÄ«ks resursu pÄrvaldÄ«bai un orÄ·estrÄÅ”anai. Protams, ir patÄ«kami nodarboties ar lieliskajÄm podziÅu izvietoÅ”anas, uzraudzÄ«bas un pÄrvaldÄ«bas funkcijÄm (pods ir konteineru grupa, kas tiek palaista, reaÄ£Äjot uz pieprasÄ«jumu).
TomÄr jums vajadzÄtu padomÄt arÄ« par Å”Ädiem jautÄjumiem:
KÄ mÄrogot moduļus un lietojumprogrammas?
KÄ nodroÅ”inÄt konteineru darbÄ«bu un efektivitÄti?
KÄ reaÄ£Ät uz pastÄvÄ«gÄm izmaiÅÄm kodÄ un lietotÄju darba slodzÄm?
Kubernetes klasteru konfigurÄÅ”ana, lai lÄ«dzsvarotu resursus un veiktspÄju, var bÅ«t sarežģīta, un tai ir nepiecieÅ”amas ekspertu zinÄÅ”anas par Kubernetes iekÅ”Äjo darbÄ«bu. JÅ«su lietojumprogrammas vai pakalpojumu darba slodze var svÄrstÄ«ties visas dienas garumÄ vai pat stundas laikÄ, tÄpÄc lÄ«dzsvaroÅ”anu vislabÄk ir uzskatÄ«t par nepÄrtrauktu procesu.
Kubernetes automÄtiskÄs mÄrogoÅ”anas lÄ«meÅi
EfektÄ«vai automÄtiskai mÄrogoÅ”ana prasa koordinÄciju starp diviem lÄ«meÅiem:
Pod lÄ«menis, ieskaitot horizontÄlo (Horizontal Pod Autoscaler, HPA) un vertikÄlo autoscaler (Vertical Pod Autoscaler, VPA). Tas mÄrogoja jÅ«su konteineriem pieejamos resursus.
Klastera lÄ«menis, ko pÄrvalda klastera automÄtiskais mÄrogoÅ”anas lÄ«dzeklis (CA), kas palielina vai samazina mezglu skaitu klasterÄ«.
Horizontal Autoscaler (HPA) modulis
KÄ norÄda nosaukums, HPA mÄrogo podkopiju skaitu. LielÄkÄ daļa devops izmanto CPU un atmiÅas slodzi kÄ aktivizÄtÄjus, lai mainÄ«tu kopiju skaitu. TomÄr ir iespÄjams mÄrogot sistÄmu, pamatojoties uz pielÄgota metrikaviÅu kombinÄcija vai pat ÄrÄjie rÄdÄ«tÄji.
HPA mÄÄ£ina palielinÄt moduļu skaitu, ja tiek sasniegts norÄdÄ«tais slieksnis.
HPA atjaunina reprodukciju skaitu izvietoÅ”anas/replicÄÅ”anas kontrollerÄ«.
PÄc tam izvietoÅ”anas/replicÄÅ”anas kontrolleris izvieto visus nepiecieÅ”amos papildu moduļus.
HPA sÄk moduļa izvietoÅ”anas procesu, kad tiek sasniegts metrikas slieksnis
Lietojot HPA, Åemiet vÄrÄ:
NoklusÄjuma HPA pÄrbaudes intervÄls ir 30 sekundes. To nosaka karogs horizontÄlÄ-pod-autoscaler-sync-period kontroliera pÄrvaldniekÄ.
NoklusÄjuma relatÄ«vÄ kļūda ir 10%.
PÄc pÄdÄjÄ moduļu skaita palielinÄÅ”anas HPA sagaida, ka rÄdÄ«tÄji stabilizÄsies trÄ«s minÅ«Å”u laikÄ. Å o intervÄlu nosaka karogs horizontÄls-pod-autoscaler-upscale-delay.
PÄc pÄdÄjÄ moduļu skaita samazinÄÅ”anas HPA gaida piecas minÅ«tes, lai stabilizÄtu. Å o intervÄlu nosaka karogs horizontal-pod-autoscaler-downscale-delay.
HPA vislabÄk darbojas ar izvietoÅ”anas objektiem, nevis replikÄcijas kontrolleriem. HorizontÄlÄ automÄtiskÄ mÄrogoÅ”ana nav saderÄ«ga ar ritoÅ”o atjauninÄjumu, kas tieÅ”i manipulÄ ar replikÄcijas kontrolieriem. Izvietojot, reprodukciju skaits ir tieÅ”i atkarÄ«gs no izvietoÅ”anas objektiem.
PÄkstu vertikÄlÄ automÄtiskÄ mÄrogoÅ”ana
VertikÄlÄ automÄtiskÄ mÄrogoÅ”ana (VPA) esoÅ”ajiem blokiem pieŔķir vairÄk (vai mazÄk) CPU laika vai atmiÅas. PiemÄrots statusful vai bezvalsts podiem, bet galvenokÄrt paredzÄts statusful pakalpojumiem. TomÄr bezvalsts moduļiem varat izmantot arÄ« VPA, ja nepiecieÅ”ams automÄtiski pielÄgot sÄkotnÄji pieŔķirto resursu apjomu.
VPA arÄ« reaÄ£Ä uz OOM (out of memory) notikumiem. Lai mainÄ«tu CPU laiku un atmiÅu, ir jÄrestartÄ podi. AtsÄkot BPN, tiek ievÄrots pieŔķīruma budžets (pÄkstÄ«m izplatÄ«Å”anas budžets, PBP), lai garantÄtu minimÄlo nepiecieÅ”amo moduļu skaitu.
Katram modulim var iestatÄ«t minimÄlos un maksimÄlos resursus. TÄdÄjÄdi jÅ«s varat ierobežot maksimÄlo pieŔķirtÄs atmiÅas apjomu lÄ«dz 8 GB. Tas ir noderÄ«gi, ja paÅ”reizÄjie mezgli noteikti nevar pieŔķirt vairÄk nekÄ 8 GB atmiÅas vienam konteineram. DetalizÄtas specifikÄcijas un darbÄ«bas mehÄnisms ir aprakstÄ«tas oficiÄlÄ VPA wiki.
TurklÄt VPA ir interesanta ieteikumu funkcija (VPA Recommender). Tas uzrauga resursu izmantoÅ”anu un visu moduļu OOM notikumus, lai ieteiktu jaunas atmiÅas un CPU laika vÄrtÄ«bas, pamatojoties uz inteliÄ£entu algoritmu, kura pamatÄ ir vÄsturiskie rÄdÄ«tÄji. Ir arÄ« API, kas izmanto pod rokturi un atgriež ieteiktÄs resursu vÄrtÄ«bas.
Ir vÄrts atzÄ«mÄt, ka VPA Recommender neizseko resursu "limitu". TÄ rezultÄtÄ modulis var monopolizÄt resursus mezglos. LabÄk ir iestatÄ«t ierobežojumu nosaukumvietas lÄ«menÄ«, lai izvairÄ«tos no milzÄ«ga atmiÅas vai CPU patÄriÅa.
Ja tiek sasniegts norÄdÄ«tais slieksnis, VPA mÄÄ£ina mainÄ«t pieŔķirto resursu apjomu.
VPA atjaunina resursu skaitu izvietoÅ”anas/replicÄÅ”anas kontrollerÄ«.
Kad moduļi tiek restartÄti, visi jaunie resursi tiek lietoti izveidotajiem gadÄ«jumiem.
VPA pievieno nepiecieŔamo resursu apjomu
LÅ«dzu, Åemiet vÄrÄ Å”Ädus punktus, izmantojot VPA:
Lai mÄrogotu, ir obligÄti jÄrestartÄ pods. Tas ir nepiecieÅ”ams, lai izvairÄ«tos no nestabilas darbÄ«bas pÄc izmaiÅu veikÅ”anas. UzticamÄ«bas labad moduļi tiek restartÄti un sadalÄ«ti pa mezgliem, pamatojoties uz tikko pieŔķirtajiem resursiem.
VPA un HPA vÄl nav saderÄ«gi viens ar otru un nevar darboties vienÄ un tajÄ paÅ”Ä podÄ. Ja izmantojat abus mÄrogoÅ”anas mehÄnismus vienÄ klasterÄ«, pÄrliecinieties, vai iestatÄ«jumi neļauj tos aktivizÄt vieniem un tiem paÅ”iem objektiem.
VPA noregulÄ konteineru pieprasÄ«jumus pÄc resursiem, pamatojoties tikai uz iepriekÅ”Äjo un paÅ”reizÄjo lietojumu. Tas nenosaka resursu izmantoÅ”anas ierobežojumus. Var rasties problÄmas, ja lietojumprogrammas nedarbojas pareizi un sÄk pÄrÅemt arvien vairÄk resursu, tas novedÄ«s pie tÄ, ka Kubernetes izslÄgs Å”o podiÅu.
VPA joprojÄm ir attÄ«stÄ«bas sÄkuma stadijÄ. Esiet gatavi tam, ka tuvÄkajÄ nÄkotnÄ sistÄmÄ var tikt veiktas dažas izmaiÅas. JÅ«s varat lasÄ«t par zinÄmie ierobežojumi Šø attÄ«stÄ«bas plÄniem. TÄdÄjÄdi tiek plÄnots Ä«stenot VPA un HPA kopÄ«gu darbÄ«bu, kÄ arÄ« moduļu izvietoÅ”anu kopÄ ar vertikÄlÄs automÄrogoÅ”anas politiku tiem (piemÄram, speciÄla etiÄ·ete ānepiecieÅ”ams VPAā).
Kubernetes klastera automÄtiskÄ mÄrogoÅ”ana
Cluster Autoscaler (CA) maina mezglu skaitu, pamatojoties uz gaidÄ«Å”anas bloku skaitu. SistÄma periodiski pÄrbauda neapstiprinÄtos moduļus un palielina klastera lielumu, ja nepiecieÅ”ams vairÄk resursu un ja klasteris nepÄrsniedz noteiktos ierobežojumus. CA sazinÄs ar mÄkoÅpakalpojumu sniedzÄju, pieprasa no tÄ papildu mezglus vai atbrÄ«vo dÄ«kstÄves mezglus. PirmÄ plaÅ”i pieejamÄ CA versija tika ieviesta Kubernetes 1.8.
Augsta lÄ«meÅa SA darbÄ«bas shÄma:
CA pÄrbauda neapstiprinÄtos moduļus pÄc noklusÄjuma 10 sekunžu intervÄlÄ.
Ja viens vai vairÄki podi atrodas gaidstÄves stÄvoklÄ«, jo klasterim nav pietiekami daudz pieejamo resursu, lai tos pieŔķirtu, tas mÄÄ£ina nodroÅ”inÄt vienu vai vairÄkus papildu mezglus.
Kad mÄkoÅpakalpojumu sniedzÄjs pieŔķir vajadzÄ«go mezglu, tas pievienojas klasterim un ir gatavs apkalpot podi.
Kubernetes plÄnotÄjs izplata neapstiprinÄtos aplikumus jaunam mezglam. Ja pÄc tam daži moduļi joprojÄm paliek gaidÄ«Å”anas stÄvoklÄ«, process tiek atkÄrtots un klasterim tiek pievienoti jauni mezgli.
CA nodroÅ”ina, ka visiem klastera podiem ir vietas, lai tie darbotos neatkarÄ«gi no CPU slodzes. Tas arÄ« cenÅ”as nodroÅ”inÄt, lai klasterÄ« nebÅ«tu nevajadzÄ«gu mezglu.
CA reÄ£istrÄ mÄrogoÅ”anas nepiecieÅ”amÄ«bu pÄc aptuveni 30 sekundÄm.
Kad mezgls vairs nav vajadzÄ«gs, CA pÄc noklusÄjuma gaida 10 minÅ«tes pirms sistÄmas mÄrogoÅ”anas.
AutomÄrogoÅ”anas sistÄmai ir paplaÅ”inÄtÄju jÄdziens. TÄs ir dažÄdas mezglu grupas atlases stratÄÄ£ijas, kurÄm tiks pievienoti jauni mezgli.
Izmantojiet opciju atbildÄ«gi cluster-autoscaler.kubernetes.io/safe-to-evict (true). Ja instalÄjat daudz podziÅu vai ja daudzi no tiem ir izkaisÄ«ti visos mezglos, jÅ«s lielÄ mÄrÄ zaudÄsit iespÄju palielinÄt kopu.
Izmantojiet PodDisruptionBudgetslai novÄrstu aplikumu dzÄÅ”anu, kas var izraisÄ«t lietojumprogrammas daļu pilnÄ«gu pÄrtraukÅ”anu.
KÄ Kubernetes autoscalers mijiedarbojas viens ar otru
Lai panÄktu perfektu harmoniju, automÄtiskÄ mÄrogoÅ”ana ir jÄpiemÄro gan pod lÄ«menÄ« (HPA/VPA), gan kopu lÄ«menÄ«. ViÅi mijiedarbojas viens ar otru salÄ«dzinoÅ”i vienkÄrÅ”i:
HPA vai VPA atjaunina pod replikas vai resursus, kas pieŔķirti esoŔajiem podiem.
Ja plÄnotajai mÄrogoÅ”anas veikÅ”anai nav pietiekami daudz mezglu, CA pamana, ka ir gaidÄ«Å”anas stÄvoklÄ« esoÅ”ie podi.
HPA un VPA ir atkarÄ«gi no rÄdÄ«tÄjiem un dažiem vÄsturiskiem datiem. Ja tiek pieŔķirti nepietiekami resursi, moduļi tiks samazinÄti lÄ«dz minimumam un nespÄs Ä£enerÄt metriku. Å ajÄ gadÄ«jumÄ automÄtiskÄ mÄrogoÅ”ana nekad nenotiks.
Pati mÄrogoÅ”anas darbÄ«ba ir atkarÄ«ga no laika. MÄs vÄlamies, lai moduļi un kopa tiktu Ätri paplaÅ”inÄti ā pirms lietotÄji pamana problÄmas vai kļūmes. TÄpÄc jÄÅem vÄrÄ vidÄjais pÄkstÄ«m un kopas mÄrogoÅ”anas laiks.
MazÄk nekÄ 2 sekundes. AplikÄcijas tiek izveidotas un pÄriet gaidÄ«Å”anas stÄvoklÄ«: 1 sekunde.
MazÄk nekÄ 2 sekundes. CA redz gaidÄ«Å”anas moduļus un nosÅ«ta zvanus uz nodroÅ”inÄjuma mezgliem: 1 sekunde.
3 minÅ«tes. MÄkoÅu nodroÅ”inÄtÄjs pieŔķir mezglus. K8s gaida, lÄ«dz tie ir gatavi: lÄ«dz 10 minÅ«tÄm (atkarÄ«bÄ no vairÄkiem faktoriem).
SliktÄkais (reÄlÄks) scenÄrijs - 12 minÅ«tes:
30 sekundes. Atjauniniet mÄrÄ·a metriku.
30 sekundes. HPA pÄrbauda metrikas vÄrtÄ«bas.
MazÄk nekÄ 2 sekundes. PÄksti tiek izveidoti un pÄriet gaidÄ«Å”anas režīmÄ.
MazÄk nekÄ 2 sekundes. CA redz gaidoÅ”os moduļus un veic zvanus, lai nodroÅ”inÄtu mezglus.
10 minÅ«tes. MÄkoÅu nodroÅ”inÄtÄjs pieŔķir mezglus. K8s gaida, lÄ«dz tie ir gatavi. GaidÄ«Å”anas laiks ir atkarÄ«gs no vairÄkiem faktoriem, piemÄram, pÄrdevÄja aizkaves, OS aizkaves un atbalsta rÄ«kiem.
Nejauciet mÄkoÅpakalpojumu sniedzÄju mÄrogoÅ”anas mehÄnismus ar mÅ«su CA. PÄdÄjais darbojas Kubernetes klasterÄ«, savukÄrt mÄkoÅa nodroÅ”inÄtÄja dzinÄjs darbojas uz mezglu izplatÄ«Å”anas pamata. Tas nezina, kas notiek ar jÅ«su pÄkstÄ«m vai lietojumprogrammu. Å Ä«s sistÄmas darbojas paralÄli.
Kubernetes ir resursu pÄrvaldÄ«bas un orÄ·estrÄÅ”anas rÄ«ks. OperÄcijas, lai pÄrvaldÄ«tu aplikumus un klasteru resursus, ir galvenais pavÄrsiens Kubernetes apgÅ«Å”anÄ.
Izprotiet pod mÄrogojamÄ«bas loÄ£iku, Åemot vÄrÄ HPA un VPA.
CA ir jÄizmanto tikai tad, ja jums ir laba izpratne par pÄkstÄ«m un konteineriem.
Lai optimÄli konfigurÄtu klasteri, jums ir jÄsaprot, kÄ dažÄdas mÄrogoÅ”anas sistÄmas darbojas kopÄ.
NovÄrtÄjot mÄrogoÅ”anas laiku, Åemiet vÄrÄ sliktÄko un labÄko scenÄriju.