Automatische schaalaanpassing van verticale pods in Azure Kubernetes Service (AKS)

Van toepassing op: ✔️ AKS Automatic ✔️ AKS Standard

In dit artikel vindt u een overzicht van het gebruik van de Vertical Pod Autoscaler (VPA) in Azure Kubernetes Service (AKS), die is gebaseerd op de open source Kubernetes-versie .

Voor de meeste productieworkloads is AKS Automatic de aanbevolen standaard-AKS-ervaring. AKS Automatic is standaard gereed voor productie en bevat VPA als een vooraf geconfigureerde clustermogelijkheid. In AKS Standard configureert en beheert u VPA expliciet.

Wanneer de VPA is geconfigureerd, worden resourceaanvragen en limieten voor containers per workload automatisch ingesteld op basis van het eerdere gebruik. De VPA maakt CPU en geheugen vrij voor andere pods en zorgt voor effectief gebruik van uw AKS-clusters. De Verticale Pod Autoscaler biedt aanbevelingen voor resourcegebruik in de loop van de tijd. Als u plotselinge toenamen in resourcegebruik wilt beheren, gebruikt u de Horizontal Pod Autoscaler om het aantal podreplica's naar behoefte te schalen.

Zie Wat is Azure Kubernetes Service (AKS) Automatisch voor meer informatie over AKS Automatic?

VPA in AKS Automatic en AKS Standard

VPA is beschikbaar in beide AKS-clustermodi, maar de installatie verschilt:

  • AKS Automatisch: VPA is vooraf geconfigureerd.
  • AKS Standard: VPA is optioneel en expliciet geconfigureerd.

Voor de meeste productiescenario's begint u met AKS Automatisch om standaardinstellingen voor productie te gebruiken en operationele overhead te verminderen.

Vergoedingen

De Verticale Pod Autoscaler biedt de volgende voordelen:

  • Analyseert en past processor- en geheugenbronnen aan om uw toepassingen de juiste grootte te geven . VPA is niet alleen verantwoordelijk voor opschalen, maar ook voor afschalen op basis van het resourcegebruik in de loop van de tijd.
  • Een pod met een schaalmodus die is ingesteld op automatisch of opnieuw maken , wordt verwijderd als deze de resourceaanvragen moet wijzigen.
  • U kunt CPU- en geheugenbeperkingen instellen voor afzonderlijke containers door een resourcebeleid op te geven.
  • Zorgt ervoor dat knooppunten de juiste resources hebben voor het plannen van pods.
  • Biedt configureerbare logboekregistratie van eventuele aanpassingen die zijn aangebracht aan processor- of geheugenresources.
  • Verbetert het gebruik van clusterresources en maakt CPU en geheugen vrij voor andere pods.

Beperkingen en overwegingen

Houd rekening met de volgende beperkingen en overwegingen bij het gebruik van de Vertical Pod Autoscaler:

  • VPA garandeert optimale ondersteuning voor maximaal 1000 pods per cluster dat is gekoppeld aan VerticalPodAutoscaler objecten. Naarmate het aantal bijgehouden pods toeneemt, stijgt het geheugenverbruik in alle VPA-componenten, met name bij de recommender, wat van invloed kan zijn op de schaalbaarheid.
  • VPA kan meer middelen aanbevelen dan beschikbaar is in het cluster, waardoor de pod niet kan worden toegewezen aan een knooppunt en niet kan worden uitgevoerd vanwege onvoldoende middelen. U kunt deze beperking oplossen door LimitRange in te stellen op de maximaal beschikbare resources per naamruimte, waardoor pods niet om meer resources vragen dan is opgegeven. U kunt ook maximaal toegestane resource-aanbevelingen per pod instellen in een VerticalPodAutoscaler object. De VPA kan een probleem met onvoldoende knooppuntresources niet volledig oplossen. Het limietbereik is vast, maar het resourcegebruik van het knooppunt wordt dynamisch gewijzigd.
  • Het is niet raadzaam om VPA te gebruiken met de Horizontale automatische schaalaanpassing van pods (HPA), die wordt geschaald op basis van dezelfde metrische gegevens over CPU- en geheugengebruik.
  • De VPA-aanbevelingsfunctie slaat slechts acht dagen aan historische gegevens op.
  • VPA biedt geen ondersteuning voor op JVM gebaseerde workloads vanwege beperkte zichtbaarheid van het werkelijke geheugengebruik van de workload.
  • VPA biedt geen ondersteuning voor het uitvoeren van uw eigen implementatie van VPA. Het gebruik van een extra of aangepaste aanbevelingsfunctie wordt ondersteund.
  • AKS Windows-containers worden niet ondersteund.

Overzicht van VPA

Het VPA-object bestaat uit drie onderdelen:

  • Aanbeveling: De aanbevelingsfunctie bewaakt het huidige en eerdere resourceverbruik, waaronder metrische geschiedenis, OOM-gebeurtenissen (Onvoldoende geheugen) en VPA-implementatiespecificaties, en gebruikt de informatie die wordt verzameld om aanbevolen waarden voor cpu- en geheugenaanvragen/-limieten voor containers op te geven.
  • Updater: De Updater bewaakt beheerde pods om ervoor te zorgen dat hun resourceaanvragen correct zijn ingesteld. Zo niet, dan worden deze pods verwijderd, zodat hun controllers ze opnieuw kunnen maken met de bijgewerkte aanvragen.
  • VPA-Toegangscontroller: De VPA-Toegangscontroller stelt de juiste resourceaanvragen in op nieuwe pods die zijn gemaakt of opnieuw worden gemaakt door hun controller op basis van de activiteiten van de Updater.

VPA-toegangscontroller

De VPA-toegangscontroller is een binair bestand dat zich registreert als een Mutating Admission Webhook. Wanneer er een nieuwe pod wordt gemaakt, ontvangt de VPA-toegangscontroller een aanvraag van de API-server en wordt geëvalueerd of er een overeenkomende VPA-configuratie is of een bijbehorende wordt gevonden en wordt de huidige aanbeveling gebruikt om resourceaanvragen in te stellen in de pod.

Een zelfstandige taak, overlay-vpa-cert-webhook-checkwordt buiten de VPA-toegangscontroller uitgevoerd. De overlay-vpa-cert-webhook-check taak maakt en vernieuwt de certificaten en registreert de VPA-toegangscontroller als een MutatingWebhookConfiguration.

VPA-objectbewerkingsmodi

Een resource voor automatische schaalaanpassing van verticale pods, meestal een implementatie, wordt ingevoegd voor elke controller waarvoor automatisch resourcevereisten moeten worden berekend.

Er zijn vier modi waarin de VPA werkt:

  • Recreate: VPA wijst resourceaanvragen toe tijdens het maken van pods en werkt bestaande pods bij door ze te verwijderen wanneer de aangevraagde resources aanzienlijk verschillen van de nieuwe aanbevelingen (met inachtneming van podDisruptionBudget, indien gedefinieerd). U moet deze modus alleen gebruiken als u ervoor moet zorgen dat de pods opnieuw worden opgestart wanneer de resourceaanvraag wordt gewijzigd. Anders raden we u aan de modus te gebruiken InPlaceOrRecreate , die indien mogelijk gebruikmaakt van updates zonder opnieuw opstarten.
  • InPlaceOrRecreate: In de InPlaceOrRecreate-modus probeert VPA podresourceaanvragen en -limieten bij te werken zonder de pod indien mogelijk opnieuw op te starten. Als in-place updates echter niet kunnen worden uitgevoerd voor een bepaalde resourcewijziging, valt VPA terug op het evicteren van de Pod (vergelijkbaar met de Recreate-modus), zodat de workloadcontroller een vervangende Pod kan maken met bijgewerkte resources. Deze modus is beschikbaar op AKS 1.34+.
  • Initial: VPA wijst alleen resourceaanvragen toe bij de creatie van de pod. Bestaande pods worden niet bijgewerkt. Deze modus is handig voor het testen en begrijpen van het VPA-gedrag zonder dat dit van invloed is op de actieve pods.
  • Off: VPA wijzigt niet automatisch de resourcevereisten van de pods. De aanbevelingen zijn berekend en kunnen worden geïnspecteerd in het VPA-object.

Waarschuwing

De Auto updatemodus is afgeschaft sinds VPA versie 1.4.0 (AKS 1.34+). De automatische modus is momenteel een alias voor Recreate de modus en gedraagt zich identiek. Het is geïntroduceerd om toekomstige uitbreiding van automatische updatestrategieën mogelijk te maken.

Implementatiepatroon voor toepassingsontwikkeling

Als u niet bekend bent met VPA, gebruikt u het volgende implementatiepatroon tijdens het ontwikkelen van toepassingen om de unieke kenmerken van het resourcegebruik van elke toepassing te identificeren, VPA te testen om te controleren of deze goed werkt en test naast andere Kubernetes-onderdelen om het resourcegebruik van het cluster te optimaliseren:

  1. Stel UpdateMode = "Off" in uw productiecluster in en voer VPA uit in de aanbevelingsmodus, zodat u VPA kunt testen en vertrouwd kunt raken met VPA. UpdateMode = "Off" kan voorkomen dat er een onjuiste configuratie wordt ingevoerd die een storing kan veroorzaken.
  2. Stel eerst waarneembaarheid vast door de telemetrie van het werkelijke resourcegebruik gedurende een bepaalde periode te verzamelen. Deze telemetrie helpt u inzicht te krijgen in het gedrag en eventuele tekenen van problemen van container- en podbronnen die worden beïnvloed door de workloads die worden uitgevoerd op deze containers en pods.
  3. Maak kennis met de bewakingsgegevens om inzicht te krijgen in de prestatiekenmerken. Op basis van dit inzicht stel je de gewenste aanvragen/limieten in, voor de volgende implementatie of upgrade.
  4. Stel updateMode de waarde in op Recreate, InPlaceOrRecreateof Initial afhankelijk van uw vereisten.

In AKS Automatic is VPA al beschikbaar als vooraf geconfigureerde mogelijkheid, dus focus op het afstemmen van beleid en modus. Voltooi in AKS Standard de VPA-installatie voordat u het implementatiepatroon toepast.