Een cluster automatisch schalen om te voldoen aan de toepassingsvraag op Azure Kubernetes Service (AKS)

Als u wilt voldoen aan de toepassingseisen in Azure Kubernetes Service (AKS), moet u mogelijk het aantal knooppunten aanpassen dat uw workloads uitvoeren. Het onderdeel voor automatische schaal aanpassen van clusters kan pods in uw cluster bekijken die niet kunnen worden gepland vanwege resourcebeperkingen. Wanneer er problemen worden gedetecteerd, wordt het aantal knooppunten in een knooppuntgroep verhoogd om aan de vraag van de toepassing te voldoen. Knooppunten worden ook regelmatig gecontroleerd op een gebrek aan draaiende pods, met het aantal knooppunten dat vervolgens naar behoefte afnam. Dankzij deze mogelijkheid om het aantal knooppunten in uw AKS-cluster automatisch omhoog of omlaag te schalen, kunt u een efficiënt, rendabel cluster uitvoeren.

In dit artikel wordt beschreven hoe u de automatische schaalverdeder voor clusters in een AKS-cluster inschakelen en beheren.

Voordat u begint

Voor dit artikel moet u Azure CLI versie 2.0.76 of hoger uitvoeren. Voer az --version uit om de versie te bekijken. Zie Azure CLI installeren als u de CLI wilt installeren of een upgrade wilt uitvoeren.

Over de automatische schaalverdeder van clusters

Clusters moeten vaak automatisch worden geschaald om zich aan te passen aan veranderende toepassingseisen, zoals tussen de werkdag en 's avonds of in het weekend. AKS-clusters kunnen op twee manieren worden geschaald:

  • De automatische schaalverdeder van clusters kijkt naar pods die niet kunnen worden gepland op knooppunten vanwege resourcebeperkingen. Het cluster verhoogt vervolgens automatisch het aantal knooppunten.
  • De horizontale automatische schaalverlener voor pods maakt gebruik van de Metrics Server in een Kubernetes-cluster om de resourcevraag van pods te bewaken. Als een toepassing meer resources nodig heeft, wordt het aantal pods automatisch verhoogd om aan de vraag te voldoen.

De automatische schaalverdeder voor clusters en horizontale automatische schaalverlening van pods werken vaak samen om de vereiste toepassingseisen te ondersteunen

Zowel de horizontale automatische schaalverlener voor pods als de automatische schaalverdeder voor clusters kan naar behoefte ook het aantal pods en knooppunten verlagen. De automatische schaalverdeder voor clusters vermindert het aantal knooppunten wanneer er een bepaalde tijd ongebruikte capaciteit is. Pods op een knooppunt dat door de automatische schaalverdeder van het cluster moet worden verwijderd, worden veilig elders in het cluster gepland. Het automatisch schalen van clusters kan mogelijk niet omlaag worden geschaald als pods niet kunnen worden verplaatst, zoals in de volgende situaties:

  • Een pod wordt rechtstreeks gemaakt en wordt niet geback-by door een controllerobject, zoals een implementatie- of replicaset.
  • Een POD-onderbrekingsbudget (PDB) is te beperkend en staat niet toe dat het aantal pods onder een bepaalde drempelwaarde valt.
  • Een pod maakt gebruik van knooppunt-selectors of anti-affiniteit die niet kunnen worden gehonoreerd als deze is gepland op een ander knooppunt.

Zie What types of pods can prevent the cluster autoscaler from removing a node? (Welke typen pods kunnen voorkomen dat het automatisch schalen van clusters een knooppunt verwijdert) voor meer informatie over hoe automatische schaalvergroting van clusters mogelijk niet kan worden omlaag geschaald.

De automatische schaalvergroting van clusters maakt gebruik van opstartparameters voor bijvoorbeeld tijdsintervallen tussen schaalgebeurtenissen en resourcedrempelwaarden. Zie Using the autoscaler profile(Het profiel voor automatisch schalen gebruiken) voor meer informatie over welke parameters de automatische schaalverdeder voor clusters gebruikt.

De clusters en horizontale automatische schaalschalen voor pods kunnen samenwerken en worden vaak beide geïmplementeerd in een cluster. In combinatie is de horizontale automatische schaalverdeder voor pods gericht op het uitvoeren van het aantal pods dat nodig is om aan de vraag van de toepassing te voldoen. De automatische schaalverdeder voor clusters is gericht op het uitvoeren van het aantal knooppunten dat is vereist voor de ondersteuning van de geplande pods.

Notitie

Handmatig schalen is uitgeschakeld wanneer u automatische schaalbaarheid van clusters gebruikt. Laat de automatische schaalverdeder van clusters het vereiste aantal knooppunten bepalen. Als u het cluster handmatig wilt schalen, schakelt u de automatische schaalvergroting voor clusters uit.

Een AKS-cluster maken en automatisch schalen van clusters inschakelen

Als u een AKS-cluster wilt maken, gebruikt u de opdracht az aks create. Als u de automatische schaalverdeder voor clusters in de knooppuntgroep voor het cluster wilt inschakelen en configureren, gebruikt u de --enable-cluster-autoscaler parameter en geeft u een knooppunt en --min-count --max-count op.

Belangrijk

De automatische schaalverdeder voor clusters is een Kubernetes-onderdeel. Hoewel het AKS-cluster gebruikmaakt van een virtuele-machineschaalset voor de knooppunten, moet u de instellingen voor automatische schaalsets niet handmatig inschakelen of bewerken in de Azure Portal of met behulp van de Azure CLI. Laat de kubernetes-cluster automatisch schalen de vereiste schaalinstellingen beheren. Zie Kan ik de AKS-resources in de knooppuntresourcegroep wijzigen voor meer informatie.

In het volgende voorbeeld wordt een AKS-cluster gemaakt met één knooppuntgroep met een virtuele-machineschaalset. Ook wordt de automatische schaalset van clusters in de knooppuntgroep voor het cluster mogelijk en worden minimaal 1 en maximaal 3 knooppunten gebruikt:

# First create a resource group
az group create --name myResourceGroup --location eastus

# Now create the AKS cluster and enable the cluster autoscaler
az aks create \
  --resource-group myResourceGroup \
  --name myAKSCluster \
  --node-count 1 \
  --vm-set-type VirtualMachineScaleSets \
  --load-balancer-sku standard \
  --enable-cluster-autoscaler \
  --min-count 1 \
  --max-count 3

Het duurt enkele minuten om het cluster te maken en de instellingen voor automatische schaal aanpassen van clusters te configureren.

Een bestaand AKS-cluster bijwerken om automatische schaalverdedering van clusters in te kunnenschakelen

Gebruik de opdracht az aks update om de automatische schaalverdeling voor clusters in te stellen en te configureren in de knooppuntgroep voor het bestaande cluster. Gebruik de --enable-cluster-autoscaler parameter en geef een knooppunt en --min-count --max-count op.

Belangrijk

De automatische schaalverdeder voor clusters is een Kubernetes-onderdeel. Hoewel het AKS-cluster gebruikmaakt van een virtuele-machineschaalset voor de knooppunten, moet u de instellingen voor automatische schaalsets niet handmatig inschakelen of bewerken in de Azure Portal of met behulp van de Azure CLI. Laat de kubernetes-cluster automatisch schalen de vereiste schaalinstellingen beheren. Zie Kan ik de AKS-resources in de knooppuntresourcegroep wijzigen voor meer informatie.

In het volgende voorbeeld wordt een bestaand AKS-cluster bijgewerkt om de automatische schaalset van clusters in te stellen voor de knooppuntgroep voor het cluster en wordt een minimum van 1 en maximaal 3 knooppunten geconfigureerd:

az aks update \
  --resource-group myResourceGroup \
  --name myAKSCluster \
  --enable-cluster-autoscaler \
  --min-count 1 \
  --max-count 3

Het duurt enkele minuten om het cluster bij te werken en de instellingen voor automatische schaalverdedering voor clusters te configureren.

De instellingen voor automatische schaalverdedering van clusters wijzigen

Belangrijk

Als u meerdere knooppuntgroepen in uw AKS-cluster hebt, gaat u naar de sectie Automatisch schalen met meerdere agentpools. Clusters met meerdere agentpools vereisen het gebruik van de az aks nodepool opdrachtset om specifieke eigenschappen van knooppuntgroepen te wijzigen in plaats van az aks .

In de vorige stap voor het maken van een AKS-cluster of het bijwerken van een bestaande knooppuntgroep is het minimale aantal knooppunt voor automatische schaalsets van clusters ingesteld op 1 en is het maximum aantal knooppunt ingesteld op 3. Als de vraag van uw toepassing verandert, moet u mogelijk het aantal knooppunt voor automatische schaalschalen van clusters aanpassen.

Als u het aantal knooppunt wilt wijzigen, gebruikt u de opdracht az aks update.

az aks update \
  --resource-group myResourceGroup \
  --name myAKSCluster \
  --update-cluster-autoscaler \
  --min-count 1 \
  --max-count 5

In het bovenstaande voorbeeld wordt automatisch schalen van clusters op de pool met één knooppunt in myAKSCluster bijgewerkt naar minimaal 1 en maximaal 5 knooppunten.

Notitie

De automatische schaalvergroting van clusters neemt beslissingen over schaalbaarheid op basis van het minimum- en maximumaantal dat is ingesteld voor elke knooppuntgroep, maar dwingt deze niet af na het bijwerken van het minimum- of maximumaantal. Als u bijvoorbeeld een minimum aantal van 5 instelt wanneer het huidige aantal knooppunt 3 is, wordt de pool niet onmiddellijk omhoog geschaald naar 5. Als het minimumaantal voor de knooppuntgroep een waarde heeft die hoger is dan het huidige aantal knooppunten, worden de nieuwe minimale of maximale instellingen in acht genomen wanneer er voldoende niet-te schalen pods aanwezig zijn die 2 nieuwe extra knooppunten vereisen en een gebeurtenis voor automatische schaalverdediging activeren. Na de schaalgebeurtenis worden de nieuwe limieten voor het aantal in acht genomen.

Controleer de prestaties van uw toepassingen en services en pas het aantal knooppunt voor automatische schaalverlening van clusters aan aan de vereiste prestaties.

Het profiel voor automatisch schalen gebruiken

U kunt ook gedetailleerdere details van de automatische schaalverdedering voor clusters configureren door de standaardwaarden te wijzigen in het profiel voor automatische schaalverlening voor het hele cluster. Een gebeurtenis voor omlaag schalen vindt bijvoorbeeld plaats nadat knooppunten na 10 minuten te veel worden gebruikt. Als u elke 15 minuten workloads hebt die worden toegepast, kunt u het profiel voor automatische schaalvergroting wijzigen om na 15 of 20 minuten omlaag te schalen onder gebruikte knooppunten. Wanneer u automatische schaal aanpassen van clusters inschakelen, wordt een standaardprofiel gebruikt, tenzij u verschillende instellingen opgeeft. Het profiel voor automatische schaal aanpassen van clusters heeft de volgende instellingen die u kunt bijwerken:

Instelling Beschrijving Standaardwaarde
scaninterval Hoe vaak het cluster opnieuw wordt geëvalueerd voor omhoog of omlaag schalen 10 seconden
scale-down-delay-after-add Hoe lang na omhoog schalen de evaluatie van omlaag schalen wordt hervat 10 minuten
scale-down-delay-after-delete Hoe lang na het verwijderen van een knooppunt de evaluatie van omlaag schalen wordt hervat scaninterval
scale-down-delay-after-failure Hoe lang na een fout met omlaag schalen de evaluatie van omlaag schalen wordt hervat 3 minuten
omlaag schalen -onnodige tijd Hoe lang een knooppunt onnodig moet zijn voordat het in aanmerking komt voor omlaag schalen 10 minuten
scale-down-unready-time Hoe lang een ongelezen knooppunt onnodig moet zijn voordat het in aanmerking komt voor omlaag schalen 20 minuten
scale-down-utilization-threshold Knooppuntgebruiksniveau, gedefinieerd als som van aangevraagde resources gedeeld door capaciteit, waaronder een knooppunt kan worden overwogen om omlaag te schalen 0,5
max-graceful-termination-sec Maximum aantal seconden dat de automatische schaalvergroting van het cluster wacht op beëindiging van pods bij het omlaag schalen van een knooppunt 600 seconden
balance-similar-node-groups Detecteert vergelijkbare knooppuntgroepen en balancert het aantal knooppunten ertussen onjuist
Expander Type knooppuntgroep expander dat moet worden gebruikt bij omhoog schalen. Mogelijke waarden: most-pods , random , least-waste , priority willekeurig
skip-nodes-with-local-storage Als automatische schaalverdeling van het cluster waar is, worden knooppunten met pods met lokale opslag, bijvoorbeeld EmptyDir of HostPath, nooit verwijderd true
skip-nodes-with-system-pods Als automatisch schalen van clusters waar is, worden knooppunten met pods van kube-system nooit verwijderd (met uitzondering van DaemonSet- of mirror-pods) true
max-empty-bulk-delete Maximum aantal lege knooppunten dat tegelijkertijd kan worden verwijderd 10 knooppunten
new-pod-scale-up-delay Voor scenario's zoals burst/batch-schaal waarbij u niet wilt dat CA actie onder ondernemen voordat de kubernetes-scheduler alle pods kan plannen, kunt u ca vertellen dat niet-geplande pods moeten worden genegeerd voordat ze een bepaalde leeftijd hebben. 0 seconden
max-total-unready-percentage Maximumpercentage van ongelezen knooppunten in het cluster. Nadat dit percentage is overschreden, stopt ca-bewerkingen 45%
max.node-provision-time Maximale tijd dat de automatische schaalverdeder wacht tot een knooppunt is ingericht 15 minuten
ok-total-unready-count Aantal toegestane ongelezen knooppunten, ongeacht max-total-unready-percentage 3 knooppunten

Belangrijk

Het profiel voor automatische schaalschalen van clusters is van invloed op alle knooppuntgroepen die gebruikmaken van de automatische schaalverdeder voor clusters. U kunt geen profiel voor automatisch schalen per knooppuntgroep instellen.

Voor het profiel voor automatische schaalschalen van clusters is versie 2.11.1 of hoger van de Azure CLI vereist. Zie Azure CLI installeren als u de CLI wilt installeren of een upgrade wilt uitvoeren.

Het profiel voor automatische schaalschalen van clusters instellen op een bestaand AKS-cluster

Gebruik de opdracht az aks update met de parameter cluster-autoscaler-profile om het profiel voor automatische schaalset van het cluster in te stellen op uw cluster. In het volgende voorbeeld wordt de instelling voor het scaninterval in het profiel ingesteld op 30 seconden.

az aks update \
  --resource-group myResourceGroup \
  --name myAKSCluster \
  --cluster-autoscaler-profile scan-interval=30s

Wanneer u de automatische schaalverdedering van clusters in het cluster inschakelen voor knooppuntgroepen, gebruiken deze clusters ook het profiel voor automatische schaalverdedering van clusters. Bijvoorbeeld:

az aks nodepool update \
  --resource-group myResourceGroup \
  --cluster-name myAKSCluster \
  --name mynodepool \
  --enable-cluster-autoscaler \
  --min-count 1 \
  --max-count 3

Belangrijk

Wanneer u het profiel voor automatische schaalschalen voor clusters instelt, worden alle bestaande knooppuntgroepen waarop automatische schaalset voor clusters is ingeschakeld, onmiddellijk van het profiel gebruik gemaakt.

Het profiel voor automatisch schalen van clusters instellen bij het maken van een AKS-cluster

U kunt ook de parameter cluster-autoscaler-profile gebruiken wanneer u uw cluster maakt. Bijvoorbeeld:

az aks create \
  --resource-group myResourceGroup \
  --name myAKSCluster \
  --node-count 1 \
  --enable-cluster-autoscaler \
  --min-count 1 \
  --max-count 3 \
  --cluster-autoscaler-profile scan-interval=30s

Met de bovenstaande opdracht maakt u een AKS-cluster en definieert u het scaninterval als 30 seconden voor het profiel voor automatische schaalverlening voor het hele cluster. Met de opdracht wordt ook de automatische schaalset van clusters in de initiële knooppuntgroep in staat stelt het minimumaantal knooppunt in op 1 en het maximumaantal knooppunt op 3.

Automatisch schalen van clusters opnieuw instellen op standaardwaarden

Gebruik de opdracht az aks update om het profiel voor automatische schaalset van clusters in uw cluster opnieuw in te stellen.

az aks update \
  --resource-group myResourceGroup \
  --name myAKSCluster \
  --cluster-autoscaler-profile ""

De automatische schaalverdeder voor clusters uitschakelen

Als u de automatische schaalverdeling voor clusters niet meer wilt gebruiken, kunt u deze uitschakelen met behulp van de opdracht az aks update en de parameter op te --disable-cluster-autoscaler geven. Knooppunten worden niet verwijderd wanneer de automatische schaalverdeder voor clusters is uitgeschakeld.

az aks update \
  --resource-group myResourceGroup \
  --name myAKSCluster \
  --disable-cluster-autoscaler

U kunt het cluster handmatig schalen nadat u de automatische schaalvergroting van het cluster hebt uitgeschakeld met behulp van de opdracht az aks scale. Als u de horizontale automatische schaalfunctie voor pods gebruikt, blijft die functie worden uitgevoerd met de automatische schaalverdeder voor clusters uitgeschakeld, maar kunnen pods mogelijk niet worden gepland als alle knooppuntresources in gebruik zijn.

Een uitgeschakelde automatische schaalverdeder voor clusters opnieuw inschakelen

Als u automatisch schalen van clusters opnieuw wilt inschakelen op een bestaand cluster, kunt u deze opnieuw inschakelen met de opdracht az aks update, waarin u de --enable-cluster-autoscaler parameters , en --min-count --max-count opgeeft.

Logboeken en status van automatische schaalverdedering van clusters ophalen

Voor het diagnosticeren en opsporen van gebeurtenissen van automatische schaalverschalen, kunnen logboeken en status worden opgehaald uit de invoegvoegs voor automatische schaalverschalen.

AKS beheert de automatische schaal van clusters namens u en voert deze uit in het beheerde besturingsvlak. U kunt het besturingsvlak-knooppunt inschakelen om de logboeken en bewerkingen van de CA weer te geven.

Volg deze stappen om logboeken te configureren die vanuit de automatische schaalverdeder voor clusters naar Log Analytics moeten worden ge pusht.

  1. Stel een regel in voor resourcelogboeken om logboeken voor automatisch schalen van clusters naar Log Analytics te pushen. Instructies worden hier beschreven.Zorg ervoor dat u het selectievakje incheckt cluster-autoscaler bij het selecteren van opties voor 'Logboeken'.
  2. Selecteer de sectie 'Logboeken' in uw cluster via de Azure Portal.
  3. Voer de volgende voorbeeldquery in Log Analytics in:
AzureDiagnostics
| where Category == "cluster-autoscaler"

Als het goed is, ziet u logboeken die vergelijkbaar zijn met het volgende voorbeeld, zolang er logboeken moeten worden opgehaald.

Log Analytics-logboeken

De automatische schaalverdeder voor clusters schrijft ook de status uit naar een configmap met de naam cluster-autoscaler-status . Voer de volgende opdracht uit om deze logboeken op te kubectl halen. Er wordt een status gerapporteerd voor elke knooppuntgroep die is geconfigureerd met de automatische schaalverdedering van clusters.

kubectl get configmap -n kube-system cluster-autoscaler-status -o yaml

Lees de veelgestelde vragen over het Kubernetes/autoscaler-projectvoor meer informatie over wat er wordt geregistreerd GitHub vanuit de automatische schaalverdeder.

De automatische schaalverdedering van clusters gebruiken met meerdere knooppuntgroepen ingeschakeld

De automatische schaalverdedering van clusters kan worden gebruikt samen met meerdere knooppuntgroepen ingeschakeld. Volg dit document voor meer informatie over het inschakelen van meerdere knooppuntgroepen en het toevoegen van extra knooppuntgroepen aan een bestaand cluster. Wanneer u beide functies samen gebruikt, kunt u de automatische schaalverdeling voor clusters inschakelen voor elke afzonderlijke knooppuntgroep in het cluster en unieke regels voor automatisch schalen aan elke groep doorgeven.

De onderstaande opdracht gaat ervan uit dat u de eerste instructies eerder in dit document hebt gevolgd en dat u het maximum aantal van een bestaande knooppuntgroep wilt bijwerken van 3 naar 5. Gebruik de opdracht az aks nodepool update om de instellingen van een bestaande knooppuntgroep bij te werken.

az aks nodepool update \
  --resource-group myResourceGroup \
  --cluster-name myAKSCluster \
  --name nodepool1 \
  --update-cluster-autoscaler \
  --min-count 1 \
  --max-count 5

De automatische schaalverdeling voor clusters kan worden uitgeschakeld met az aks nodepool update en het doorgeven van de parameter --disable-cluster-autoscaler .

az aks nodepool update \
  --resource-group myResourceGroup \
  --cluster-name myAKSCluster \
  --name nodepool1 \
  --disable-cluster-autoscaler

Als u de automatische schaalverdeling voor clusters opnieuw wilt inschakelen op een bestaand cluster, kunt u deze opnieuw inschakelen met behulp van de opdracht az aks nodepool update, waarin u de --enable-cluster-autoscaler parameters , en --min-count --max-count opgeeft.

Notitie

Als u van plan bent om de automatische schaalverplaatsing van clusters te gebruiken met knooppuntpools die meerdere zones bespannen en gebruikmaken van planningsfuncties met betrekking tot zones, zoals volumetopologische planning, is de aanbeveling om één knooppuntgroep per zone te hebben en de in te stellen via het profiel voor automatische schaalverkennen. --balance-similar-node-groups Dit zorgt ervoor dat de automatische schaalvergroting met succes omhoog wordt geschaald en dat de grootte van de knooppuntpools in balans wordt gehouden.

Volgende stappen

In dit artikel hebt u kunnen lezen hoe u het aantal AKS-knooppunten automatisch kunt schalen. U kunt ook de automatische horizontale schaalverdeder voor pods gebruiken om automatisch het aantal pods aan te passen dat uw toepassing wordt uitgevoerd. Zie Toepassingen schalen in AKS voor stappen voor het gebruik van de horizontale automatische schaalvergroting van pods.