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.

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.
- 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-autoscalerbij het selecteren van opties voor 'Logboeken'. - Selecteer de sectie 'Logboeken' in uw cluster via de Azure Portal.
- 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.

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.