Overzicht van schalen in Azure Kubernetes Service (AKS) — HPA, VPA, Cluster Autoscaler en KEDA

Wanneer u toepassingen uitvoert in Azure Kubernetes Service (AKS), kunt u pods, podbronnen, knooppunten of gebeurtenisgestuurde workloads schalen om te voldoen aan wijzigingen in de vraag. AKS ondersteunt handmatig schalen, horizontaal schalen van pods (HPA), verticaal schalen van pods (VPA), Cluster Autoscaler, Kubernetes Event-Driven Autoscaling (KEDA), automatische inrichting van knooppunten en burstschaling met Azure Container Instances (ACI).

De juiste schaalmethode kiezen

Methode voor schalen Geschikt voor Belangrijkste metrische gegevens Guide
Horizontal Pod Autoscaler (HPA) Stateless of partitioneerbare workloads met wisselende vraag CPU-gebruik, RPS, wachtrijdiepte Wanneer moet ik Automatische schaalaanpassing van horizontale pods (HPA) gebruiken in Kubernetes?
Vertical Pod Autoscaler (VPA) Niet-paralleliseerbare werklasten; het juist afstemmen van de resourceaanvragen van pods CPU-/geheugenresourcegebruik Vertical Pod Autoscaler gebruiken in AKS
Automatische schaalaanpassing van clusters Capaciteit op node-niveau wanneer pods in de status Pending blijven Wachtende pods Cluster Autoscaler in AKS gebruiken
Automatisch inrichten van knooppunten (NAP) Wachtende workloads die juist gedimensioneerde VM-capaciteit nodig hebben resourcevereisten voor wachtende pods Overzicht van automatische provisioning van knooppunten
KEDA Gebeurtenisgestuurde workloads; schalen naar nul vereist Wachtrijlengte, gebeurtenisachterstand Overzicht van de KEDA-add-on
ACI-burst schalen Linux-workloads met piekbelasting die binnen de beperkingen van virtuele nodes vallen piekvraag Virtuele knooppunten maken met Azure Container Instances

Wanneer moet u elke schaalmethode gebruiken

  • Gebruik HPA wanneer uw workload meerdere identieke replica's kan uitvoeren en de vraag fluctueert op basis van CPU, geheugen of aanvraagsnelheid.
  • Gebruik VPA wanneer uw werkbelasting niet horizontaal kan worden geschaald (niet parallelleerbaar) of als u resourceaanvragen met de juiste grootte wilt aanpassen voor een betere planning.
  • Gebruik Cluster Autoscaler wanneer u vooraf gedefinieerde knooppuntgroepen hebt en knooppunten moet toevoegen of verwijderen op basis van de vraag van wachtende pods.
  • Gebruik NAP wanneer u automatische vm-SKU-selectie en knooppuntinrichting wilt uitvoeren zonder knooppuntgroepen handmatig te configureren.
  • Gebruik KEDA wanneer schalen moet reageren op externe gebeurtenissen (wachtrijen, streams, berichten) of als u scale-to-zero-mogelijkheid nodig hebt.
  • Gebruik ACI Burst-schaalaanpassing wanneer u snelle capaciteitsuitbreiding nodig hebt voor Linux-workloads zonder te wachten op VM-inrichting (meestal 2-5 minuten).

Snelle aanbeveling

Voor de meeste productieworkloads begint u met AKS Automatic, waarmee NAP, VPA en KEDA vooraf worden geconfigureerd. In AKS Standard schakelt u deze functies expliciet in en configureert u deze functies.

Pods of knooppunten handmatig schalen

U kunt podreplica's en knooppunten handmatig schalen om te testen hoe uw toepassing reageert op wijzigingen in beschikbare resources of om een vaste hoeveelheid capaciteit te behouden. Als u handmatig wilt schalen, definieert u het vereiste aantal replica's of knooppunten. Kubernetes maakt of verwijdert vervolgens pods, terwijl AKS knooppunten toevoegt aan of verwijdert uit de toepasselijke knooppuntgroep.

Wanneer u knooppunten omlaag schaalt, roept AKS de relevante Azure Compute-API aan voor het rekentype van het cluster. Voor clusters die zijn gebouwd op Virtual Machine Scale Sets, bepaalt de Virtual Machine Scale Sets-API welke knooppunten moeten worden verwijderd. Zie de veelgestelde vragen over Virtual Machine Scale Sets voor meer informatie.

Om aan de slag te gaan, raadpleegt u:

Horizontale Pod Autoscaler

Gebruik HPA wanneer uw workload meerdere identieke replica's kan uitvoeren en de vraag fluctueert. Het schaalt op basis van CPU of geheugen, applicatiemetingen (verzoeken per seconde, latentie) of metrische gegevens van externe wachtrijen en achterstanden. Wanneer replica's mogelijk de bestaande knooppuntcapaciteit overschrijden, gebruikt u de vooraf geconfigureerde NAP-mogelijkheid in AKS Automatic of configureert u Cluster Autoscaler of NAP in AKS Standard.

Gebruik HPA en VPA niet op dezelfde CPU- of geheugengegevens. Als u beide automatische schaalaanpassingen wilt gebruiken, gebruikt u VPA in de aanbevelingsmodus of configureert u HPA voor het gebruik van afzonderlijke aangepaste metrische gegevens.

Schermafbeelding van een diagram die laat zien hoe de Horizontal Pod Autoscaler werkt met AKS.

Meer informatie: Wanneer moet ik Horizontale automatische schaalaanpassing van pods (HPA) gebruiken in Kubernetes?

Zie ook: Vertical Pod Autoscaler in AKS gebruiken om CPU- en geheugenaanvragen voor pods op de juiste grootte af te stemmen.

Verticale Pod-autoscaler

Vertical Pod Autoscaler analyseert het CPU- en geheugengebruik van pods en beveelt geschikte resourceaanvragen aan of past deze toe. Gebruik VPA om werkbelastingen die niet efficiënt kunnen schalen door replica's toe te voegen, passend te dimensioneren of om de planning en resourcebenutting te verbeteren.

Afhankelijk van de update-modus kan VPA aanbevelingen toepassen wanneer pods worden aangemaakt, of pods uitzetten en opnieuw aanmaken met bijgewerkte resourceverzoeken. Controleer de beschikbaarheidsvereisten voor workloads voordat VPA wijzigingen automatisch kan toepassen.

Ga aan de slag met Vertical Pod Autoscaler in AKS gebruiken.

Cluster-autoscaler

Cluster Autoscaler past het aantal knooppunten in een nodepool aan op basis van de vereisten voor het inplannen van pods. Hiermee worden knooppunten toegevoegd wanneer pods niet kunnen worden gepland vanwege onvoldoende knooppuntcapaciteit en worden onderbenutte knooppunten verwijderd wanneer hun workloads elders kunnen worden uitgevoerd.

Schermopname van een diagram waarin wordt getoond hoe de automatische schaalaanpassing van clusters werkt met AKS.

Automatische schaalaanpassing van clusters wordt vaak gebruikt met HPA. HPA past het aantal podreplica’s aan op basis van de workload, terwijl Cluster Autoscaler de nodecapaciteit aanpast om die pods te kunnen hosten.

Zie Automatische schaalaanpassing van clusters gebruiken in AKS om aan de slag te gaan.

Uitschaalgebeurtenissen

Als een knooppuntgroep niet over voldoende compute-resources voor een pod beschikt, blijft de pod Pending. Wanneer Cluster Autoscaler pods detecteert die niet kunnen worden gepland vanwege resourcebeperkingen van de knooppuntgroep, verhoogt deze het aantal knooppunten in de knooppuntgroep. Kubernetes plant de in behandeling zijnde pods nadat de nieuwe knooppunten zijn ingericht en gereed zijn.

Het inrichten van VM-knooppunten kan enkele minuten duren. Voor workloads met plotselinge piekvraag kunt u overwegen om virtuele knooppunten en Azure Container Instances te gebruiken.

Inschalen van gebeurtenissen

Cluster Autoscaler controleert knooppunten op onderbenutting en bepaalt of hun pods op andere knooppunten kunnen worden uitgevoerd. Wanneer een knooppunt niet meer nodig is, worden de pods opnieuw ingepland door Kubernetes en verwijdert AKS het knooppunt uit de knooppuntgroep.

Met inschaalbewerkingen kunnen workloads worden onderbroken wanneer pods tussen knooppunten worden verplaatst. Gebruik meerdere pod-replica’s en configureer passende instellingen voor beschikbaarheid om onderbrekingen tot een minimum te beperken.

Automatische schaalaanpassing op basis van Kubernetes

Kubernetes Gebeurtenisgestuurde Automatische schaalaanpassing (KEDA) is een opensource-onderdeel waarmee workloads worden geschaald op basis van gebeurtenissen. KEDA breidt Kubernetes uit met aangepaste resources, waaronder ScaledObject, die beschrijven hoe een workload moet reageren op een gebeurtenisbron of metrische gegevens.

KEDA is handig voor workloads die wachtrijen, streams, berichten of andere gebeurtenisachterstanden verwerken. Het kan de ondersteunde workloads terugschalen naar nul wanneer er geen gebeurtenissen zijn en het aantal replica's verhogen naarmate de wachtrij groeit.

Combineer een KEDA ScaledObject niet met een afzonderlijke HPA voor dezelfde workload. KEDA maakt intern een HPA aan en gebruikt die, dus de autoscalers zouden met elkaar concurreren.

Zie het KEDA-invoegtoepassingsoverzicht om aan de slag te gaan.

Automatische provisioning van knooppunten

Het automatisch inrichten van knooppunten (NAP) maakt gebruik van het opensource Karpenter-project om knooppunten in te richten en te beheren volgens de vereisten van de in behandeling zijnde pod. NAP selecteert een geschikte VM-SKU en het juiste aantal knooppunten om te voldoen aan de realtime workloadvraag.

NAP start met een toegestane set VM-SKU's en selecteert capaciteit voor wachtende workloads. U kunt resourcebeperkingen en scheduleringsvoorkeuren definiëren om te regelen hoe knooppunten worden ingericht en workloads worden verdeeld.

Schaalaanpassing en beveiliging van besturingsvlak

Met AKS worden onderdelen van het besturingsvlak automatisch geschaald op basis van clustergrootte en resourcegebruik van API-servers. Deze richtlijnen zijn van toepassing op AKS Automatic en AKS Standard. Gebruik de prijscategorie Standard of Premium voor productie- of schaalworkloads.

Kubernetes heeft een multidimensionale schaalvelop waarin elk resourcetype verschillende eisen stelt op het besturingsvlak. Secrets worden bijvoorbeeld vaak gemonitord door meerdere controllers en pods die een eerste aanroep via LIST doen, waardoor meer control plane-belasting ontstaat dan bij resources die minder vaak worden gemonitord. Het schalen in één dimensie kan de capaciteit in andere dimensies verminderen. Zo kan het draaien van honderdduizenden pods bijvoorbeeld de mutatiesnelheid van pods verlagen die door het besturingsvlak wordt ondersteund. Raadpleeg aanbevolen procedures voor Kubernetes-clients voor grootschalige AKS-clusters.

Als u wilt controleren of het besturingsvlak omhoog is geschaald, controleert u de large-cluster-control-plane-scaling-status ConfigMap:

kubectl describe configmap large-cluster-control-plane-scaling-status -n kube-system

De aanwezigheid van deze ConfigMap bevestigt dat AKS het besturingsvlak omhoog schaalt.

Beveiligingsmaatregelen voor het besturingsvlak

Als het automatisch schalen van de API-server deze niet onder hoge belasting stabiliseren, kan AKS een beheerde API-serverbeveiliging implementeren. Deze beveiligingsmaatregel als laatste redmiddel vertraagt clientverzoeken van niet-systeemclients om te voorkomen dat de control plane niet meer reageert. Systeemkritieke API-serveroproepen van onderdelen, zoals kubelet blijven functioneren.

Als u wilt bepalen of de beheerde API-serverbeveiliging is toegepast, controleert u op de aks-managed-apiserver-guardFlowSchema en PriorityLevelConfiguration:

kubectl get flowschemas
kubectl get prioritylevelconfigurations

De beveiliging is actief wanneer aks-managed-apiserver-guard in beide opdrachtuitvoeren verschijnt.

Als deze resources aanwezig zijn, raadpleegt u de probleemoplossingsgids voor de API-server en etcd voor richtlijnen om het probleem te verhelpen.

Uitschalen naar Azure Container Instances (ACI)

U kunt AKS integreren met Azure Container Instances om snelle toename van de vraag af te handelen. Automatische schaalaanpassing van pods kan meer replica's maken dan de bestaande knooppuntgroep kan ondersteunen, terwijl het inrichten van extra VM-gebaseerde knooppunten enkele minuten kan duren. ACI biedt rekencapaciteit zonder extra VM-knooppunten.

Virtuele knooppunten (virtuele Kubernetes-knooppunten met ACI-ondersteuning) ondersteunen Linux-pods en -knooppunten en vereisen een AKS-cluster dat gebruikmaakt van Azure CNI-netwerken. Ze bieden geen ondersteuning voor enkele veelvoorkomende scenario's, waaronder geautoriseerde IP-bereiken van api-servers, permanente volumes en permanente volumeclaims, IPv6 en beheerde identiteiten die zijn gekoppeld aan virtuele knooppunten. Controleer de beperkingen van het virtuele knooppunt voordat u ACI-burst-schaalaanpassing gebruikt.

Schermopname van een diagram waarin wordt getoond hoe Azure Container Instances werkt met AKS.

Het onderdeel virtuele AKS-knooppunten is gebaseerd op Virtual Kubelet en presenteert ACI als een virtueel Kubernetes-knooppunt. Kubernetes kan geschikte pods via het virtuele knooppunt inplannen om als ACI-containerinstanties te worden uitgevoerd in plaats van rechtstreeks op AKS-VM-knooppunten.

Virtuele knooppunten gebruiken een ander subnet in hetzelfde virtuele netwerk als het AKS-cluster. Deze configuratie biedt een privénetwerkverbinding tussen AKS en ACI, terwijl ACI kan fungeren als een logische uitbreiding van het cluster.

Gebruik de volgende resources om de schaalmethode te implementeren die past bij uw workload:

Zie voor meer informatie over de belangrijkste Kubernetes- en AKS-concepten: