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

Kaaft zouverlĂ€sseg Hosting fir Site mat DDoS Schutz, VPS VDS Server đŸ”„ Kaaft zouverlĂ©issegt WebsĂ€ithosting mat DDoS-Schutz, VPS VDS Server | ProHoster