Kolme automaattista skaalaustasoa Kubernetesissa: kuinka niitä käytetään tehokkaasti

Kolme automaattista skaalaustasoa Kubernetesissa: kuinka niitä käytetään tehokkaasti
Jotta voit hallita Kubernetesia täysin, sinun on tiedettävä erilaisia ​​tapoja skaalata klusteriresursseja: by järjestelmän kehittäjien mukaan, tämä on yksi Kubernetesin päätehtävistä. Olemme tarjonneet korkean tason yleiskatsauksen vaaka- ja pystysuuntaisista automaattiskaalaus- ja klusterin koonmuutosmekanismeista sekä suosituksia niiden tehokkaaseen käyttöön.

artikla Kubernetes Autoscaling 101: Cluster Autoscaler, Horizontal Autoscaler ja Vertical Pod Autoscaler kääntänyt tiimi, joka otti käyttöön automaattisen skaalauksen Kubernetes aaS osoitteesta Mail.ru.

Miksi on tärkeää ajatella skaalausta

Kubernetes - työkalu resurssien hallintaan ja orkestrointiin. Tietenkin on mukavaa puuhailla podien käyttöönoton, valvonnan ja hallinnan hienoilla ominaisuuksilla (pod on ryhmä säiliöitä, jotka käynnistetään vastauksena pyynnöstä).

Kannattaa kuitenkin miettiä myös seuraavia kysymyksiä:

  1. Kuinka skaalata moduuleja ja sovelluksia?
  2. Kuinka pitää kontit toimivina ja tehokkaina?
  3. Miten vastata jatkuviin muutoksiin koodissa ja käyttäjien työkuormissa?

Kubernetes-klusterien määrittäminen tasapainottamaan resursseja ja suorituskykyä voi olla haastavaa ja vaatii asiantuntemusta Kubernetesin sisäisestä toiminnasta. Sovelluksesi tai palvelusi työmäärä voi vaihdella päivän aikana tai jopa tunnin aikana, joten tasapainottaminen on parasta ajatella jatkuvana prosessina.

Kubernetesin automaattisen skaalauksen tasot

Tehokas automaattinen skaalaus edellyttää koordinointia kahden tason välillä:

  1. Pod-taso, mukaan lukien vaakasuuntainen (Horizontal Pod Autoscaler, HPA) ja pystysuora automaattiskaalaus (Vertical Pod Autoscaler, VPA). Tämä skaalaa säilöidesi käytettävissä olevia resursseja.
  2. Klusteritaso, jota hallitsee Cluster Autoscaler (CA), joka lisää tai vähentää klusterin solmujen määrää.

Horizontal Autoscaler (HPA) -moduuli

Kuten nimestä voi päätellä, HPA skaalaa pod-kopioiden määrän. Useimmat devopit käyttävät suorittimen ja muistin kuormitusta laukaisimina replikoiden määrän muuttamiseen. Järjestelmä on kuitenkin mahdollista skaalata sen perusteella mukautettuja mittareita, heidän yhdistelmä tai ulkoisia mittareita.

Korkean tason HPA-käyttökaavio:

  1. HPA tarkistaa jatkuvasti asennuksen aikana määritetyt metriarvot oletusarvoisesti 30 sekunnin välein.
  2. HPA yrittää lisätä moduulien määrää, jos määritetty kynnys saavutetaan.
  3. HPA päivittää käyttöönoton/replikoinnin ohjaimen replikoiden määrän.
  4. Käyttöönoton/replikoinnin ohjain ottaa sitten käyttöön tarvittavat lisämoduulit.

Kolme automaattista skaalaustasoa Kubernetesissa: kuinka niitä käytetään tehokkaasti
HPA aloittaa moduulin käyttöönottoprosessin, kun metriikkakynnys saavutetaan

Kun käytät HPA:ta, ota huomioon seuraavat seikat:

  • Oletusarvoinen HPA-tarkistusväli on 30 sekuntia. Se asetetaan lipulla horisontaalinen-pod-autoscaler-sync-period ohjaimen hallinnassa.
  • Oletusarvoinen suhteellinen virhe on 10 %.
  • Viimeisen moduulien määrän lisäyksen jälkeen HPA odottaa mittareiden vakiintuvan kolmen minuutin kuluessa. Tämä aikaväli asetetaan lipulla horisontaalinen-pod-autoscaler-upscale-delay.
  • Viimeisen moduulien määrän vähentämisen jälkeen HPA odottaa viisi minuuttia vakiintuakseen. Tämä aikaväli asetetaan lipulla horizontal-pod-autoscaler-downscale-delay.
  • HPA toimii parhaiten käyttöönottoobjektien kanssa toisinnusohjainten sijaan. Vaakasuuntainen automaattinen skaalaus ei ole yhteensopiva jatkuvan päivityksen kanssa, joka manipuloi suoraan replikointiohjaimia. Käyttöönoton yhteydessä replikoiden määrä riippuu suoraan käyttöönottoobjekteista.

Palojen pystyskaalaus

Vertical autoscaling (VPA) varaa enemmän (tai vähemmän) CPU-aikaa tai muistia olemassa oleville podille. Soveltuu tilallisiin tai tilattomiin podeihin, mutta tarkoitettu pääasiassa tilallisiin palveluihin. Voit kuitenkin käyttää VPA:ta myös tilattomille moduuleille, jos sinun on säädettävä automaattisesti alun perin allokoitujen resurssien määrää.

VPA vastaa myös OOM (out of memory) -tapahtumiin. Prosessoriajan ja muistin muuttaminen vaatii podien uudelleenkäynnistyksen. Kun VPA käynnistetään uudelleen, se noudattaa allokointibudjettia (podien jakelubudjetti, ATE) taatakseen vaaditun vähimmäismäärän moduuleja.

Voit asettaa vähimmäis- ja enimmäisresurssit kullekin moduulille. Siten voit rajoittaa varatun muistin enimmäismäärän 8 Gt:aan. Tämä on hyödyllistä, jos nykyiset solmut eivät todellakaan voi varata enempää kuin 8 Gt muistia konttia kohden. Yksityiskohtaiset tekniset tiedot ja toimintamekanismi on kuvattu kohdassa virallinen VPA-wiki.

Lisäksi VPA:ssa on mielenkiintoinen suositustoiminto (VPA Recommender). Se tarkkailee kaikkien moduulien resurssien käyttöä ja OOM-tapahtumia ehdottaakseen uusia muistin ja suorittimen aikaarvoja älykkään algoritmin pohjalta, joka perustuu historiallisiin mittareihin. On myös API, joka ottaa pod-kahvan ja palauttaa ehdotetut resurssiarvot.

On syytä huomata, että VPA Recommender ei seuraa resurssirajaa. Tämä voi johtaa siihen, että moduuli monopolisoi resursseja solmuissa. On parempi asettaa raja nimiavaruuden tasolla, jotta vältytään valtavalta muistin tai prosessorin kulutukselta.

Korkean tason VPA-toimintasuunnitelma:

  1. VPA tarkistaa jatkuvasti asennuksen aikana määritetyt metriarvot oletusarvoisesti 10 sekunnin välein.
  2. Jos määritetty kynnys saavutetaan, VPA yrittää muuttaa allokoitua resurssien määrää.
  3. VPA обновляет количество ресурсов внутри контроллера развертывания/репликации.
  4. Kun moduulit käynnistetään uudelleen, kaikki uudet resurssit otetaan käyttöön luotuissa ilmentymissä.

Kolme automaattista skaalaustasoa Kubernetesissa: kuinka niitä käytetään tehokkaasti
VPA lisää tarvittavan määrän resursseja

Muista seuraavat seikat VPA:ta käyttäessäsi:

  • Skaalaus vaatii podin pakollisen uudelleenkäynnistyksen. Tämä on välttämätöntä epävakaan toiminnan välttämiseksi muutosten tekemisen jälkeen. Luotettavuuden vuoksi moduulit käynnistetään uudelleen ja jaetaan solmujen kesken uusien allokoitujen resurssien perusteella.
  • VPA ja HPA eivät ole vielä yhteensopivia keskenään, eivätkä ne voi toimia samoissa podissa. Jos käytät molempia skaalausmekanismeja samassa klusterissa, varmista, että asetuksesi estävät niitä aktivoimasta samoissa objekteissa.
  • VPA virittää resurssien säilöpyynnöt vain aiemman ja nykyisen käytön perusteella. Se ei aseta resurssien käytölle rajoituksia. Saattaa olla ongelmia, jos sovellukset eivät toimi oikein ja alkavat ottaa yhä enemmän resursseja, mikä johtaa siihen, että Kubernetes sammuttaa tämän pod.
  • VPA on vielä kehitysvaiheessa. Varaudu siihen, että järjestelmään saattaa tulla muutoksia lähitulevaisuudessa. Voit lukea aiheesta tunnetut rajoitukset и kehityssuunnitelmia. Suunnitelmissa on siis toteuttaa VPA:n ja HPA:n yhteinen toiminta sekä moduulien käyttöönotto ja niille vertikaalinen automaattinen skaalauskäytäntö (esim. erityinen merkintä "vaatii VPA:n").

Kubernetes-klusterin automaattinen skaalaus

Cluster Autoscaler (CA) muuttaa solmujen määrää odottavien ryhmien määrän perusteella. Järjestelmä tarkistaa ajoittain vireillä olevat moduulit - ja lisää klusterin kokoa, jos tarvitaan lisää resursseja ja jos klusteri ei ylitä asetettuja rajoja. Varmentaja kommunikoi pilvipalvelun tarjoajan kanssa, pyytää siltä lisäsolmuja tai vapauttaa käyttämättömät solmut. Ensimmäinen yleisesti saatavilla oleva CA-versio esiteltiin Kubernetes 1.8:ssa.

SA:n korkean tason toimintasuunnitelma:

  1. CA tarkistaa odottavat moduulit oletusarvoisesti 10 sekunnin välein.
  2. Jos yksi tai useampi pod on valmiustilassa, koska klusterilla ei ole tarpeeksi käytettävissä olevia resursseja niiden allokointiin, se yrittää muodostaa yhden tai useamman lisäsolmun.
  3. Kun pilvipalveluntarjoaja varaa vaaditun solmun, se liittyy klusteriin ja on valmis palvelemaan podeja.
  4. Kubernetes-ajastin jakaa odottavat podit uuteen solmuun. Jos tämän jälkeen osa moduuleista jää vielä odotustilaan, prosessi toistetaan ja klusteriin lisätään uusia solmuja.

Kolme automaattista skaalaustasoa Kubernetesissa: kuinka niitä käytetään tehokkaasti
Klusterisolmujen automaattinen hallinta pilvessä

Ota huomioon seuraavat seikat, kun käytät CA:ta:

  • CA varmistaa, että kaikilla klusterin podilla on tilaa toimia prosessorin kuormituksesta riippumatta. Se yrittää myös varmistaa, että klusterissa ei ole tarpeettomia solmuja.
  • CA rekisteröi skaalaustarpeen noin 30 sekunnin kuluttua.
  • После того как узел становится ненужным, CA по умолчанию ожидает 10 минут, прежде чем масштабировать систему.
  • Autoscaling-järjestelmässä on laajenninten käsite. Nämä ovat erilaisia ​​strategioita solmuryhmän valitsemiseksi, johon uusia solmuja lisätään.
  • Käytä vaihtoehtoa vastuullisesti cluster-autoscaler.kubernetes.io/safe-to-evict (true). Jos asennat paljon podeja tai jos monet niistä ovat hajallaan kaikissa solmuissa, menetät suurelta osin kyvyn skaalata klusteria.
  • käyttö PodDisruptionBudgetsestääksesi podien poistamisen, mikä saattaa aiheuttaa sovelluksesi osien rikkoutumisen kokonaan.

Kuinka Kubernetes-automaattiskaalaimet ovat vuorovaikutuksessa toistensa kanssa

Täydellisen harmonian saavuttamiseksi automaattista skaalausta tulee käyttää sekä pod-tasolla (HPA/VPA) että klusteritasolla. Ne ovat vuorovaikutuksessa keskenään suhteellisen yksinkertaisesti:

  1. HPA:t tai VPA:t päivittävät pod-kopiot tai olemassa oleville podille varatut resurssit.
  2. Jos solmuja ei ole tarpeeksi suunniteltua skaalausta varten, varmentaja havaitsee poddien olemassaolon odotustilassa.
  3. Varmentaja varaa uudet solmut.
  4. Moduulit jaetaan uusiin solmuihin.

Kolme automaattista skaalaustasoa Kubernetesissa: kuinka niitä käytetään tehokkaasti
Yhteistyöllinen Kubernetes-skaalausjärjestelmä

Yleisiä virheitä Kubernetes-automaattiskaalauksessa

On olemassa useita yleisiä ongelmia, joihin devops törmää yrittäessään toteuttaa automaattista skaalausta.

HPA ja VPA riippuvat mittareista ja joistakin historiallisista tiedoista. Jos resursseja ei ole allokoitu riittävästi, moduulit minimoidaan eivätkä ne pysty luomaan mittareita. Tässä tapauksessa automaattista skaalausta ei koskaan tapahdu.

Itse skaalaustoiminto on aikaherkkä. Haluamme moduulien ja klusterin skaalautuvan nopeasti – ennen kuin käyttäjät huomaavat ongelmia ja vikoja. Siksi palojen ja klusterin keskimääräinen skaalausaika on otettava huomioon.

Ihanteellinen skenaario - 4 minuuttia:

  1. 30 sekuntia. Päivitä tavoitemittaukset: 30–60 sekuntia.
  2. 30 sekuntia. HPA tarkistaa metriset arvot: 30 sekuntia.
  3. Alle 2 sekuntia. Podit luodaan ja siirtyvät odotustilaan: 1 sekunti.
  4. Alle 2 sekuntia. CA näkee odottavat moduulit ja lähettää puhelut tarjontasolmuille: 1 sekunti.
  5. 3 minuuttia. Pilvipalveluntarjoaja varaa solmut. K8s odottaa, kunnes ne ovat valmiita: jopa 10 minuuttia (riippuen useista tekijöistä).

Huonoin tapaus (realistisempi) skenaario - 12 minuuttia:

  1. 30 sekuntia. Päivitä tavoitemittarit.
  2. 30 sekuntia. HPA tarkistaa metriarvot.
  3. Alle 2 sekuntia. Podit luodaan ja siirtyvät valmiustilaan.
  4. Alle 2 sekuntia. Varmentaja näkee odottavat moduulit ja soittaa solmujen hallintaan.
  5. 10 minuuttia. Pilvipalveluntarjoaja varaa solmut. K8s odottaa, kunnes ne ovat valmiita. Odotusaika riippuu useista tekijöistä, kuten toimittajan viiveestä, käyttöjärjestelmän viiveestä ja tukityökaluista.

Älä sekoita pilvipalveluntarjoajien skaalausmekanismeja CA:himme. Jälkimmäinen toimii Kubernetes-klusterin sisällä, kun taas pilvipalvelumoottori toimii solmujakeluperiaatteella. Se ei tiedä, mitä podeillesi tai sovelluksellesi tapahtuu. Nämä järjestelmät toimivat rinnakkain.

Kuinka hallita skaalausta Kubernetesissa

  1. Kubernetes on resurssienhallinta- ja orkestrointityökalu. Podiden ja klusteriresurssien hallinta on tärkeä virstanpylväs Kubernetesin hallitsemisessa.
  2. Ymmärrä pod-skaalautuvuuden logiikka ottaen huomioon HPA ja VPA.
  3. CA:ta tulee käyttää vain, jos sinulla on hyvä käsitys koteloidesi ja säiliöiden tarpeista.
  4. Jotta voit määrittää klusterin optimaalisesti, sinun on ymmärrettävä, kuinka eri skaalausjärjestelmät toimivat yhdessä.
  5. Kun arvioit skaalausaikaa, pidä mielessä pahin ja paras tapaus.

Lähde: will.com

Lisää kommentti