Delen via


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

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 .

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 automatische schaalaanpassing van pods biedt aanbevelingen voor resourcegebruik gedurende een bepaalde periode. Als u plotselinge toenamen in resourcegebruik wilt beheren, gebruikt u de horizontale automatische schaalaanpassing van pods, waarmee het aantal podreplica's naar behoefte wordt geschaald.

Vergoedingen

De verticale automatische schaalaanpassing van pods 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 omhoog schalen, maar ook voor omlaag schalen 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 automatische schaalaanpassing van verticale pods:

  • VPA ondersteunt maximaal 1000 pods die zijn gekoppeld aan VerticalPodAutoscaler objecten per cluster.
  • VPA kan meer resources aanbevelen dan beschikbaar is in het cluster, waardoor de pod niet kan worden toegewezen aan een knooppunt en kan worden uitgevoerd vanwege onvoldoende resources. 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 resourceaan 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 activiteit 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:

  • Auto: VPA wijst resourceaanvragen toe tijdens het maken van pods en werkt bestaande pods bij met behulp van het aanbevolen updatemechanisme. Auto, wat gelijk is aan Recreate, is de standaardmodus. Zodra er updates van podaanvragen beschikbaar zijn die gratis opnieuw worden opgestart of in-place zijn, kan deze worden gebruikt als het voorkeursupdatemechanisme door de Auto modus. Met de Auto modus verwijdert VPA een pod als deze de resourceaanvragen moet wijzigen. Dit kan ertoe leiden dat de pods allemaal tegelijk opnieuw worden opgestart, wat kan leiden tot inconsistenties van de toepassing. U kunt herstarts beperken en consistentie in deze situatie behouden met behulp van een PodDisruptionBudget.
  • 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 Auto , die profiteert van updates zonder opnieuw opstarten zodra deze beschikbaar zijn.
  • Initial: VPA wijst alleen resourceaanvragen toe tijdens het maken 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 worden berekend en kunnen worden geïnspecteerd in het VPA-object.

Implementatiepatroon voor toepassingsontwikkeling

Als u niet bekend bent met VPA, raden we het volgende implementatiepatroon aan tijdens het ontwikkelen van toepassingen om de unieke kenmerken van het resourcegebruik te identificeren, VPA te testen om te controleren of deze goed werkt en naast andere Kubernetes-onderdelen te testen 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, zodat u inzicht krijgt in het gedrag en eventuele tekenen van problemen van container- en podresources die worden beïnvloed door de workloads die erop worden uitgevoerd.
  3. Maak kennis met de bewakingsgegevens om inzicht te krijgen in de prestatiekenmerken. Stel op basis van dit inzicht de gewenste aanvragen/limieten in en vervolgens in de volgende implementatie of upgrade.
  4. Stel updateMode de waarde in op Auto, Recreateof Initial afhankelijk van uw vereisten.

Volgende stappen

Zie De verticale automatische schaalaanpassing van pods in AKS gebruiken voor meer informatie over het instellen van de verticale schaalaanpassing van pods in AKS.