Tliet Livelli ta 'Autoscaling f'Kubernetes: Kif Tużahom Effettivament
Biex tikkontrolla kompletament Kubernetes, trid tkun taf modi differenti biex tiskala r-riżorsi tal-cluster: by skond l-iżviluppaturi tas-sistema, dan huwa wieħed mill-kompiti ewlenin ta 'Kubernetes. Aħna ipprovdejna ħarsa ġenerali ta' livell għoli ta' mekkaniżmi ta' autoscaling orizzontali u vertikali u r-ridimensing tal-clusters, kif ukoll rakkomandazzjonijiet dwar kif tużahom b'mod effettiv.
Għaliex huwa importanti li wieħed jaħseb dwar l-iskala
Kubernetes - għodda għall-ġestjoni tar-riżorsi u l-orkestrazzjoni. Naturalment, huwa sabiħ li tinker mal-karatteristiċi friski tal-iskjerament, il-monitoraġġ u l-ġestjoni tal-imżiewed (pod huwa grupp ta 'kontenituri li huma mnedija bi tweġiba għal talba).
Madankollu, għandek taħseb ukoll dwar il-mistoqsijiet li ġejjin:
Kif tiskala moduli u applikazzjonijiet?
Kif iżżomm il-kontenituri operattivi u effiċjenti?
Kif tirrispondi għal bidliet kostanti fil-kodiċi u l-piżijiet tax-xogħol mill-utenti?
Il-konfigurazzjoni ta' clusters ta' Kubernetes biex jibbilanċjaw ir-riżorsi u l-prestazzjoni tista' tkun ta' sfida u teħtieġ għarfien espert tal-ħidma interna ta' Kubernetes. L-ammont ta’ xogħol tal-applikazzjoni jew tas-servizzi tiegħek jista’ jvarja tul il-ġurnata jew saħansitra matul siegħa, għalhekk l-aħjar bilanċ huwa meqjus bħala proċess kontinwu.
Livelli ta' autoscaling ta' Kubernetes
Autoscaling effettiv jeħtieġ koordinazzjoni bejn żewġ livelli:
Livell tal-pod, inkluż orizzontali (Horizontal Pod Autoscaler, HPA) u awtoscaler vertikali (Vertical Pod Autoscaler, VPA). Dan huwa l-iskala tar-riżorsi disponibbli għall-kontenituri tiegħek.
Livell ta 'cluster, li huwa mmaniġġjat mill-Cluster Autoscaler (CA), li jżid jew inaqqas in-numru ta' nodi fi ħdan il-cluster.
Modulu Horizontal Autoscaler (HPA).
Kif jissuġġerixxi l-isem, l-HPA tiskala n-numru ta 'repliki tal-miżwed. Il-biċċa l-kbira tad-devops jużaw is-CPU u t-tagħbija tal-memorja bħala triggers għall-bidla tan-numru ta 'repliki. Madankollu, huwa possibbli li tiskala s-sistema bbażata fuq metriċi tad-dwana, tagħhom kombinazzjoni jew saħansitra metriċi esterni.
Dijagramma operattiva HPA ta' livell għoli:
L-HPA jiċċekkja kontinwament il-valuri metriċi speċifikati waqt l-installazzjoni f'intervall default ta '30 sekonda.
L-HPA tipprova żżid in-numru ta' moduli jekk jintlaħaq il-limitu speċifikat.
L-HPA jaġġorna n-numru ta' repliki fi ħdan il-kontrollur tal-iskjerament/replikazzjoni.
Il-kontrollur tal-iskjerament/replikazzjoni mbagħad juża kwalunkwe moduli addizzjonali meħtieġa.
HPA jibda l-proċess ta' skjerament tal-modulu meta jintlaħaq limitu metriku
Meta tuża HPA, ikkunsidra dan li ġej:
L-intervall tal-kontroll HPA default huwa 30 sekonda. Huwa stabbilit mill-bandiera orizzontali-pod-autoscaler-sync-perjodu fil-maniġer tal-kontrollur.
L-iżball relattiv default huwa 10%.
Wara l-aħħar żieda fin-numru ta 'moduli, HPA jistenna li l-metriċi jistabbilizzaw fi żmien tliet minuti. Dan l-intervall huwa stabbilit mill-bandiera orizzontali-pod-autoscaler-upscale-dewmien.
Wara l-aħħar tnaqqis fin-numru ta 'moduli, l-HPA jistenna għal ħames minuti biex jistabbilizza. Dan l-intervall huwa stabbilit mill-bandiera orizzontali-pod-autoscaler-downscale-dewmien.
L-HPA taħdem l-aħjar b'oġġetti ta' skjerament aktar milli kontrolluri ta' replikazzjoni. Autoscaling orizzontali huwa inkompatibbli ma 'rolling update, li jimmanipula direttament il-kontrolluri tar-replikazzjoni. Bl-iskjerament, in-numru ta 'repliki jiddependi direttament fuq l-oġġetti tal-iskjerament.
Autoscaling vertikali tal-imżiewed
Vertical autoscaling (VPA) jalloka aktar (jew inqas) ħin jew memorja tas-CPU għall-imżiewed eżistenti. Adattat għal pods stateful jew mingħajr stat, iżda prinċipalment maħsuba għal servizzi stateful. Madankollu, tista' tuża wkoll VPA għal moduli mingħajr stat jekk ikollok bżonn taġġusta awtomatikament l-ammont ta' riżorsi allokati inizjalment.
VPA jirrispondi wkoll għal avvenimenti OOM (mingħajr memorja). Il-bidla fil-ħin tas-CPU u l-memorja teħtieġ li jerġgħu jibdew il-miżwed. Meta jerġa' jibda, il-VPA jirrispetta l-baġit ta' allokazzjoni (baġit tad-distribuzzjoni tal-imżiewed, PDB) biex jiggarantixxi n-numru minimu meħtieġ ta' moduli.
Tista' tissettja r-riżorsi minimi u massimi għal kull modulu. Għalhekk, tista 'tillimita l-ammont massimu ta' memorja allokata għal 8 GB. Dan huwa utli jekk in-nodi attwali definittivament ma jistgħux jallokaw aktar minn 8 GB ta 'memorja għal kull kontenitur. Speċifikazzjonijiet dettaljati u mekkaniżmu operattiv huma deskritti fi wiki uffiċjali tal-VPA.
Barra minn hekk, il-VPA għandu funzjoni ta 'rakkomandazzjoni interessanti (Rakkomandatur tal-VPA). Jissorvelja l-użu tar-riżorsi u l-avvenimenti OOM tal-moduli kollha biex jissuġġerixxi valuri ġodda ta 'memorja u ħin tas-CPU bbażati fuq algoritmu intelliġenti bbażat fuq metriċi storiċi. Hemm ukoll API li tieħu manku tal-pod u tirritorna l-valuri ssuġġeriti tar-riżorsi.
Ta 'min jinnota li VPA Recommender ma jsegwix ir-riżorsi "limitu". Dan jista 'jirriżulta li l-modulu jimmonopolizza r-riżorsi fi ħdan in-nodi. Huwa aħjar li tiffissa l-limitu fil-livell tal-ispazju tal-isem biex tevita memorja enormi jew konsum ta 'CPU.
Skema ta' operazzjoni VPA ta' livell għoli:
VPA jiċċekkja kontinwament il-valuri metriċi speċifikati waqt l-installazzjoni f'intervall default ta '10 sekondi.
Jekk jintlaħaq il-limitu speċifikat, il-VPA jipprova jibdel l-ammont allokat ta' riżorsi.
Il-VPA jaġġorna n-numru ta' riżorsi fi ħdan il-kontrollur tal-iskjerament/replikazzjoni.
Meta l-moduli jerġgħu jibdew, ir-riżorsi l-ġodda kollha jiġu applikati għall-istanzi maħluqa.
Il-VPA żżid l-ammont meħtieġ ta’ riżorsi
Jekk jogħġbok żomm f'moħħok il-punti li ġejjin meta tuża VPA:
L-iskala teħtieġ bidu mill-ġdid obbligatorju tal-pod. Dan huwa meħtieġ biex tiġi evitata operazzjoni instabbli wara li jsiru bidliet. Għall-affidabbiltà, il-moduli jerġgħu jibdew u mqassma fuq in-nodi bbażati fuq riżorsi allokati ġodda.
VPA u HPA għadhom mhumiex kompatibbli ma 'xulxin u ma jistgħux jaħdmu fuq l-istess imżiewed. Jekk qed tuża ż-żewġ mekkaniżmi tal-iskala fl-istess cluster, kun żgur li s-settings tiegħek jipprevjenuhom milli jiġu attivati fuq l-istess oġġetti.
Il-VPA tixgħel it-talbiet tal-kontejners għal riżorsi bbażati biss fuq l-użu tal-passat u attwali. Ma tistabbilixxix limiti għall-użu tar-riżorsi. Jista' jkun hemm problemi bl-applikazzjonijiet li ma jaħdmux sew u jibdew jieħdu aktar u aktar riżorsi, dan iwassal biex Kubernetes jitfi dan il-pod.
Il-VPA għadu fi stadju bikri ta' żvilupp. Kun ippreparat li s-sistema tista 'tgħaddi minn xi bidliet fil-futur qarib. Tista 'taqra dwar limitazzjonijiet magħrufa и pjanijiet ta’ żvilupp. Għalhekk, hemm pjanijiet biex tiġi implimentata l-operazzjoni konġunta ta’ VPA u HPA, kif ukoll l-iskjerament ta’ moduli flimkien ma’ politika ta’ awtoskala vertikali għalihom (pereżempju, tikketta speċjali ‘jeħtieġ VPA’).
Autoscaling cluster Kubernetes
Cluster Autoscaler (CA) jibdel in-numru ta 'nodi bbażat fuq in-numru ta' stennija miżwed. Is-sistema tiċċekkja perjodikament għal moduli pendenti - u żżid id-daqs tal-cluster jekk ikunu meħtieġa aktar riżorsi u jekk il-cluster ma jaqbiżx il-limiti stabbiliti. Is-CA tikkomunika mal-fornitur tas-servizz tal-cloud, titlob nodi addizzjonali mingħandu, jew tirrilaxxa dawk inattivi. L-ewwel verżjoni ġeneralment disponibbli ta 'CA ġiet introdotta f'Kubernetes 1.8.
Skema ta' livell għoli ta' operazzjoni SA:
CA jiċċekkja għal moduli pendenti f'intervall default ta '10 sekondi.
Jekk pods wieħed jew aktar huma fi stat standby minħabba li l-cluster m'għandux biżżejjed riżorsi disponibbli biex jallokahom, jipprova jipprovdi nodu addizzjonali wieħed jew aktar.
Meta l-fornitur tas-servizz tal-cloud jalloka n-nodu meħtieġ, jingħaqad mal-cluster u jkun lest biex iservi l-imżiewed.
L-iskeder Kubernetes iqassam imżiewed pendenti lin-nodu l-ġdid. Jekk wara dan xi moduli xorta jibqgħu fi stat ta 'stennija, il-proċess jiġi ripetut u nodi ġodda jiġu miżjuda mal-cluster.
Proviżjoni awtomatika ta 'cluster nodes fil-cloud
Ikkunsidra dan li ġej meta tuża CA:
CA jiżgura li l-imżiewed kollha fil-cluster ikollhom spazju biex jaħdmu, irrispettivament mit-tagħbija tas-CPU. Jipprova wkoll jiżgura li ma jkunx hemm nodi mhux meħtieġa fil-cluster.
CA tirreġistra l-ħtieġa li tiskala wara madwar 30 sekonda.
Ladarba node ma jkunx aktar meħtieġ, is-CA default tistenna 10 minuti qabel ma tiskala s-sistema.
Is-sistema ta 'autoscaling għandha l-kunċett ta' expanders. Dawn huma strateġiji differenti għall-għażla ta 'grupp ta' nodi li magħhom se jiġu miżjuda nodi ġodda.
Uża l-għażla b'mod responsabbli cluster-autoscaler.kubernetes.io/safe-to-evict (veru). Jekk tinstalla ħafna imżiewed, jew jekk ħafna minnhom huma mferrxa fuq in-nodi kollha, fil-biċċa l-kbira titlef il-kapaċità li tiskala l-cluster.
Użu PodDisruptionBudgetsbiex tipprevjeni li l-imżiewed jitħassru, li jistgħu jikkawżaw li partijiet mill-applikazzjoni tiegħek ifallu kompletament.
Kif l-awtoscalers ta' Kubernetes jinteraġixxu ma' xulxin
Għal armonija perfetta, l-autoscaling għandu jiġi applikat kemm fil-livell tal-pod (HPA/VPA) kif ukoll fil-livell tal-cluster. Huma jinteraġixxu ma 'xulxin relattivament sempliċi:
L-HPAs jew il-VPAs jaġġornaw ir-repliki tal-miżwed jew ir-riżorsi allokati lill-miżwed eżistenti.
Jekk ma jkunx hemm biżżejjed nodi għall-iskala ppjanata, is-CA tinnota l-preżenza ta 'miżwed fi stat ta' stennija.
Is-CA talloka nodi ġodda.
Il-moduli huma mqassma għal nodi ġodda.
Sistema ta' skala kollaborattiva ta' Kubernetes
Żbalji komuni fl-autoscaling ta' Kubernetes
Hemm diversi problemi komuni li jiltaqgħu magħhom id-devops meta jippruvaw jimplimentaw awtoscaling.
HPA u VPA jiddependu fuq metriċi u xi dejta storika. Jekk jiġu allokati riżorsi insuffiċjenti, il-moduli jiġu minimizzati u ma jkunux jistgħu jiġġeneraw metriċi. F'dan il-każ, l-autoscaling qatt mhu se jiġri.
L-operazzjoni tal-iskala nnifisha hija sensittiva għall-ħin. Irridu li l-moduli u l-cluster jiżkalaw malajr - qabel ma l-utenti jinnutaw xi problemi jew fallimenti. Għalhekk, għandu jittieħed kont tal-ħin medju tal-iskala għall-imżiewed u r-raggruppament.
Inqas minn 2 sekondi. Il-miżwed huma maħluqa u jidħlu fl-istat standby.
Inqas minn 2 sekondi. Is-CA tara l-moduli ta' stennija u tagħmel sejħiet biex tipprovdi n-nodi.
10 minuti. Il-fornitur tas-sħab jalloka nodi. K8s jistenna sakemm ikunu lesti. Il-ħin ta 'stennija jiddependi fuq diversi fatturi, bħal dewmien tal-bejjiegħ, dewmien tal-OS, u għodod ta' appoġġ.
Tħawwadx il-mekkaniżmi ta' skalar tal-fornituri tal-cloud mal-CA tagħna. Dan tal-aħħar jaħdem ġewwa cluster Kubernetes, filwaqt li l-magna tal-fornitur tal-cloud topera fuq bażi ta 'distribuzzjoni ta' nodi. Ma jafx x'inhu għaddej bil-miżwed jew l-applikazzjoni tiegħek. Dawn is-sistemi joperaw b'mod parallel.
Kif timmaniġġja l-iskala f'Kubernetes
Kubernetes huwa għodda ta 'ġestjoni u orkestrazzjoni tar-riżorsi. L-operazzjonijiet għall-ġestjoni tal-pods u r-riżorsi tal-clusters huma pass ewlieni fil-ħakma ta’ Kubernetes.
Ifhem il-loġika tal-iskalabbiltà tal-pods filwaqt li tqis HPA u VPA.
CA għandu jintuża biss jekk għandek fehim tajjeb tal-ħtiġijiet tal-imżiewed u l-kontenituri tiegħek.
Biex tikkonfigura cluster bl-aħjar mod, trid tifhem kif is-sistemi ta' skala differenti jaħdmu flimkien.
Meta tistma l-ħin tal-iskala, żomm f'moħħok ix-xenarji tal-agħar u tal-aħjar każ.