
Kubernetesi tĂ€ielikuks valdamiseks on oluline tundma Ă”ppida erinevaid klastrite ressursside skaleerimise meetodeid: on see ĂŒks Kubernetes'i peamisi ĂŒlesandeid. Oleme koostanud kĂ”rgetasemelise ĂŒlevaate horisontaalsest ja vertikaalsest automaatse skaleerimisest ning klastrite suuruse muutmisest, samuti soovitusi nende tĂ”husaks kasutamiseks.
Artikkel tÔlkis meeskond, kes rakendas automaatset skaleerimist .
Miks on oluline mÔelda skaleerimisele
â ressursside haldamise ja orkestreerimise tööriist. Loomulikult on tore katsetada vĂ”imalusi juurutamiseks, jĂ€lgimiseks ja pod'i haldamiseks (podâi moodul â konteinerite rĂŒhm, mida kĂ€itatakse vastuseks pĂ€ringule).
Siiski tuleb mĂ”elda ka jĂ€rgmistele kĂŒsimustele:
- Kuidas skaleerida mooduleid ja rakendusi?
- Kuidas hoida konteinereid töövalmis ja tÔhusana?
- Kuidas reageerida pidevatele muudatustele koodis ja kasutajate koormustes?
Kubernetes'i klastrite seadistamine ressursside ja jĂ”udluse tasakaalu saavutamiseks vĂ”ib olla keeruline ĂŒlesanne ning see nĂ”uab ekspertteadmisi Kubernetes'i sisemisest toimimisest. Teie rakenduste vĂ”i teenuste koormus vĂ”ib pĂ€eva jooksul vĂ”i isegi tunni jooksul kĂ”ikuda, seega on tasakaalustamist parem pidada pidevaks protsessiks.
Kubernetes'i automaatse skaleerimise tasemed
TÔhus automaatne skaleerimine nÔuab koordineerimist kahe tasandi vahel:
- Pod'ide tase, mis hÔlmab horisontaalset (Horisontaalne Pod Automaatne Skaleerija, HPA) ja vertikaalset skaleerimist (Vertikaalne Pod Automaatne Skaleerija, VPA). See on olemasolevate ressursside skaleerimine teie konteinereid.
- Klastri tase, mida haldab klastrite automaatse skaleerimise sĂŒsteem (Klastri Automaatne Skaleerija, CA), mis suurendab vĂ”i vĂ€hendab klastri sees olevate sĂ”lmede arvu.
Horisontaalne automaatse skaleerimise moodul (HPA)
Nimi ĂŒtleb kĂ”ik, HPA skaleerib pod'ide replikate arvu. Enamik DevOps'dest kasutab replikate arvu muutmiseks protsessori ja mĂ€lu koormust. Siiski vĂ”ib sĂŒsteemi skaleerida ka nende vĂ”i isegi .
HPA töö kÔrgetasemeline skeem:
- HPA jÀlgib pidevalt paigaldamisel mÀÀratud meetrikaid, mille vaikeintervall on 30 sekundit.
- HPA proovib suurendada moodulite arvu, kui on saavutatud mÀÀratud lÀvivÀÀrtus.
- HPA vÀrskendab koopiate arvu juurutamis-/koopiajuhis.
- Juurutus-/koopiajuhis seejÀrel juurutab kÔik vajalikud tÀiendavad moodulid.

HPA kÀivitab moodulite juurutusprotsessi, kui meetrika lÀvivÀÀrtus on saavutatud.
HPA kasutamisel pidage meeles jÀrgmist:
- HPA vaikimisi kontrollimise vahemaa on 30 sekundit. See seadistatakse lipuga. horizontal-pod-autoscaler-sync-period juhija sĂŒstemaatikas.
- Vaikimisi suhteline viga on 10%.
- PĂ€rast viime suurendamist HPA ootab meetrikate stabiliseerumist kolm minutit. See vahemaa seadistatakse lipuga. horizontal-pod-autoscaler-upscale-delay.
- PÀrast viimast vÀhendamist HPA ootab stabiliseerumist viie minuti jooksul. See vahemaa seadistatakse lipuga. horizontal-pod-autoscaler-downscale-delay.
- HPA töötab kĂ”ige paremini juurutusobjektidega, mitte koopiamanipulaatoritega. Horisontaalne automaatne skaleerimine ei ĂŒhildu jĂ€rjestikuste uuendustega (rolling update), mis manipuleerib otseselt koopiamanipulaatoritega. Juhtumisel sĂ”ltub koopiate arv otseselt juurutusobjektidest.
Podâide vertikaalne automaatne skaleerimine
Vertikaalne automaatne skaleerimine (VPA) mÀÀrab olemasolevatele podâidele rohkem (vĂ”i vĂ€hem) protsessorit vĂ”i mĂ€lu. Sobib olekuga (stateful) vĂ”i mitteolekuga (stateless) podâidele, kuid on peamiselt mĂ”eldud stateful-teenustele. Siiski vĂ”ite VPA-d rakendada ka olekuta moodulitele, kui on vajalik algse ressursside jaotuse automaatne kohandamine.
VPA reageerib ka OOM (out of memory, mĂ€lupuudus) juhtumitele. Protsessorit ja mĂ€lu saab muuta ainult podâide taaskĂ€ivitamisega. TaaskĂ€ivitamisel jĂ€rgib VPA jaotuse eelarvet (), et tagada minimaalne moodulite arv.
Saate mÀÀrata iga mooduli jaoks minimaalsete ja maksimaalsete ressursihulkade. NĂ€iteks saate piirata eraldatava mĂ€lu maksimumi 8 GB. See on kasulik, kui praegused sĂ”lmed ei suuda eraldada rohkem kui 8 GB mĂ€lu konteinerile. Ăksikasjalikud spetsifikatsioonid ja toimimismehhanism on kirjeldatud .
Lisaks on VPA-l huvitav soovituste funktsioon (VPA Recommender). See jĂ€lgib moodulite ressursikasutust ja OOM-sĂŒndmusi, et pakkuda uusi mĂ€lu ja protsessori ajakavasid, tuginedes intelligentses algoritmil, mis arvestab ajaloolisi mÔÔdikuid. Seal on ka API, mis vĂ”tab vastu pod'i deskriptiivi ja tagastab soovitatud ressursihinnad.
Tasub mĂ€rkida, et VPA Recommender ei jĂ€lgi âpiiranguâ ressursse. See vĂ”ib viia olukorrani, kus moodul monopoliseerib ressursid sĂ”lmede sees. Parim on seada piirang tasemel nimespetsiifiliselt, et vĂ€ltida tohutut mĂ€lu vĂ”i protsessorikasutust.
VPA toimimise ĂŒlevaade:
- VPA kontrollib pidevalt installimise ajal saadud mÔÔdikute vÀÀrtusi, vaikimisi 10-sekundiliste intervallidega.
- Kui saavutatakse mÀÀratud lĂ€vi, pĂŒĂŒab VPA muuta eraldatud ressursihulka.
- VPA uuendab ressursihulka juurutamise/kopeerimise kontrolleris.
- Moodulite taaskÀivitamisel rakendatakse kÔik uued ressursid loodud instantsidele.

VPA lisab vajaliku hulk ressursse
Arvestage VPA kasutamisel jÀrgmiste punktidega:
- Mastaapimine nÔuab pod'i kohustuslikku taaskÀivitamist. See on vajalik, et vÀltida ebastabiilset toimimist pÀrast muudatuste tegemist. UsaldusvÀÀrsuse tÔttu taaskÀivitavad moodulid ja jaotavad uued ressursid sÔlmede vahel.
- VPA ja HPA pole hetkel ĂŒksteisega ĂŒhilduvad ja ei saa töötada samades pod'ides. Kui kasutate ĂŒhes klastris mĂ”lemaid mastaapimise mehhanisme, veenduge, et seadistused ei vĂ”imalda neil aktiveeruda samade objektide peal.
- VPA kohandab konteinerite ressursikĆĄid seoses ainult nende varasema ja praeguse kasutamisega. Ta ei sea ressursikasutusele piire. VĂ”ivad tekkida probleemid rakenduste ebakorrektses töötamises, mis hakkavad haarama ĂŒha rohkem ressursse, mis toob kaasa selle, et Kubernetes keelab antud podi.
- VPA on endiselt arenduse varases staadiumis. Ole valmis, et sĂŒsteem vĂ”ib lĂ€hitulevikus mĂ”ningaid muutusi kogeda. Saate lugeda ja . Nii on plaanis ellu viia VPA ja HPA koostööd ning ka moodulite kĂ€ivitamine koos nende jaoks mĂ”eldud vertikaalse automaatmÔÔtmise poliitikaga (nĂ€iteks spetsiaalne silt ârequires VPAâ).
Kubernetes klastrite automaatmÔÔtmine
Klastri automaatmÔÔtmine (Cluster Autoscaler, CA) muudab sĂ”lmede arvu, lĂ€htudes ootel olevate podi moodulite arvust. SĂŒsteem kontrollib regulaarselt, kas on ootavaid mooduleid â ja suurendab klastri mahtu, kui on vaja rohkem ressursse ja kui klaster ei ĂŒleta seatud piire. CA suhtleb pilveteenuse pakkujaga, kĂŒsib temalt tĂ€iendavaid sĂ”lmi vĂ”i vabastab inaktiivsed. CA esimene avalik versioon esitati Kubernetes 1.8.
CA töö kÔrgema taseme skeem:
- CA kontrollib iga 10 sekundi jÀrel, kas ootel on mooduleid.
- Kui ĂŒks vĂ”i mitu moodulit on ootel, kuna klastris ei ole piisavalt vabu ressursse nende jaotamiseks, ĂŒritab ta ette valmistada ĂŒhe vĂ”i mitu tĂ€iendavat sĂ”lme.
- Kui pilveteenuse pakkuja eraldab vajaliku sÔlme, liitub see klassiga ja on valmis teenindama podi mooduleid.
- Kubernetes'i planeerija jaotab ootel moodulid uuele sÔlmele. Kui pÀrast seda jÀÀvad mÔned moodulid ikka ootele, kordub protsess ja klastrisse lisatakse uusi sÔlmi.

Automaatne sÔlmede jaotamine pilves
Kaasake jÀrgmised punktid CA kasutamisel:
- CA tagab, et kĂ”igil klastris olevatel moodulitel on kĂ€ivitamiseks ruumi, sĂ”ltumata protsessori koormuse tasemest. Lisaks ĂŒritab ta tagada, et klastris ei oleks ebavajalikke sĂ”lmi.
- CA registreerib vajaduse skaleerimise jÀrele umbes 30 sekundi pÀrast.
- Kui sĂ”lm enam ei ole vajalik, ootab CA vaikimisi 10 minutit, enne kui sĂŒsteemi skaleerib.
- Automaatse skaleerimise sĂŒsteemis on olemas laiendajad (expanders). Need on erinevad strateegiad, et valida sĂ”lmede grupp, kuhu uusi sĂ”lmi lisada.
- Kohustuste kohaselt rakendage valikut cluster-autoscaler.kubernetes.io/safe-to-evict (true). Kui seadistate palju podâe vĂ”i kui paljusid neist hajutatakse kĂ”ikide sĂ”lmede vahel, kaotate suuresti vĂ”imaluse klastrit vĂ€hendada.
- Kasutage , et vĂ€ltida podâide eemaldamist, mis vĂ”ib tĂ€ielikult hĂ€irida teie rakenduse osa.
Kuidas Kubernetes'i automaatne skaleerimine omavahel suhtleb
Ideaalne harmoonia saavutamiseks tuleks rakendada automaatset skaleerimist nii podâide tasemel (HPA/VPA) kui ka klastritasemel. Need suhtlevad omavahel suhteliselt lihtsalt:
- HPA vĂ”i VPA uuendavad podâide koopiaid vĂ”i olemasolevatele podâidele eraldatud ressursse.
- Kui kavandatud skaleerimiseks pole piisavalt sĂ”lmi, mĂ€rkab CA ooteolekus podâe.
- CA eraldab uus sÔlmed.
- Moodulid jaotatakse uutele sÔlmedele.

Kubernetes'i skaleerimisĂŒsteemide ĂŒhisne sĂŒsteem
TĂŒĂŒpilised vead Kubernetes'i automaatse skaleerimise puhul
On mitmeid tĂŒĂŒpilisi probleeme, millega devops'id silmitsi seisavad, kui nad pĂŒĂŒavad automaatset skaleerimist rakendada.
HPA ja VPA sÔltuvad mÔÔdikutest ja teatud ajalooandmetest. Kui ressursse on eraldatud liiga vÀhe, volditakse moodulid kokku ja nad ei suuda genereerida mÔÔdikuid. Sellisel juhul ei toimu automaatset skaleerimist kunagi.
Skaleerimisoperatsioon ise on ajalooliselt oluline. Soovime, et moodulid ja klaster skaleeruksid kiiresti â enne, kui kasutajad mĂ€rkavad mingeid probleeme ja tĂ”rkeid. SeetĂ”ttu tuleks arvesse vĂ”tta podâide ja klastrite keskmist skaleerimisaega.
Ideaalne stsenaarium â 4 minutit:
- 30 sekundit. SihtmÔÔdikute uuendamine: 30â60 sekundit.
- 30 sekundit. HPA kontrollib mÔÔdikute vÀÀrtusi: 30 sekundit.
- Alla 2 sekundi. Pod moodulid loodud ja liiguvad ooteolekusse: 1 sekund.
- Alla 2 sekundi. CA nÀeb ooteolekus mooduleid ja saadab kutsed sÔlmede ettevalmistamiseks: 1 sekund.
- 3 minutit. Pilveteenuse pakkuja eraldab sÔlmed. K8s ootab, kuni need on valmis: kuni 10 minutit (sÔltub mitmest tegurist).
Halvim (reaalsem) stsenaarium â 12 minutit:
- 30 sekundit. SihtmÀrkide uuendamine.
- 30 sekundit. HPA kontrollib mÔÔdikute vÀÀrtusi.
- Alla 2 sekundi. Pod-moodulid on loodud ja liiguvad ootereĆŸiimi.
- Alla 2 sekundi. CA nĂ€eb ootereĆŸiimis mooduleid ja saadab sĂ”lmede ettevalmistamiseks kutseid.
- 10 minutit. Pilveteenuse pakkuja eraldab sĂ”lmed. K8s ootab, kuni need on valmis. Ooteaeg sĂ”ltub mitmest tegurist, nĂ€iteks teenusepakkuja viivitusest, opsĂŒsteemi viivitusest, abivahendite toimimisest.
Ărge segage pilveteenuse pakkujate skaleerimismehhanisme meie CA-ga. Viimane töötab Kubernetes'i klastris, samas kui pilveteenuse mehhanism töötab sĂ”lmede jaotamise alusel. Ta ei tea, mis toimub teie pod'ide vĂ”i rakendusega. Need sĂŒsteemid töötavad paralleelselt.
Kuidas hallata skaleerimist Kubernetes'is
- Kubernetes on ressursside haldamise ja orkestreerimise tööriist. Pod'ide ja klastrite ressursside haldamise operatsioonid on Kubernetes'e Ôppimise pÔhialus.
- Omastage pod'ide skaleeritavuse loogika HPA ja VPA arvestades.
- CA-d tasub kasutada ainult siis, kui mÔistate hÀsti oma pod'ide ja konteinerite vajadusi.
- Klastri optimaalseks seadistamiseks tuleb mĂ”ista, kuidas erinevad skaleerimissĂŒsteemid koos töötavad.
- Skaleerimise aja hindamisel pidage meeles halvimat ja parimat stsenaariumi.
Allikas: habr.com
