Þrjú stig sjálfvirkrar mælingar í Kubernetes og hvernig á að nota þau á áhrifaríkan hátt

Þrjú stig sjálfvirkrar mælingar í Kubernetes og hvernig á að nota þau á áhrifaríkan hátt
Til að ná fullum tökum á Kubernetes þarftu að þekkja hinar ýmsu leiðir til að skala klasaauðlindir: samkvæmt þróunaraðilum kerfisins, þetta er eitt af aðalverkefnum Kubernetes. Við höfum útbúið yfirlit á háu stigi yfir aðferðir fyrir lárétta og lóðrétta sjálfstýringu og stærð klasabreytinga, auk ráðlegginga um hvernig eigi að nota þær á áhrifaríkan hátt.

grein Kubernetes Autoscaling 101: Cluster Autoscaler, Horizontal Autoscaler og Vertical Pod Autoscaler þýddi skipunina sem útfærði sjálfvirka skala yfir í Kubernetes aaS frá Mail.ru.

Hvers vegna er mikilvægt að hugsa um skala

Kubernetes er auðlindastjórnun og hljómsveitarverkfæri. Auðvitað er sniðugt að fikta við flotta eiginleika þess að dreifa, fylgjast með og stjórna belgjum (belgur er hópur gáma sem keyra til að bregðast við beiðni).

Hins vegar ættir þú einnig að hugsa um eftirfarandi spurningar:

  1. Hvernig á að skala einingar og forrit?
  2. Hvernig á að halda gámum í virku og skilvirku ástandi?
  3. Hvernig á að bregðast við stöðugum breytingum á kóða og vinnuálagi frá notendum?

Að stilla Kubernetes klasa til að koma á jafnvægi milli auðlinda og frammistöðu getur verið flókið verkefni og krefst sérfræðiþekkingar á innri starfsemi Kubernetes. Vinnuálagið á forritinu þínu eða þjónustu getur sveiflast á einum degi eða jafnvel klukkutíma, svo það er best að hugsa um jafnvægi sem samfellt ferli.

Kubernetes sjálfstýrð stig

Árangursrík sjálfkvörðun krefst samhæfingar á milli tveggja laga:

  1. Pod lag sem inniheldur lárétt (Horizontal Pod Autoscaler, HPA) og lóðrétt sjálfvirkan (Vertical Pod Autoscaler, VPA). Þetta er mælikvarði á tiltæk tilföng fyrir ílátin þín.
  2. Klasastigið, sem er stjórnað af Cluster Autoscaler (CA) kerfinu, það eykur eða minnkar fjölda hnúta innan klasans.

Láréttur sjálfvirkur mælikvarði (HPA)

Eins og nafnið gefur til kynna skalar HPA fjölda fræbelgs eftirmynda. Flestar devops nota CPU og minnisálag sem kveikjur til að breyta fjölda eftirmynda. Hins vegar er hægt að skala kerfið út frá sérsniðnar mælingarþeirra samsetning af eða jafnvel ytri mælikvarða.

Vinnuáætlun HPA á háu stigi:

  1. HPA athugar stöðugt mæligildin sem tilgreind eru við uppsetningu með sjálfgefnu 30 sekúndna millibili.
  2. HPA reynir að fjölga einingum ef tilgreindum þröskuldi er náð.
  3. HPA uppfærir fjölda afrita inni í dreifingar-/afritunarstýringunni.
  4. Dreifingar-/afritunarstýringin setur síðan upp allar nauðsynlegar viðbótareiningar.

Þrjú stig sjálfvirkrar mælingar í Kubernetes og hvernig á að nota þau á áhrifaríkan hátt
HPA kveikir á dreifingarferli eininga þegar mæligildi er náð

Hafðu eftirfarandi í huga þegar þú notar HPA:

  • Sjálfgefið HPA eftirlitstímabil er 30 sekúndur. Það er sett með fánanum horizontal-pod-autoscaler-sync-period í stjórnandastjóra.
  • Sjálfgefin hlutfallsleg villa er 10%.
  • Eftir síðustu aukningu á einingunni bíður HPA eftir að mælingar nái stöðugleika í þrjár mínútur. Þetta bil er stillt af fánanum horizontal-pod-autoscaler-upscale-delay.
  • Eftir síðustu mát minnkun bíður HPA í fimm mínútur til að koma á stöðugleika. Þetta bil er stillt af fánanum horizontal-pod-autoscaler-downscale-delay.
  • HPA virkar best með dreifingarhlutum, ekki afritunarstýringum. Lárétt sjálfkvörðun er ósamrýmanleg rúllandi uppfærslu, sem vinnur beint eftir afritunarstýringum. Með dreifingu fer fjöldi eftirmynda beint eftir dreifingarhlutunum.

Lóðrétt sjálfkvörðun á belgjum

Lóðrétt sjálfkvörðun (VPA) úthlutar meiri (eða minni) örgjörva- eða minnistíma til núverandi belg. Hentar fyrir ríka eða ríkisfangslausa belg, en aðallega ætlaðir fyrir ríka þjónustu. Hins vegar geturðu líka notað VPA fyrir ríkisfangslausar einingar ef þú vilt stilla sjálfkrafa magn upphaflega úthlutaðra auðlinda.

VPA bregst einnig við OOM-atburðum (out of memory, out of memory). Nauðsynlegt er að endurræsa belg til að breyta CPU tíma og minni. Við endurræsingu virðir VPA úthlutunarfjárveitingu (úthlutunaráætlun fyrir belg, PDB) til að tryggja lágmarksfjölda eininga.

Þú getur stillt lágmarks- og hámarksmagn auðlinda fyrir hverja einingu. Þannig að þú getur takmarkað hámarksmagn úthlutaðs minnis við 8 GB. Þetta er gagnlegt ef núverandi hnútar geta örugglega ekki úthlutað meira en 8 GB af minni á hvern ílát. Ítarlegar forskriftir og verkunarháttur er lýst í opinbera VPA wiki.

Að auki hefur VPA áhugaverðan meðmælaeiginleika (VPA Recommender). Það fylgist með auðlindanotkun og OOM atburðum allra eininga til að stinga upp á nýjum minnis- og örgjörvatímagildum byggt á snjöllu reikniriti byggt á sögulegum mæligildum. Það er líka API sem tekur við belghandfangi og skilar tillögum að auðlindagildum.

Þess má geta að VPA meðmæli heldur ekki utan um „takmörk“ auðlinda. Þetta getur valdið því að einingin einoki auðlindir innan hnúta. Það er betra að setja takmörk á nafnrýmisstigi til að forðast mikla minni eða örgjörvanotkun.

VPA vinnuflæði á háu stigi:

  1. VPA athugar stöðugt mæligildin sem tilgreind eru við uppsetningu með sjálfgefnu 10 sekúndna millibili.
  2. Ef tilgreindum viðmiðunarmörkum er náð reynir VPA að breyta úthlutuðu magni auðlinda.
  3. VPA uppfærir fjölda tilfanga inni í dreifingar-/afritunarstýringunni.
  4. Þegar belg eru endurræst eru öll ný tilföng notuð á stofnuð tilvik.

Þrjú stig sjálfvirkrar mælingar í Kubernetes og hvernig á að nota þau á áhrifaríkan hátt
VPA bætir við nauðsynlegu magni af auðlindum

Hafðu eftirfarandi atriði í huga þegar þú notar VPA:

  • Stærð krefst skyldubundinnar endurræsingar á belgnum. Þetta er nauðsynlegt til að forðast óstöðugan rekstur eftir breytingar. Til að tryggja áreiðanleika eru einingarnar endurræstar og dreift á milli hnúta byggt á nýju úthlutuðu auðlindunum.
  • VPA og HPA eru ekki enn samhæf hvort við annað og geta ekki keyrt á sömu belgjunum. Ef þú notar báðar stærðaraðferðirnar í sama þyrpingunni skaltu ganga úr skugga um að stillingarnar leyfa ekki að þær séu virkjaðar á sömu hlutunum.
  • VPA sérsníða gámabeiðnir um auðlindir byggðar eingöngu á fyrri og núverandi auðlindanotkun. Það setur ekki takmarkanir á auðlindanotkun. Það geta verið vandamál með ranga vinnu af forritum sem munu taka meira og meira fjármagn, þetta mun valda því að Kubernetes slekkur á þessum belg.
  • VPA er enn á frumstigi þróunar. Vertu viðbúinn því að kerfið gæti tekið einhverjum breytingum í náinni framtíð. Þú getur lesið um þekktar takmarkanir и þróunaráætlanir. Svo, áætlanirnar eru að innleiða sameiginlega vinnu VPA og HPA, sem og dreifingu á einingum ásamt lóðréttri sjálfstýringu stefnu fyrir þær (til dæmis, sérstakt merki „krefst VPA“).

Sjálfvirk stærð Kubernetes-þyrpingar

Cluster Autoscaler (CA) breytir fjölda hnúta byggt á fjölda hnúta sem bíða. Kerfið athugar reglulega hvort einingar eru í bið - og eykur klasastærðina ef þörf er á meira fjármagni og ef klasinn fer ekki út fyrir sett mörk. CA hefur samskipti við skýjaþjónustuveituna, biður um viðbótarhnúta frá honum eða gefur út aðgerðalausa. Fyrsta opinbera útgáfan af CA var kynnt í Kubernetes 1.8.

CA vinnuflæði á háu stigi:

  1. CA athugar hvort einingar eru í bið með sjálfgefnu 10 sekúndna millibili.
  2. Ef einn eða fleiri belg eru í biðstöðu vegna þess að klasinn hefur ekki nægjanlegt tiltækt fjármagn til að úthluta þeim, reynir hann að útvega einn eða fleiri hnúta til viðbótar.
  3. Þegar skýjaveitan úthlutar nauðsynlegum hnút tengist hann þyrpingunni og er tilbúinn til að þjóna fræbelgunum.
  4. Kubernetes tímaáætlunarkerfið úthlutar belgjum í bið á nýja hnútinn. Ef eftir það eru sumar einingar enn í biðstöðu er ferlið endurtekið - og nýjum hnútum er bætt við þyrpinguna.

Þrjú stig sjálfvirkrar mælingar í Kubernetes og hvernig á að nota þau á áhrifaríkan hátt
Sjálfvirk úthlutun klasahnúta í skýinu

Hafðu eftirfarandi í huga þegar CA er notað:

  • CA tryggir að allar einingar í klasanum hafi pláss til að keyra, óháð CPU álagi. Að auki reynir það að tryggja að það séu engir óþarfa hnútar í þyrpingunni.
  • CA skráir þörfina fyrir mælingu eftir um 30 sekúndur.
  • Eftir að hnútur verður óþarfi bíður CA sjálfgefið í 10 mínútur áður en kerfið skal stækka.
  • Sjálfstærðarkerfið hefur hugmyndina um stækkanir. Þetta eru mismunandi aðferðir til að velja hóp hnúta sem nýjum verður bætt við.
  • Notaðu valkostinn á ábyrgan hátt cluster-autoscaler.kubernetes.io/safe-to-evict (satt). Ef þú setur upp mikið af belgjum, eða ef margir þeirra eru dreifðir um alla hnúta, muntu að mestu missa getu til að minnka þyrpinguna.
  • Используйте PodDiruptionBudgetstil að koma í veg fyrir að belgjum sé eytt, sem gæti valdið því að hluti af forritinu þínu hrynji alveg.

Hvernig Kubernetes sjálfvirk stærðarkerfi hafa samskipti sín á milli

Til að ná fullkomnu samræmi ætti að beita sjálfvirkri mælingu bæði á belgstigi (HPA/VPA) og á klasastigi. Þeir eru tiltölulega auðvelt að hafa samskipti sín á milli:

  1. HPA eða VPA uppfærir fræbelg eftirlíkingar eða tilföngum sem úthlutað er til núverandi belg.
  2. Ef það eru ekki nógu margir hnútar til að skala eins og áætlað var tekur CA eftir því að það eru belg í biðstöðu.
  3. CA úthlutar nýjum hnútum.
  4. Einingum er dreift á nýja hnúta.

Þrjú stig sjálfvirkrar mælingar í Kubernetes og hvernig á að nota þau á áhrifaríkan hátt
Sameiginlegt Kubernetes mælikvarðakerfi

Algeng mistök í Kubernetes Autoscaling

Það eru nokkur algeng vandamál sem devops lenda í þegar reynt er að nota sjálfvirka skala.

HPA og VPA eru háð mælingum og sumum sögulegum gögnum. Ef ófullnægjandi fjármagni er úthlutað munu einingarnar hrynja saman og munu ekki geta búið til mælikvarða. Í þessu tilviki mun sjálfvirk stærð aldrei eiga sér stað.

Stærðaraðgerðin sjálf er tímanæm. Við viljum að belgirnir og klasinn stækki hratt, áður en notendur taka eftir vandamálum eða bilunum. Þess vegna ætti að taka með í reikninginn meðaltalstíma fræbelgs og klasa.

Tilvalið atburðarás - 4 mínútur:

  1. 30 sekúndur. Uppfærðu marktölur: 30-60 sekúndur.
  2. 30 sekúndur. HPA athugar mæligildi: 30 sekúndur.
  3. Innan við 2 sekúndur. Beygjur hafa verið búnar til og eru að fara í biðstöðu: 1 sekúnda.
  4. Innan við 2 sekúndur. CA sér einingar í bið og sendir símtöl til úthlutunarhnúta: 1 sekúnda.
  5. 3 mínútur. Skýjaveitan úthlutar hnútum. K8s bíða þar til þeir eru tilbúnir: allt að 10 mínútur (fer eftir nokkrum þáttum).

Versta (raunhæfari) atburðarás - 12 mínútur:

  1. 30 sekúndur. Uppfærðu marktölur.
  2. 30 sekúndur. HPA athugar mæligildin.
  3. Innan við 2 sekúndur. Flokkarnir hafa verið búnir til og eru að skipta yfir í biðstöðu.
  4. Innan við 2 sekúndur. CA sér einingarnar sem bíða og sendir símtöl til að undirbúa hnúta.
  5. 10 mínútur. Skýjaveitan úthlutar hnútum. K8s bíða þar til þeir eru tilbúnir. Biðtíminn fer eftir nokkrum þáttum eins og töf söluaðila, leynd stýrikerfis, vinnu við stuðningsverkfæri.

Ekki rugla saman stærðaraðferðum skýjaveitenda og CA okkar. Hið síðarnefnda starfar inni í Kubernetes klasa, en skýjaveitan starfar á grundvelli hnútadreifingar. Það veit ekki hvað er að gerast með belg eða app. Þessi kerfi vinna samhliða.

Hvernig á að stjórna mælikvarða í Kubernetes

  1. Kubernetes er auðlindastjórnunar- og hljómsveitarverkfæri. Aðgerðir til að stjórna fræbelgjum og klasaauðlindum eru lykiláfangi í þróun Kubernetes.
  2. Lærðu rökfræðina á bak við sveigjanleika fræbelgs með HPA og VPA.
  3. CA ætti aðeins að nota ef þú skilur þarfir fræbelgja þinna og íláta vel.
  4. Til að fínstilla klasauppsetninguna þína þarftu að skilja hvernig mismunandi stærðarkerfi vinna saman.
  5. Þegar stærðartími er metinn, hafðu í huga versta og besta tilvikið.

Heimild: www.habr.com

Bæta við athugasemd