Kubernetesen hiru autoeskalatze maila: nola erabili eraginkortasunez

Kubernetesen hiru autoeskalatze maila: nola erabili eraginkortasunez
Kubernetes guztiz menderatzeko, kluster baliabideak eskalatzeko modu desberdinak ezagutu behar dituzu: arabera sistema garatzaileen arabera, hau da Kubernetesen zeregin nagusietako bat. Eskalatze automatiko horizontal eta bertikaleko eta klusterren tamaina aldatzeko mekanismoen goi-mailako ikuspegi orokorra eman dugu, baita horiek eraginkortasunez erabiltzeko gomendioak ere.

Artikulu Kubernetes Autoscaling 101: Cluster Autoscaler, Horizontal Autoscaler eta Vertical Pod Autoscaler Eskala automatikoa ezarri zuen taldeak itzulia Kubernetes aaS Mail.ru-tik.

Zergatik den garrantzitsua eskalatzeari buruz pentsatzea

Kubernetes - Baliabideak kudeatzeko eta orkestratzeko tresna. Noski, polita da lekak hedatzeko, kontrolatzeko eta kudeatzeko eginbide bikainak aldatzea (pod bat eskaera bati erantzunez abiarazten den edukiontzi multzoa da).

Hala ere, galdera hauek ere pentsatu behar dituzu:

  1. Nola eskalatu moduluak eta aplikazioak?
  2. Nola mantendu edukiontziak operatibo eta eraginkorrak?
  3. Nola erantzun erabiltzaileen kodea eta lan-karga etengabeko aldaketei?

Baliabideak eta errendimendua orekatzeko Kubernetes klusterrak konfiguratzea zaila izan daiteke eta Kubernetesen barne funtzionamenduari buruzko ezagutza aditua behar da. Zure aplikazioaren edo zerbitzuen lan-karga aldatu egin daiteke egunean zehar edo are gehiago ordu batean zehar, beraz, orekatzea etengabeko prozesu gisa pentsatzea da.

Kubernetes autoeskalatze mailak

Autoeskalatze eraginkorrak bi mailaren arteko koordinazioa eskatzen du:

  1. Pod maila, horizontala (Horizontal Pod Autoscaler, HPA) eta bertikala autoscaler (Vertical Pod Autoscaler, VPA). Hau zure edukiontzietarako eskuragarri dauden baliabideak eskalatzen ari da.
  2. Kluster-maila, Cluster Autoscaler-ek (CA) kudeatzen duena, kluster barruko nodo kopurua handitzen edo txikitzen duena.

Horizontal Autoscaler (HPA) modulua

Izenak dioen bezala, HPA-k lekaren erreplika kopurua eskalatzen du. Devop gehienek CPU eta memoria karga erabiltzen dute erreplika kopurua aldatzeko abiarazle gisa. Hala ere, posible da sistemaren arabera eskalatzea neurri pertsonalizatuak, haien konbinazio edo are kanpoko neurketak.

Goi-mailako HPA funtzionamendu-diagrama:

  1. HPAk etengabe egiaztatzen ditu instalazioan zehaztutako balio metrikoak 30 segundoko tarte lehenetsian.
  2. HPA modulu kopurua handitzen saiatzen da zehaztutako atalasea lortzen bada.
  3. HPAk inplementazio/erreplika kontrolagailuaren erreplika kopurua eguneratzen du.
  4. Inplementazio/erreplika kontrolagailuak beharrezkoak diren modulu osagarriak zabaltzen ditu.

Kubernetesen hiru autoeskalatze maila: nola erabili eraginkortasunez
HPA modulua inplementatzeko prozesua hasten du atalase metriko bat iristen denean

HPA erabiltzean, kontuan hartu honako hauek:

  • HPA egiaztatzeko tarte lehenetsia 30 segundokoa da. Banderak ezartzen du horizontal-pod-autoscaler-sync-period kontroladore kudeatzailean.
  • Errore erlatibo lehenetsia % 10 da.
  • Modulu kopuruaren azken igoeraren ondoren, HPA-k neurketak hiru minututan egonkortzea espero du. Tarte hori banderak ezartzen du horizontal-pod-autoscaler-upscale-delay.
  • Modulu kopuruaren azken murrizketa egin ondoren, HPA bost minutuz itxarongo da egonkortzeko. Tarte hori banderak ezartzen du horizontal-pod-autoscaler-downscale-delay.
  • HPA-k hobekien funtzionatzen du hedapen-objektuekin, erreplikazio-kontrolagailuekin baino. Eskala automatiko horizontala bateraezina da etengabeko eguneraketarekin, erreplikazio-kontrolatzaileak zuzenean manipulatzen dituena. Inplementazioarekin, erreplika kopurua inplementazio-objektuen araberakoa da zuzenean.

Leken autoeskala bertikala

Eskalatze automatiko bertikalak (VPA) CPU denbora edo memoria gehiago (edo gutxiago) esleitzen ditu lehendik dauden podetara. Estatudun edo estaturik gabeko podetarako egokia, baina batez ere estatu zerbitzuetarako pentsatua. Hala ere, VPA estaturik gabeko moduluetarako ere erabil dezakezu hasiera batean esleitutako baliabideen kopurua automatikoki egokitu behar baduzu.

VPAk OOM (memoriarik gabe) gertaerei ere erantzuten die. PUZaren denbora eta memoria aldatzeko, podak berrabiarazi behar dira. Berrabiarazten denean, VPAk esleipen aurrekontua errespetatzen du (lekak banatzeko aurrekontua, PDB) eskatutako gutxieneko modulu kopurua bermatzeko.

Modulu bakoitzerako gutxieneko eta gehienezko baliabideak ezar ditzakezu. Horrela, esleitutako memoria-kopurua gehienez 8 GB-ra muga dezakezu. Hau erabilgarria da uneko nodoek ezin badute behin betiko 8 GB memoria baino gehiago esleitu edukiontzi bakoitzeko. Hemen deskribatzen dira zehaztapen zehatzak eta funtzionamendu-mekanismoa VPA wiki ofiziala.

Horrez gain, VPA-k gomendio-funtzio interesgarri bat du (VPA Gomendioa). Modulu guztien baliabideen erabilera eta OOM gertaerak kontrolatzen ditu, neurketa historikoetan oinarritutako algoritmo adimentsu batean oinarritutako memoria eta CPU denbora balio berriak iradokitzeko. Pod helduleku bat hartzen duen eta iradokitako baliabideen balioak itzultzen dituen API bat ere badago.

Aipatzekoa da VPA Gomendatzaileak ez duela baliabideen "muga" jarraitzen. Honek moduluak nodoen barruan baliabideak monopolizatzea eragin dezake. Hobe da muga izen-espazio mailan ezartzea, memoria edo CPU kontsumo handia ekiditeko.

Goi-mailako VPA funtzionamendu-eskema:

  1. VPA-k etengabe egiaztatzen ditu instalazioan zehaztutako balio metrikoak 10 segundoko tarte lehenetsian.
  2. Zehaztutako atalasea lortzen bada, VPA esleitutako baliabide kopurua aldatzen saiatzen da.
  3. VPAk inplementazio/erreplika kontrolagailuko baliabide kopurua eguneratzen du.
  4. Moduluak berrabiarazten direnean, baliabide berri guztiak aplikatuko zaizkie sortutako instantziei.

Kubernetesen hiru autoeskalatze maila: nola erabili eraginkortasunez
VPAk beharrezko baliabide kopurua gehitzen du

Mesedez, kontuan izan puntu hauek VPA erabiltzean:

  • Eskalatzeak pod-a derrigorrezko berrabiarazi behar du. Hau beharrezkoa da aldaketak egin ondoren funtzionamendu ezegonkorra saihesteko. Fidagarritasuna lortzeko, moduluak berrabiarazi eta nodoetan banatzen dira, esleitutako baliabide berrietan oinarrituta.
  • VPA eta HPA oraindik ez dira elkarrekin bateragarriak eta ezin dira gailu berdinetan exekutatu. Eskalatze-mekanismo biak kluster berean erabiltzen ari bazara, ziurtatu zure ezarpenek objektu berdinetan aktibatzea eragozten dutela.
  • VPA-k baliabideen edukiontzien eskaerak sintonizatzen ditu iraganeko eta egungo erabileran soilik oinarrituta. Ez du baliabideen erabilera mugarik ezartzen. Arazoak egon daitezke aplikazioak behar bezala ez funtzionatzen eta gero eta baliabide gehiago hartzen hastea; horrek Kubernetes-ek pod hau desaktibatzea ekarriko du.
  • VPA garapenaren hasierako fasean dago oraindik. Presta zaitez etorkizun hurbilean sistemak aldaketa batzuk jasan ditzakeen. buruz irakur dezakezu muga ezagunak ΠΈ garapen planak. Horrela, VPA eta HPAren funtzionamendu bateratua ezartzeko asmoa dago, baita moduluak hedatzea ere haientzako autoeskalatze politika bertikalearekin batera (adibidez, etiketa berezi batek Β«VPA behar duΒ»).

Kubernetes kluster bat autoeskalatzea

Cluster Autoscaler-ek (CA) nodo-kopurua aldatzen du itxaroten duten pod-kopuruaren arabera. Sistemak aldian-aldian egiaztatzen ditu zain dauden moduluak, eta klusterraren tamaina handitzen du baliabide gehiago behar badira eta klusterrak ezarritako mugak gainditzen ez baditu. CA hodeiko zerbitzu-hornitzailearekin komunikatzen da, hari nodo gehigarriak eskatzen dizkio edo inaktiboenak askatzen ditu. Orokorrean eskuragarri dagoen lehen bertsioa Kubernetes 1.8-n sartu zen.

SA funtzionamenduaren goi-mailako eskema:

  1. CAk zain dauden moduluak egiaztatzen ditu 10 segundoko tarte lehenetsian.
  2. Pod bat edo gehiago egonean dauden egoeran badaude, klusterrak ez duelako baliabide erabilgarri nahikoa horiek esleitzeko, nodo gehigarri bat edo gehiago hornitzen saiatzen da.
  3. Hodeiko zerbitzu-hornitzaileak behar den nodoa esleitzen duenean, klusterrean batzen da eta podak zerbitzatzeko prest dago.
  4. Kubernetes-en programatzaileak zain dauden lekak banatzen ditu nodo berri batera. Honen ostean modulu batzuk oraindik itxaron egoeran jarraitzen badute, prozesua errepikatu egiten da eta nodo berriak gehitzen dira clusterra.

Kubernetesen hiru autoeskalatze maila: nola erabili eraginkortasunez
Hodeian kluster-nodoen horniketa automatikoa

Kontuan izan honako hau CA erabiltzean:

  • CAk bermatzen du klusterreko pod guztiek exekutatzeko lekua dutela, PUZaren karga edozein dela ere. Era berean, klusterrean alferrikako nodorik ez dagoela ziurtatzen saiatzen da.
  • CAk eskalatzeko beharra erregistratzen du 30 segundo gutxi gorabehera.
  • Nodo bat behar ez denean, CAk 10 minutu itxaron behar du sistema handitu aurretik.
  • Autoscaling sistemak hedatzaileen kontzeptua du. Hauek nodo-talde bat hautatzeko estrategia desberdinak dira eta horri nodo berriak gehituko zaizkio.
  • Erabili aukera arduraz cluster-autoscaler.kubernetes.io/safe-to-evict (egia). Pod asko instalatzen badituzu, edo horietako asko nodo guztietan sakabanatuta badaude, neurri handi batean klusterra eskalatzeko gaitasuna galduko duzu.
  • erabilera PodDisruptionBudgetspods ezabatzea saihesteko, eta horrek zure aplikazioaren zatiak guztiz huts egitea eragin dezake.

Kubernetes autoscalers-ek nola elkarreragiten duten

Harmonia ezin hobea izateko, eskalatze automatikoa pod mailan (HPA/VPA) zein cluster mailan aplikatu behar da. Elkarrekin erlazionatzen dute nahiko sinpleki:

  1. HPA edo VPA-ek lehendik dauden podetara esleitutako erreplikak edo baliabideak eguneratzen dituzte.
  2. Aurreikusitako eskalatzeko nodo nahikorik ez badago, CAk itxaron egoeran dauden lekak daudela nabarituko du.
  3. CAk nodo berriak esleitzen ditu.
  4. Moduluak nodo berrietara banatzen dira.

Kubernetesen hiru autoeskalatze maila: nola erabili eraginkortasunez
Kubernetes kolaboratiboa eskalatzeko sistema

Ohiko akatsak Kubernetes autoeskalatzean

Autoeskala inplementatzen saiatzean devops-ek izaten dituzten hainbat arazo arrunt daude.

HPA eta VPA neurketen eta datu historiko batzuen araberakoak dira. Baliabide nahikorik ez bada esleitzen, moduluak gutxitu egingo dira eta ezin izango dira metrikarik sortu. Kasu honetan, eskalatze automatikoa ez da inoiz gertatuko.

Eskalatze-eragiketa bera denboraren araberakoa da. Moduluak eta klusterrak azkar eskalatzea nahi dugu, erabiltzaileek arazorik edo hutsegiterik nabaritu baino lehen. Hori dela eta, lekak eta klusterrak eskalatzeko batez besteko denbora hartu behar da kontuan.

Eszenatoki ideala - 4 minutu:

  1. 30 segundo. Eguneratu helburu-neurriak: 30-60 segundo.
  2. 30 segundo. HPA-k balio metrikoak egiaztatzen ditu: 30 segundo.
  3. 2 segundo baino gutxiago. Podak sortzen dira eta itxaron egoeran sartzen dira: segundo 1.
  4. 2 segundo baino gutxiago. CAk zain dauden moduluak ikusten ditu eta hornidura-nodoetara deiak bidaltzen ditu: segundo 1.
  5. 3 minutu. Hodeiko hornitzaileak nodoak esleitzen ditu. K8ak prest egon arte itxarongo du: 10 minutu arte (hainbat faktoreren arabera).

Egoerarik txarrena (errealistagoa) - 12 minutu:

  1. 30 segundo. Eguneratu xede-neurriak.
  2. 30 segundo. HPA-k balio metrikoak egiaztatzen ditu.
  3. 2 segundo baino gutxiago. Podak sortu eta egonean egoeran sartzen dira.
  4. 2 segundo baino gutxiago. CAk zain dauden moduluak ikusten ditu eta deiak egiten ditu nodoak hornitzeko.
  5. 10 minutu. Hodeiko hornitzaileak nodoak esleitzen ditu. K8ak prest egon arte itxarongo du. Itxaron-denbora hainbat faktoreren araberakoa da, hala nola, saltzaileen atzerapena, OS atzerapena eta laguntza-tresnak.

Ez nahastu hodeiko hornitzaileen eskalatze mekanismoak gure CArekin. Azken hau Kubernetes kluster baten barruan exekutatzen da, hodeiko hornitzaileen motorrak nodoen banaketaren arabera funtzionatzen duen bitartean. Ez daki zer gertatzen ari den zure podekin edo aplikazioarekin. Sistema hauek paraleloki funtzionatzen dute.

Nola kudeatu eskalatzea Kubernetes-en

  1. Kubernetes baliabideak kudeatzeko eta orkestratzeko tresna bat da. Podak eta kluster baliabideak kudeatzeko eragiketak funtsezko mugarria dira Kubernetes menperatzeko.
  2. Ulertzea pod eskalagarritasunaren logika HPA eta VPA kontuan hartuta.
  3. CA zure ontzien eta ontzien beharrak ondo ulertzen badituzu bakarrik erabili behar da.
  4. Kluster bat modu egokian konfiguratzeko, eskalatze-sistema desberdinak elkarrekin nola funtzionatzen duten ulertu behar duzu.
  5. Eskalatzeko denbora kalkulatzerakoan, kontuan izan kasurik txarrena eta kasurik onena.

Iturria: www.habr.com

Gehitu iruzkin berria