Dräi Niveauen vun Autoscaling a Kubernetes: Wéi benotzen se se effektiv

Dräi Niveauen vun Autoscaling a Kubernetes: Wéi benotzen se se effektiv
Fir Kubernetes voll ze beherrschen, musst Dir verschidde Weeër wëssen fir Clusterressourcen ze skaléieren: duerch no de System Entwéckler, Dëst ass eng vun den Haaptaufgaben vu Kubernetes. Mir hunn en héijen Iwwerbléck iwwer horizontalen a vertikalen Autoskaléierungs- a Clustergréisstmechanismus zur Verfügung gestallt, souwéi Empfehlungen wéi se se effektiv benotzen.

Artikel Kubernetes Autoscaling 101: Cluster Autoscaler, Horizontal Autoscaler, and Vertical Pod Autoscaler iwwersat vun der Equipe déi Autoscaling implementéiert huet Kubernetes aaS vun Mail.ru.

Firwat et wichteg ass iwwer d'Skaléierung ze denken

Kubernetes - en Instrument fir Ressource Gestioun an Orchestratioun. Natierlech ass et flott mat de coolen Features vun der Aussetzung, der Iwwerwaachung an der Gestioun vu Pods (e Pod ass eng Grupp vu Container, déi als Äntwert op eng Ufro gestart ginn) ze tinken.

Allerdéngs sollt Dir och iwwer déi folgend Froen denken:

  1. Wéi Skala Moduler an Uwendungen?
  2. Wéi halen d'Container operationell an effizient?
  3. Wéi reagéiert op konstant Ännerungen am Code an Aarbechtsbelaaschtunge vu Benotzer?

Kubernetes Cluster konfiguréieren fir Ressourcen a Performance ze balancéieren kann Erausfuerderung sinn a erfuerdert Expertwëssen iwwer d'Bannenaarbecht vu Kubernetes. D'Aarbechtslaascht vun Ärer Applikatioun oder Servicer kann de ganzen Dag schwanken oder souguer am Laf vun enger Stonn, sou datt d'Balance am beschten als e lafende Prozess geduecht ass.

Kubernetes Autoscaling Niveauen

Effektiv Autoskaléierung erfuerdert Koordinatioun tëscht zwee Niveauen:

  1. Pod Niveau, dorënner horizontal (Horizontal Pod Autoscaler, HPA) a vertikalen Autoscaler (Vertical Pod Autoscaler, VPA). Dëst skaléiert déi verfügbar Ressourcen fir Är Container.
  2. Clusterniveau, dee vum Cluster Autoscaler (CA) geréiert gëtt, wat d'Zuel vun den Noden am Cluster erhéicht oder reduzéiert.

Horizontal Autoscaler (HPA) Modul

Wéi den Numm et scho seet, skaléiert HPA d'Zuel vun de Pod Repliken. Déi meescht Devops benotzen d'CPU an d'Erënnerungsbelaaschtung als Ausléiser fir d'Zuel vun de Repliken z'änneren. Wéi och ëmmer, et ass méiglech de System op Basis ze skaléieren personaliséiert Metriken, hir Kombinatioun vu oder souguer extern Metriken.

Héichniveau HPA Betribsdiagramm:

  1. Den HPA kontrolléiert kontinuéierlech déi metresch Wäerter, déi während der Installatioun spezifizéiert sinn, mat engem Standardintervall vun 30 Sekonnen.
  2. D'HPA probéiert d'Zuel vun de Moduler ze erhéijen wann de spezifizéierte Schwell erreecht gëtt.
  3. Den HPA aktualiséiert d'Zuel vun de Repliken am Deployment / Replikatiounscontroller.
  4. Den Deployment / Replikatiounscontroller setzt dann all néideg zousätzlech Moduler of.

Dräi Niveauen vun Autoscaling a Kubernetes: Wéi benotzen se se effektiv
HPA fänkt de Modul Deployment Prozess un wann e metresche Schwell erreecht gëtt

Wann Dir HPA benotzt, betruecht déi folgend:

  • De Standard HPA Kontrollintervall ass 30 Sekonnen. Et gëtt vum Fändel gesat horizontal-pod-autoscaler-sync-period am Controller Manager.
  • De Standard relativ Feeler ass 10%.
  • No der leschter Erhéijung vun der Unzuel vun de Moduler erwaart HPA datt d'Metriken bannent dräi Minutten stabiliséieren. Dësen Intervall gëtt vum Fändel festgeluecht horizontal-pod-autoscaler-upscale-delay.
  • No der leschter Reduktioun vun der Unzuel vun de Moduler waart d'HPA fënnef Minutten fir ze stabiliséieren. Dësen Intervall gëtt vum Fändel festgeluecht horizontal-pod-autoscaler-downscale-delay.
  • HPA funktionnéiert am Beschten mat Deploymentobjekter anstatt Replikatiounscontroller. Horizontal Autoscaling ass inkompatibel mam Rolling Update, deen direkt Replikatiounscontroller manipuléiert. Mat Ofbau hänkt d'Zuel vun de Repliken direkt vun den Ofbauobjekte of.

Vertikal Autoskaléierung vu Pods

Vertikal Autoskaléierung (VPA) verdeelt méi (oder manner) CPU Zäit oder Erënnerung un existent Pods. Gëeegent fir statesch oder stateless Pods, awer haaptsächlech fir stateful Servicer geduecht. Wéi och ëmmer, Dir kënnt och VPA fir stateless Moduler benotzen wann Dir automatesch de Betrag vun ursprénglech zougeloossene Ressourcen upassen musst.

VPA reagéiert och op OOM (aus Erënnerung) Eventer. D'CPU Zäit an d'Erënnerung änneren erfuerdert d'Pods nei ze starten. Wann nei gestart, respektéiert de VPA den Allocatiounsbudget (Pods Verdeelungsbudget, PDB) fir déi minimal erfuerderlech Unzuel u Moduler ze garantéieren.

Dir kënnt de Minimum a maximal Ressourcen fir all Modul Formatioun. Sou kënnt Dir de maximalen Betrag vun zougewisen Erënnerung op 8 GB limitéieren. Dëst ass nëtzlech wann déi aktuell Wirbelen definitiv net méi wéi 8 GB Erënnerung pro Container kënnen allocéieren. Detailléiert Spezifikatioune a Betribssystemer Mechanismus sinn beschriwwen an offiziell VPA Wiki.

Zousätzlech huet VPA eng interessant Empfehlungsfunktioun (VPA Recommender). Et iwwerwaacht Ressourceverbrauch an OOM Eventer vun alle Moduler fir nei Erënnerungs- an CPU-Zäitwäerter ze proposéieren baséiert op engem intelligenten Algorithmus baséiert op historesche Metriken. Et gëtt och eng API déi e Pod-Griff hëlt a proposéiert Ressourcewäerter zréckginn.

Et ass derwäert ze notéieren datt de VPA Recommender d'Ressource "Limite" net verfollegt. Dëst kann dozou féieren datt de Modul Ressourcen bannent Wirbelen monopoliséiert. Et ass besser d'Limite um Nummraumniveau ze setzen fir en enorme Gedächtnis oder CPU Konsum ze vermeiden.

Héichniveau VPA Operatioun Schema:

  1. VPA kontrolléiert kontinuéierlech déi metresch Wäerter, déi während der Installatioun spezifizéiert sinn, mat engem Standardintervall vun 10 Sekonnen.
  2. Wann de spezifizéierte Schwell erreecht gëtt, probéiert de VPA den zougewisenen Betrag vun de Ressourcen z'änneren.
  3. De VPA aktualiséiert d'Zuel vun de Ressourcen am Deployment / Replikatiounscontroller.
  4. Wann Moduler nei gestart ginn, ginn all nei Ressourcen op déi erstallt Instanzen applizéiert.

Dräi Niveauen vun Autoscaling a Kubernetes: Wéi benotzen se se effektiv
VPA füügt déi erfuerderlech Quantitéit u Ressourcen derbäi

Halt w.e.g. déi folgend Punkten am Kapp wann Dir VPA benotzt:

  • Skaléieren erfuerdert en obligatoresche Restart vum Pod. Dëst ass néideg fir onbestänneg Operatioun ze vermeiden nodeems Dir Ännerungen gemaach hutt. Fir Zouverlässegkeet, Moduler ginn nei gestart a verdeelt iwwer Wirbelen baséiert op nei zougeloossene Ressourcen.
  • VPA an HPA sinn nach net matenee kompatibel a kënnen net op déiselwecht Pods lafen. Wann Dir béid Skaléierungsmechanismen am selwechte Cluster benotzt, gitt sécher datt Är Astellunge verhënneren datt se op déiselwecht Objeten aktivéiert ginn.
  • VPA tunt Container Ufroe fir Ressourcen baséiert nëmmen op vergaangen an aktuell Notzung. Et setzt keng Ressourceverbrauchsgrenzen. Et kënne Probleemer sinn mat Uwendungen déi net korrekt funktionnéieren a méi a méi Ressourcen ufänken ze iwwerhuelen, dëst féiert dozou datt Kubernetes dëse Pod ausschalt.
  • VPA ass nach an engem fréie Stadium vun der Entwécklung. Sidd bereet datt de System an der nächster Zukunft e puer Ännerungen ënnergoe kann. Dir kënnt iwwer liesen bekannt Aschränkungen и Entwécklung Pläng. Also, et gi Pläng fir d'gemeinsame Operatioun vu VPA an HPA ëmzesetzen, souwéi d'Deployment vu Moduler zesumme mat enger vertikaler Autoskaléierungspolitik fir si (zum Beispill e spezielle Label "erfuerdert VPA").

Autoscaling e Kubernetes Cluster

Cluster Autoscaler (CA) ännert d'Zuel vun de Wirbelen baséiert op der Unzuel vun de Waardepods. De System kontrolléiert periodesch fir pendend Moduler - a vergréissert d'Clustergréisst wann méi Ressourcen gebraucht ginn a wann de Cluster net déi etabléiert Grenzen iwwerschreift. De CA kommunizéiert mam Cloud Service Provider, freet zousätzlech Node vun him oder verëffentlecht Idle. Déi éischt allgemeng verfügbar Versioun vum CA gouf a Kubernetes 1.8 agefouert.

Héichniveau Schema vun der SA Operatioun:

  1. CA iwwerpréift fir pendend Moduler mat engem Standardintervall vun 10 Sekonnen.
  2. Wann een oder méi Pods an engem Standby-Staat sinn, well de Stärekoup net genuch verfügbare Ressourcen huet fir se ze verdeelen, probéiert et een oder méi zousätzlech Noden zur Verfügung ze stellen.
  3. Wann de Cloud-Déngschtleeschter den erfuerderlechen Node verdeelt, schléisst hien an de Cluster an ass prett fir d'Pods ze déngen.
  4. De Kubernetes Scheduler verdeelt pendend Pods op en neien Node. Wann duerno nach e puer Moduler an engem Waardezoustand bleiwen, gëtt de Prozess widderholl an nei Wirbelen ginn an de Cluster bäigefüügt.

Dräi Niveauen vun Autoscaling a Kubernetes: Wéi benotzen se se effektiv
Automatesch Versuergung vu Clusternoden an der Wollek

Bedenkt déi folgend wann Dir CA benotzt:

  • CA garantéiert datt all Pods am Stärekoup Plaz hunn fir ze lafen, onofhängeg vun der CPU-Laascht. Et probéiert och ze garantéieren datt et keng onnéideg Wirbelen am Cluster sinn.
  • CA registréiert de Besoin fir ze skaléieren no ongeféier 30 Sekonnen.
  • Wann e Node net méi gebraucht gëtt, ass de CA Standard fir 10 Minutten ze waarden ier de System ausskaléiert.
  • D'Autoscaling System huet d'Konzept vun expanders. Dëst si verschidde Strategien fir eng Grupp vu Wirbelen ze wielen, zu deenen nei Wirbelen bäigefüügt ginn.
  • Benotzt d'Optioun verantwortlech cluster-autoscaler.kubernetes.io/safe-to-evict (true). Wann Dir vill Pods installéiert, oder wa vill vun hinnen iwwer all Node verspreet sinn, verléiert Dir gréisstendeels d'Fäegkeet fir de Cluster auszebauen.
  • Benotzt PodDisruptionBudgetsfir ze verhënneren datt Pods geläscht ginn, wat d'Deeler vun Ärer Applikatioun komplett briechen.

Wéi Kubernetes Autoscalers mateneen interagéieren

Fir perfekt Harmonie soll d'Autoskaléierung souwuel um Podniveau (HPA / VPA) wéi och um Clusterniveau applizéiert ginn. Si interagéieren mateneen relativ einfach:

  1. HPAs oder VPAs aktualiséieren Pod Repliken oder Ressourcen, déi un existente Pods zougewisen sinn.
  2. Wann et net genuch Wirbelen fir déi geplangte Skaléierung sinn, bemierkt de CA d'Präsenz vu Pods an engem Waardezoustand.
  3. De CA verdeelt nei Noden.
  4. Moduler ginn op nei Wirbelen verdeelt.

Dräi Niveauen vun Autoscaling a Kubernetes: Wéi benotzen se se effektiv
Kollaborativ Kubernetes Skala-Out System

Gemeinsam Feeler am Kubernetes Autoscaling

Et gi verschidde gemeinsame Probleemer déi devops lafen wann Dir probéiert Autoscaling ëmzesetzen.

HPA a VPA hänke vu Metriken an e puer historesch Daten of. Wann net genuch Ressourcen zougedeelt ginn, ginn d'Module miniméiert a kënnen net Metriken generéieren. An dësem Fall wäert d'Autoscaling ni geschéien.

D'Skaléierungsoperatioun selwer ass Zäitempfindlech. Mir wëllen datt d'Moduler an de Stärekoup séier skaléieren - ier d'Benotzer Problemer oder Feeler bemierken. Dofir sollt d'Duerchschnëttszäit fir d'Skaléierung vun de Pods an de Cluster berücksichtegt ginn.

Ideal Szenario - 4 Minutten:

  1. 30 Sekonnen. Update Zil Metriken: 30-60 Sekonnen.
  2. 30 Sekonnen. HPA kontrolléiert metresch Wäerter: 30 Sekonnen.
  3. Manner wéi 2 Sekonnen. Pods ginn erstallt a ginn an d'Waardestand: 1 Sekonn.
  4. Manner wéi 2 Sekonnen. CA gesäit waarden Moduler a schéckt Uriff ze Dispositioun Wirbelen: 1 zweet.
  5. 3 Minutten. De Cloud Provider verdeelt Noden. K8s waarden bis se prett sinn: bis zu 10 Minutten (je e puer Faktoren).

Schlëmmste Fall (méi realistesch) Szenario - 12 Minutten:

  1. 30 Sekonnen. Update Zil Metriken.
  2. 30 Sekonnen. HPA iwwerpréift déi metresch Wäerter.
  3. Manner wéi 2 Sekonnen. D'Pods ginn erstallt a gitt an de Standby-Status.
  4. Manner wéi 2 Sekonnen. De CA gesäit d'Waardemoduler a mécht Uruff fir d'Knäppchen ze versuergen.
  5. 10 Minutten. De Cloud Provider verdeelt Noden. K8s waarden bis se prett sinn. D'Waardezäit hänkt vu verschiddene Faktoren of, sou wéi Verkeefer Verspéidung, OS Verzögerung, an Support Tools.

Duercherneen net d'Skaléierungsmechanismen vun de Cloud Provider mat eisem CA. Déi lescht leeft an engem Kubernetes Cluster, während de Cloud Provider Motor op enger Node Verdeelungsbasis funktionnéiert. Et weess net wat mat Äre Pods oder Applikatioun lass ass. Dës Systemer funktionnéieren parallel.

Wéi verwalten d'Skaléierung a Kubernetes

  1. Kubernetes ass e Ressource Management an Orchestratiounsinstrument. Operatiounen fir d'Gestioun vun Pods a Cluster Ressourcen sinn e Schlëssel Meilesteen am Meeschter um Kubernetes.
  2. Verstinn d'Logik vun der Pod Skalierbarkeet mat HPA a VPA berücksichtegt.
  3. CA sollt nëmme benotzt ginn wann Dir e gutt Verständnis vun de Bedierfnesser vun Äre Pods a Container hutt.
  4. Fir e Stärekoup optimal ze konfiguréieren, musst Dir verstoen wéi verschidde Skaléierungssystemer zesumme schaffen.
  5. Wann Dir d'Skaléierungszäit schätzt, behalen am schlëmmste Fall a beschte Fall Szenarie am Kapp.

Source: will.com

Setzt e Commentaire