Kolm automaatse skaleerimise taset Kuberneteses: kuidas neid efektiivselt kasutada

Kolm automaatse skaleerimise taset Kuberneteses: kuidas neid efektiivselt kasutada
Kubernetesi tĂ€ielikuks mĂ”istmiseks tuleb teada erinevaid meetodeid klastrite ressursside skaleerimiseks: sĂŒsteemi arendajate sĂ”nul,on see ĂŒks Kubernetes'e peamisi ĂŒlesandeid. Oleme valmistanud ette kĂ”rgetasemelise ĂŒlevaate horisontaalsest ja vertikaalsest automaatse skaleerimise ning klastrite suurendamise mehhanismidest, samuti soovitusi, kuidas neid tĂ”husalt kasutada.

Artiklit Kubernetesi automaatse skaleerimise 101: klastrite automaatne skaleerija, horisontaalne skaleerija ja vertikaalne pod'i skaleerija tÔlkis meeskond, kes rakendas automaatse skaleerimise Mail.ru Kubernetes aaS.

Miks on oluline mÔelda skaleerimisele

Kubernetes — vahend ressursside haldamiseks ja orkestreerimiseks. Muidugi on tore mĂ€ngida lahedate juurutamise, jĂ€lgimise ja pod'ide (pod on konteinerite grupp, mis kĂ€ivitatakse vastusena pĂ€ringule) haldamise funktsioonidega.

Kuid tuleks mĂ”elda ka sellistele kĂŒsimustele:

  1. Kuidas skaleerida mooduleid ja rakendusi?
  2. Kuidas hoida anumaid töös ja efektiivsetena?
  3. Kuidas reageerida pidevatele muudatustele koodis ja kasutajate koormustes?

Kubernetesi klastrite seadistamine ressursside ja jĂ”udluse tasakaalustamiseks vĂ”ib olla keeruline ĂŒlesanne, mis nĂ”uab sĂŒgavaid teadmisi Kubernetesest. Teie rakenduse vĂ”i teenuste koormus vĂ”ib pĂ€eva vĂ”i isegi tunni jooksul kĂ”ikuda, seetĂ”ttu tuleks tasakaalustamist kĂ€sitleda kui pidevat protsessi.

Kubernetes automaatse muutmise tasemed

TÔhus automaatne muutmine nÔuab koordineerimist kahe tasandi vahel:

  1. Podide tase, mis hÔlmab horisontaalset (Horizontal Pod Autoscaler, HPA) ja vertikaalset automaatset muutmist (Vertical Pod Autoscaler, VPA). See on olemasolevate ressursside suurendamine teie konteinerite jaoks.
  2. Klastri tase, mida haldab klastrite automaatse muutmise sĂŒsteem (Cluster Autoscaler, CA), mis suurendab vĂ”i vĂ€hendab klastris olevate sĂ”lmede arvu.

Horisontaalne automaatse muutmise moodul (HPA)

Nagu nimigi ĂŒtleb, skaleerib HPA podide replikate arvu. Replikate arvu muutmise kĂ”ige levinumateks kĂ€ivitajateks on protsessori ja mĂ€lu koormus. Kuid sĂŒsteemi saab skaleerida ka pĂ”hinedes kasutaja mÀÀratud metrikatele, nende kombinatsioonile vĂ”i isegi vĂ€lised mÔÔdikud.

HPA töö kÔrge taseme skeem:

  1. HPA kontrollib pidevalt installimisel mÀÀratud mÔÔdikute vÀÀrtusi vaikimisi 30-sekundiliste intervallidega.
  2. HPA pĂŒĂŒab suurendada moodulite arvu, kui saavutatakse mÀÀratud lĂ€vend.
  3. HPA uuendab replikate arvu juurutamise/replikatsiooni kontrollija sees.
  4. Juurutamise/replikatsiooni kontrollija seejÀrel juurutab kÔik vajalikud tÀiendavad moodulid.

Kolm automaatse skaleerimise taset Kuberneteses: kuidas neid efektiivselt kasutada
HPA kÀivitab moodulite juurutamisprotsessi, kui mÔÔdikute lÀvend saavutatakse.

HPA kasutamisel arvestage jÀrgmist:

  • HPA vaikimisi kontrollimise intervall on 30 sekundit. See on mÀÀratud lipuga horizontal-pod-autoscaler-sync-period kontrolleri halduris.
  • Vaikimisi suhteline viga on 10%.
  • PĂ€rast viimast moodulite arvu suurendamist ootab HPA mÔÔdikute stabiliseerumist kolme minuti jooksul. See intervall on mÀÀratud lipuga horizontal-pod-autoscaler-upscale-delay.
  • PĂ€rast viimast moodulite arvu vĂ€hendamist ootab HPA stabiliseerumist viie minuti jooksul. See intervall on mÀÀratud lipuga horizontal-pod-autoscaler-downscale-delay.
  • HPA töötab kĂ”ige paremini juurutusobjektidega, mitte replikatsiooni kontrolleritega. Horisontaalne automaatskalaarimine ei ĂŒhildu jĂ€rkjĂ€rgulise vĂ€rskendamisega (rolling update), mis manipuleerib otse replikatsiooni kontrolleritega. Juhtimisel sĂ”ltub replikate arvu vahetus otse juurutusobjektidest.

Pod'ide vertikaalne automaatskalaarimine

Vertikaalne automaatskalaarimine (VPA) eraldab rohkem (vÔi vÀhem) protsessori aega vÔi mÀlu olemasolevatele pod'idele. Sobib nii olekut sÀilitavatele (stateful) kui ka olekuta (stateless) pod'idele, kuid on peamiselt mÔeldud stateful teenustele. Siiski vÔite VPA-d rakendada ka olekuta moodulitele, kui on vaja automaatselt kohandada algselt eraldatud ressursside mahtu.

VPA reageerib ka OOM (out of memory, mĂ€lu puudus) sĂŒndmustele. Protsessori aja ja mĂ€lu mahu muutmiseks on vajalik pod'ide taaskĂ€ivitamine. TaaskĂ€ivitamisel jĂ€rgib VPA jaotuse eelarvet (pods distribution budget, PDB), et tagada minimaalne vajalik moodulite arv.

Saate iga mooduli jaoks mÀÀrata ressursi minimaalset ja maksimaalset mahtu. NĂ€iteks on vĂ”imalik piirata eraldatud mĂ€lu maksimaalne maht 8 GB piirini. See on kasulik, kui praegused sĂ”lmed lihtsalt ei saa eraldada rohkem kui 8 GB mĂ€lu konteinerile. Üksikasjalikud spetsifikatsioonid ja töömehhanism on kirjeldatud ametlikus VPA wikisse.

Lisaks on VPA-l huvitav soovituste funktsioon (VPA Recommender). See jĂ€lgib ressursside kasutamist ja OOM-i sĂŒndmusi kĂ”igis moodulites, et pakkuda uusi mĂ€lu ja protsessori ajakulu vÀÀrtusi, pĂ”hinedes intelligentsele algoritmile, mis arvestab ajaloolisi mÔÔdikuid. Samuti on saadaval API, mis vĂ”tab vastu podi deskriptorit ja tagastab soovitatud ressursi vÀÀrtused.

MĂ€rkimisvÀÀrne on see, et VPA Recommender ei jĂ€lgi „piirangut” ressurssides. See vĂ”ib pĂ”hjustada mooduli ressursside monopoliseerimise sĂ”lmede sees. Paremini on seada piirvÀÀrtus nimede tasemel, et vĂ€ltida tohutut mĂ€lu vĂ”i protsessori ajakulu.

VPA töö kÔrgtaseme skeem:

  1. VPA kontrollib pidevalt installimisel mÀÀratud mÔÔdikute vÀÀrtusi, vaikimisi iga 10 sekundi jÀrel.
  2. Kui mÀÀratud lĂ€vi on saavutatud, ĂŒritab VPA mÀÀratud ressursse muuta.
  3. VPA vÀrskendab ressursi arvu juurutamise/replikatsiooni kontrolleris.
  4. Modulite taaskÀivitamisel rakendatakse kÔiki uusi ressursse loodud instantsidesse.

Kolm automaatse skaleerimise taset Kuberneteses: kuidas neid efektiivselt kasutada
VPA lisab vajalikud ressursid.

VPA kasutamisel arvestage jÀrgmisega:

  • Suurendamine nĂ”uab pod'i kohustuslikku taaskĂ€ivitamist. See on vajalik, et vĂ€ltida kohanduste jĂ€rgselt ebastabiilset tööd. UsaldusvÀÀrsuse tagamiseks taaskĂ€ivitavad moodulid ja jaotavad node'ide vahel vastavalt uutele mÀÀratud ressurssidele.
  • VPA ja HPA ei ole praegu omavahel ĂŒhilduvad ega saa töötada sama pod'i peal. Kui rakendate ĂŒhes klastris mĂ”lemat skaleerimismehhanismi, veenduge, et seaded ei vĂ”imaldaks neil aktiveeruda sama objekti peal.
  • VPA kohandab konteinerite ressursikĂŒsitlusi, tuginedes ainult nende varasemale ja praegusele kasutamisele. Ta ei sea ressursikasutuse piire. See vĂ”ib pĂ”hjustada probleeme rakenduste vale toimimisega, mis hakkavad tarbima jĂ€rjest rohkem ressursse, mis toob kaasa selle, et Kubernetes sulgeb vastava podi.
  • VPA on praegu arenduse varajases staadiumis. Olge valmis, et lĂ€hitulevikus vĂ”ib sĂŒsteem kogeda teatud muudatusi. Lisainfot leiate tuntud piirangute ja arendusplaanide. NĂ€iteks on plaanis rakendada VPA ja HPA koostööd, samuti moodulite juurutamine koos nende jaoks vĂ€ljapakutud vertikaalse automaatse suurendamise poliitikaga (nt eriline silt 'requires VPA').

Kubernetes'e klastrite automaatne suurendamine

Klastri automaatne skaleerimine (Cluster Autoscaler, CA) muudab sĂ”lmede arvu sĂ”ltuvalt ootel olevate pod-modulite arvust. SĂŒsteem kontrollib perioodiliselt ootel olevaid mooduleid ja suurendab klastrite suurust, kui on rohkem ressursse vaja ja kui klass ei ĂŒleta seatud limiite. CA suhtleb pilveteenuse pakkujaga, taotleb tĂ€iendavate sĂ”lmede saamist vĂ”i vabastab inaktiivseid. CA esimene avalik versioon esitati Kubernetes 1.8.

CA töö kÔrgema taseme skeem:

  1. CA kontrollib ootel olevaid mooduleid vaikimisi intervalliga 10 sekundit.
  2. Kui ĂŒks vĂ”i mitu moodulit on ootel, sest klastris pole nende jagamiseks piisavalt ressursse, pĂŒĂŒdleb see ĂŒhe vĂ”i mitme tĂ€iendava sĂ”lme ettevalmistamise poole.
  3. Kui pilveteenuse pakkuja eraldab vajaliku sÔlme, liitub see klassiga ja on valmis teenindama pod-mooduleid.
  4. Kubernetesi planeerija jaotab ootavad moodulid uuele sĂ”lmele. Kui mĂ”ned moodulid jÀÀvad pĂ€rast seda siiski ootele, kordub protsess – ja klastrisse lisatakse uusi sĂ”lmi.

Kolm automaatse skaleerimise taset Kuberneteses: kuidas neid efektiivselt kasutada
Automaatne klastrisÔlmede mÀÀramine pilves

Arvestage jÀrgnevaga, kui kasutate CA:

  • CA tagab, et kĂ”igil klastris olevatel moodulitel on kĂ€ivitamiseks piisavalt ruumi, sĂ”ltumata protsessori koormusest. Lisaks pĂŒĂŒab see tagada, et klastris ei oleks tarbetuid sĂ”lmi.
  • CA registreerib skalaarimise vajaduse umbes 30 sekundi pĂ€rast.
  • PĂ€rast sĂ”lme muutumist tarbetuks ootab CA vaikimisi 10 minutit, enne kui sĂŒsteemi skaleerib.
  • Automaatse skaleerimise sĂŒsteemis on olemas laienajad (expanders). Need on erinevad strateegiad uute sĂ”lmede rĂŒhma valimiseks, kuhu neid lisatakse.
  • Kasuta vastutustundlikult valikut cluster-autoscaler.kubernetes.io/safe-to-evict (true). Kui seadistate palju pod’e vĂ”i kui need on laiali kĂ”ikides sĂ”lmedes, kaotate ulatuslikult vĂ”imaluse klastrit vĂ€hendada.
  • Kasutage PodDisruptionBudgets, et vĂ€ltida pod’ide eemaldamist, mis vĂ”ib viia teie rakenduse tĂ€ieliku töökatkestuseni.

Kuidas Kubernetes’i automaatsustamissĂŒsteemid omavahel suhtlevad

Ideaalse tasakaalu saavutamiseks tuleks rakendada automaatsustamist nii pod’ide (HPA/VPA) kui ka klastri tasemel. Need suhtlevad omavahel suhteliselt lihtsalt:

  1. HPA vĂ”i VPA uuendavad pod’ide replikaid vĂ”i olemasolevatele pod’idele eraldatud ressursse.
  2. Kui planeeritud skaleerimiseks jÀÀb sĂ”lmedest puudu, tuvastab CA ootel olevaid pod’e.
  3. CA eraldab uusi sÔlmi.
  4. Modulid jaotatakse uutele sÔlmedele.

Kolm automaatse skaleerimise taset Kuberneteses: kuidas neid efektiivselt kasutada
Kubernetes’i skaleerimise sĂŒsteemide koostöö

TĂŒĂŒpilised vead Kubernetes’i automaatsustamisel

On mitmeid tĂŒĂŒpilisi probleeme, millega DevOps-töötajad silmitsi seisavad, kui nad proovivad automaatsustamist rakendada.

HPA ja VPA sÔltuvad mÔÔdikutest ja mÔningatest ajaloolistest andmetest. Kui ressursse on eraldatud liiga vÀhe, siis moodulid volditakse kokku ja ei suuda mÔÔdikut genereerida. Sellisel juhul ei toimu automaatsustamine kunagi.

Skaleerimisprotsess on ajasensitiivne. Soovime, et moodulid ja klaster skaleeruks kiiresti — enne, kui kasutajad mĂ€rkavad probleeme ja tĂ”rkeid. SeetĂ”ttu tuleks arvesse vĂ”tta pod'ide ja klastrite keskmist skaleerimisaega.

Ideaalne stsenaarium — 4 minutit:

  1. 30 sekundit. Sihtmetrikate uuendamine: 30−60 sekundit.
  2. 30 sekundit. HPA kontrollib metrikate vÀÀrtusi: 30 sekundit.
  3. Alla 2 sekundi. Pod moodulid on loodud ja lÀhevad ooteseisundisse: 1 sekund.
  4. Alla 2 sekundi. CA nÀeb ooteseisundis mooduleid ja saadab kutseid sÔlmede ettevalmistamiseks: 1 sekund.
  5. 3 minutit. Pilveteenus omab sÔlmi. K8s ootab, kuni need on valmis: kuni 10 minutit (sÔltub mitmest tegurist).

Halvim (reaalsem) stsenaarium — 12 minutit:

  1. 30 sekundit. Sihtmetrikate uuendamine.
  2. 30 sekundit. HPA kontrollib metrikate vÀÀrtusi.
  3. Alla 2 sekundi. Pod moodulid on loodud ja lÀhevad ooteseisundisse.
  4. Alla 2 sekundi. CA nÀeb ooteseisundis mooduleid ja saadab kutseid sÔlmede ettevalmistamiseks.
  5. 10 minutit. Pilveteenuse pakkuja eraldab sĂ”lmed. K8s ootab, kuni need on valmis. Ooteaeg sĂ”ltub mitmest tegurist, nĂ€iteks pakkuja viivitusest, operatsioonisĂŒsteemi viivitusest ja abivahendite toimimisest.

Ärge segage pilveteenuse pakkujate skaleerimise mehhanisme meie CA-ga. Viimane töötab Kubernetes'i klastris, samas kui pilveteenuse pakkuja mehhanism töötab sĂ”lmede jaotamise alusel. See ei tea, mis teie pod'ide vĂ”i rakendusega toimub. Need sĂŒsteemid töötavad paralleelselt.

Kuidas hallata skaleerimist Kubernetes's

  1. Kubernetes on ressursside haldamise ja orkestreerimise tööriist. Pod'ide ja klastrite ressursside haldamise toimingud on Kubernetes'e Ôppimise peamine verstapost.
  2. MÔistke pod'ide skaleeritavuse loogikat, arvestades HPA-d ja VPA-d.
  3. CA-d tasub kasutada ainult siis, kui mÔistate hÀsti oma pod'ide ja konteinerite vajadusi.
  4. Klastri optimaalse seadistamise jaoks on vaja mĂ”ista, kuidas erinevad skaleerimissĂŒsteemid koos töötavad.
  5. Skaleerimise aja hindamisel pidage silmas halvimat ja parimat stsenaariumi.

Allikas: habr.com

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster