De automatische schaalaanpassing van clusters gebruiken in Azure Kubernetes Service (AKS)

Als u de toepassingsvereisten in AKS wilt bijhouden, moet u mogelijk het aantal knooppunten aanpassen waarop uw workloads worden uitgevoerd. Het onderdeel voor automatische schaalaanpassing van clusters controleert op pods in uw cluster die niet kunnen worden gepland vanwege resourcebeperkingen. Wanneer de automatische schaalaanpassing van clusters problemen detecteert, wordt het aantal knooppunten in de knooppuntgroep omhoog geschaald om te voldoen aan de toepassingsvereisten. Er wordt ook regelmatig gecontroleerd op onderbenutte knooppunten, die worden verwijderd wanneer workloads veilig opnieuw kunnen worden ingepland en aan de voorwaarden voor afschalen wordt voldaan.

In dit artikel leest u hoe u de automatische schaalaanpassing van clusters in AKS inschakelt en beheert. Dit is gebaseerd op de opensource Kubernetes-versie.

Voordat u begint

Voor dit artikel is Azure CLI versie 2.0.76 of hoger vereist. Voer az --version uit om de versie te vinden. Als u Azure CLI 2.0 wilt installeren of upgraden, raadpleegt u Azure CLI 2.0 installeren.

De cluster-autoscaler voor een cluster in- of uitschakelen

Belangrijk

De cluster autoscaler is een Kubernetes-onderdeel. Hoewel het AKS-cluster gebruikmaakt van Virtual Machine Scale Sets voor de knooppunten, moet u instellingen voor automatische schaalsets niet handmatig in- of bewerken. Laat de autoscaler van het Kubernetes-cluster de vereiste schaalinstellingen beheren. Voor meer informatie, zie Kan ik de AKS-resources in de knooppuntresourcegroep wijzigen?

Automatische schaalaanpassing van clusters inschakelen op een nieuw cluster

  1. Maak een resourcegroep met behulp van de az group create opdracht.

    az group create --name myResourceGroup --location eastus
    
  2. Maak een AKS-cluster met behulp van de az aks create opdracht en schakel de automatische schaalaanpassing van clusters in de knooppuntgroep voor het cluster in met behulp van de --enable-cluster-autoscaler parameter en geef een knooppunt --min-count en --max-countop. Met de volgende voorbeeldopdracht maakt u een cluster met één knooppunt dat wordt ondersteund door een virtuele-machineschaalset, schakelt u automatische schaalaanpassing van clusters in, stelt u minimaal één en maximaal drie knooppunten in:

    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 \
    --generate-ssh-keys
    

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

Automatische schaalaanpassing van clusters inschakelen op een bestaand cluster

Werk een bestaand cluster bij met behulp van de az aks update opdracht en schakel de automatische schaalaanpassing van het cluster in de knooppuntgroep in met behulp van de --enable-cluster-autoscaler parameter en geef een knooppunt --min-count en --max-countop. Met de volgende voorbeeldopdracht wordt een bestaand AKS-cluster bijgewerkt om de automatische schaalaanpassing van clusters in de knooppuntgroep voor het cluster in te schakelen en minimaal één en maximaal drie knooppunten in te stellen:

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 schaalaanpassing van clusters te configureren.

De automatische schaalaanpassing van een cluster uitschakelen

Schakel de automatische schaalaanpassing van clusters uit met behulp van de az aks update opdracht en de --disable-cluster-autoscaler parameter.

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

Knooppunten worden niet verwijderd wanneer de automatische schaalaanpassing van clusters is uitgeschakeld.

Opmerking

U kunt het cluster handmatig schalen nadat u de automatische schaalaanpassing van clusters hebt uitgeschakeld met behulp van de az aks scale opdracht. Als u de horizontale pod autoscaler gebruikt, blijft het actief met de cluster autoscaler uitgeschakeld, maar pods kunnen uiteindelijk niet worden gepland als alle knooppuntbronnen al in gebruik zijn.

De automatische schaalaanpassing van clusters opnieuw inschakelen op een cluster

U kunt de automatische schaalaanpassing van clusters op een bestaand cluster opnieuw inschakelen met behulp van de az aks update opdracht en het opgeven van de --enable-cluster-autoscaler, --min-counten --max-count parameters.

De cluster-autoscaler voor knooppuntgroepen in- of uitschakelen

De automatische schaalaanpassing van clusters gebruiken in meerdere knooppuntgroepen

U kunt de automatische schaalaanpassing van clusters met meerdere knooppuntgroepen gebruiken en de automatische schaalaanpassing van clusters inschakelen voor elke afzonderlijke knooppuntgroep en er unieke regels voor automatisch schalen aan doorgeven.

Werk de instellingen voor een bestaande knooppuntgroep bij met behulp van de az aks nodepool update opdracht.

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

De cluster autoscaler uitschakelen op een nodepool

Schakel de automatische schaalaanpassing van clusters in een knooppuntgroep uit met behulp van de az aks nodepool update opdracht en de --disable-cluster-autoscaler parameter.

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

Automatische schaalaanpassing van de cluster opnieuw inschakelen in een knooppuntpool

U kunt de automatische schaalaanpassing van clusters opnieuw inschakelen in een knooppuntgroep met behulp van de az aks nodepool update opdracht en het opgeven van de --enable-cluster-autoscaler, --min-counten --max-count parameters.

Opmerking

Als u van plan bent om de automatische schaalaanpassing van clusters te gebruiken met knooppuntgroepen die meerdere zones omvatten en gebruikmaken van planningsfuncties met betrekking tot zones, zoals volumetopologische planning, raden we u aan één knooppuntgroep per zone in te schakelen en het profiel voor automatisch schalen in te schakelen --balance-similar-node-groups . Dit zorgt ervoor dat de autoscaler succesvol kan opschalen en dat de groottes van de knooppuntgroepen evenwichtig blijven.

De instellingen voor automatische schaalaanpassing van clusters bijwerken

Naarmate uw toepassing vraagt om wijzigingen, moet u mogelijk het aantal knooppunten voor automatische schaalaanpassing van clusters aanpassen om efficiënt te kunnen schalen.

Wijzig het aantal knooppunten met behulp van de az aks update opdracht en werk de automatische schaalaanpassing van het cluster bij met behulp van de --update-cluster-autoscaler parameter en geef het bijgewerkte knooppunt --min-count op en --max-count.

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

Opmerking

De cluster-autoscaler handhaaft het minimumaantal in gevallen waarin het werkelijke aantal lager is dan het minimum als gevolg van externe factoren, zoals tijdens een spot-verwijdering of bij het wijzigen van het minimumaantal via de AKS API.

Het profiel voor automatische schaalaanpassing van clusters gebruiken

U kunt gedetailleerdere details van de automatische schaalaanpassing van clusters configureren door de standaardwaarden in het profiel voor automatische schaalaanpassing voor het hele cluster te wijzigen. Een schaalverkleiningsgebeurtenis vindt bijvoorbeeld plaats 10 minuten nadat knooppunten onderbenut zijn. Als u workloads hebt die elke 15 minuten worden uitgevoerd, kunt u het profiel voor automatische schaalaanpassing wijzigen om na 15 of 20 minuten niet-gebruikte knooppunten omlaag te schalen. Wanneer u automatische schaalaanpassing van clusters inschakelt, wordt een standaardprofiel gebruikt, tenzij u verschillende instellingen opgeeft.

Belangrijk

Het profiel voor automatische schaalaanpassing van clusters is van invloed op alle knooppuntgroepen die gebruikmaken van de automatische schaalaanpassing van clusters. U kunt geen autoscaler-profiel per node pool instellen. Wanneer u het profiel instelt, worden alle bestaande knooppuntgroepen waarvoor automatische schaalaanpassing van clusters is ingeschakeld, onmiddellijk met het profiel gestart.

Profielinstellingen voor de cluster-autoscaler

De volgende tabel bevat de beschikbare instellingen voor het profiel voor automatische schaalaanpassing van clusters:

Configuratie Beschrijving Standaardwaarde
scan-interval Hoe vaak het cluster opnieuw wordt geëvalueerd voor omhoog of omlaag schalen. 10 seconden
scale-down-delay-after-add Hoe lang na de opschaling hervat de evaluatie voor neerschalen? 10 minuten
scale-down-delay-after-delete Hoe lang na het verwijderen van knooppunten de evaluatie voor afschaling wordt hervat. scan-interval
scale-down-delay-after-failure Hoe lang na het falen van de afschaling wordt de evaluatie van de afschaling hervat? Drie minuten
scale-down-unneeded-time Hoelang een knooppunt overbodig moet zijn voordat het in aanmerking komt voor afschalen. 10 minuten
scale-down-unready-time Hoe lang een onvoorbereid knooppunt onnodig moet zijn voordat het in aanmerking komt voor afschalen. 20 minuten
ignore-daemonsets-utilization Of DaemonSet-pods worden genegeerd bij het berekenen van het resourcegebruik voor omlaag schalen. false
daemonset-eviction-for-empty-nodes Of DaemonSet-pods zorgvuldig worden beëindigd van lege knooppunten. false
daemonset-eviction-for-occupied-nodes Of DaemonSet-pods op ordelijke wijze worden beëindigd vanaf niet-lege knooppunten. true
scale-down-utilization-threshold De maximumwaarde tussen de som van CPU-verzoeken en de som van geheugenverzoeken van alle pods die op het knooppunt worden uitgevoerd, gedeeld door de bijbehorende toewijsbare bron van het knooppunt, waaronder een knooppunt in aanmerking kan komen voor omschalen. 0,5
max-graceful-termination-sec Het maximum aantal seconden dat de cluster autoscaler wacht op het afsluiten van pods wanneer het probeert een knooppunt te verkleinen. 600 seconden
balance-similar-node-groups Detecteert vergelijkbare knooppuntgroepen en balanceert het aantal knooppunten ertussen. false
expander Het type knooppuntgroep dat de expander gebruikt bij opschalen. Mogelijke waarden zijn onder andere most-pods, random, least-wasteen priority. random
skip-nodes-with-local-storage Als true, verwijdert de cluster autoscaler geen knooppunten waarop pods met lokale opslag zijn geplaatst, zoals EmptyDir of HostPath. false
skip-nodes-with-system-pods Als true geselecteerd is, verwijdert de automatische cluster-schaalvergroter geen knooppunten met pods uit kube-system, behalve voor 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- of batchschaal, waarbij u niet wilt dat de Cluster Autoscaler (CA) reageert voordat de Kubernetes-scheduler alle pods heeft kunnen inplannen, kunt u CA zo instellen dat het ongeplande pods negeert totdat ze een bepaalde leeftijd hebben bereikt. 0 seconden
max-total-unready-percentage Maximaal percentage van onvoldoende gereed knooppunten in het cluster. Nadat dit percentage is overschreden, stopt CA met operaties. 45%
max-node-provision-time De maximale tijd die de autoscaler wacht totdat een knooppunt is geprovisioneerd. 15 minuten
ok-total-unready-count Aantal toegestane onvoorbereide knooppunten, ongeacht het maximum totaal percentage onvoorbereide knooppunten. Drie knooppunten

Opmerking

De parameters ignore-daemonsets-utilization, daemonset-eviction-for-empty-nodes en daemonset-eviction-for-occupied-nodes zijn GA vanaf API-versie 2024-05-01.

Het profiel voor automatische schaalaanpassing van clusters instellen op een nieuw cluster

Maak een AKS-cluster met behulp van de az aks create opdracht en stel het profiel voor automatische schaalaanpassing van clusters in met behulp van de cluster-autoscaler-profile parameter.

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 \
    --generate-ssh-keys

Het profiel voor automatische schaalaanpassing van clusters instellen op een bestaand cluster

Stel de automatische schaalaanpassing van clusters in op een bestaand cluster met behulp van de az aks update opdracht en de cluster-autoscaler-profile parameter. In het volgende voorbeeld wordt de instelling voor het scaninterval geconfigureerd als 30s:

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

Profiel voor automatische schaalaanpassing van clusters configureren voor agressief omlaag schalen

Opmerking

Het wordt afgeraden om agressief omlaag te schalen voor clusters die binnen korte intervallen vaak uitbreidingen en verkleiningen doorstaan, omdat dit onder deze omstandigheden kan leiden tot langere inrichtingstijden voor knooppunten. Het verhogen scale-down-delay-after-add kan in deze omstandigheden helpen door het knooppunt langer te houden om binnenkomende workloads te verwerken.

Met de volgende opdracht configureert u een agressief uitschalend profiel. Het scant het cluster elke 30 seconden, hervat de evaluatie voor omlaag schalen onmiddellijk nadat een knooppunt is toegevoegd en één minuut na een fout, maakt onnodige en niet-gereed knooppunten na drie minuten geschikt voor omlaag schalen, beperkt graceful beëindiging tot 30 seconden, staat toe dat tot 1.000 lege knooppunten tegelijk worden verwijderd en verhoogt de limieten voor niet-gereed knooppunten tot 100 procent of 1.000 knooppunten. Het behoudt ook expliciet het standaardgedrag van het niet overslaan van knooppunten met lokale opslag en wacht tot 15 minuten voordat een knooppunt wordt ingericht.

az aks update \
    --resource-group myResourceGroup \
    --name myAKSCluster \
    --cluster-autoscaler-profile scan-interval=30s,scale-down-delay-after-add=0m,scale-down-delay-after-failure=1m,scale-down-unneeded-time=3m,scale-down-unready-time=3m,max-graceful-termination-sec=30,skip-nodes-with-local-storage=false,max-empty-bulk-delete=1000,max-total-unready-percentage=100,ok-total-unready-count=1000,max-node-provision-time=15m

Profiel voor automatische schaalaanpassing van clusters configureren voor plotselinge werkbelasting.

Met de volgende opdracht configureert u een profiel voor piekbelastingen. Het scant het cluster elke 20 seconden, pauzeert de evaluatie voor omlaag schalen gedurende 10 minuten nadat een knooppunt is toegevoegd om capaciteit voor inkomende piekbelasting te behouden, hervat de evaluatie één minuut na een storing, zorgt ervoor dat onnodige en niet-gereed knooppunten na vijf minuten in aanmerking komen voor omlaag schalen, beperkt graceful beëindiging tot 30 seconden, staat toe dat maximaal 100 lege knooppunten tegelijk worden verwijderd en verhoogt de limieten voor niet-gereed knooppunten tot 100 procent of 1.000 knooppunten. Het behoudt ook expliciet het standaardgedrag van het niet overslaan van knooppunten met lokale opslag en wacht tot 15 minuten voordat een knooppunt wordt ingericht.

az aks update \
    --resource-group "myResourceGroup" \
    --name myAKSCluster \
    --cluster-autoscaler-profile scan-interval=20s,scale-down-delay-after-add=10m,scale-down-delay-after-failure=1m,scale-down-unneeded-time=5m,scale-down-unready-time=5m,max-graceful-termination-sec=30,skip-nodes-with-local-storage=false,max-empty-bulk-delete=100,max-total-unready-percentage=100,ok-total-unready-count=1000,max-node-provision-time=15m

Automatische schaalaanpassing van clusters opnieuw instellen op standaardwaarden

Stel het profiel voor automatische schaalaanpassing van clusters opnieuw in met behulp van de az aks update opdracht.

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

ProvisioningRequest gebruiken met de automatische schaalaanpassing van clusters

ProvisioningRequest is een aangepaste resource die u kunt gebruiken om resources aan te vragen voor een groep gerelateerde pods. De cluster-autoscaler behandelt deze pods als één eenheid. Op basis van de provisioningklasse die u opgeeft, kan de clusterautoscaler bestaande bronnen voor de pods reserveren of het cluster opschalen.

Opmerking

  • ProvisioningRequest voor ondersteuning is een AKS-cluster met Kubernetes versie 1.33 of hoger vereist.
  • Overweeg het gebruik van een agressief uitschaalprofiel bij het gebruik van ProvisioningRequest, zodat ongebruikte knooppunten van gedeeltelijke of onvolledige opschalingen snel worden verwijderd.
Inrichtingsklasse Beschrijving
check-capacity.autoscaling.x-k8s.io Controleert of het cluster voldoende resources heeft voor de opgegeven pods. Als de resources beschikbaar zijn, reserveert de cluster-autoscaler deze gedurende 10 minuten voor de ProvisioningRequest om te voorkomen dat andere ProvisioningRequests dezelfde resources claimen.
best-effort-atomic-scale-up.autoscaling.x-k8s.io De cluster-autoscaler probeert in één opschaalactie de volledige aangevraagde capaciteit zo goed mogelijk beschikbaar te stellen. Als het niet alles kan provisioneren, mislukt ProvisioningRequest en probeert de clusterautoscaler het na een back-off-periode opnieuw.

Zie voor een end-to-end-voorbeeld dat Kueue-integratie met de clusterautoscaler en demonstreert ProvisioningRequest.

Logboeken en status van automatische schaalaanpassing van clusters ophalen

U kunt logboeken en statusupdates ophalen uit de automatische schaalaanpassing van clusters om gebeurtenissen voor automatische schaalaanpassing vast te stellen en fouten op te sporen. AKS beheert de automatische schaalaanpassing van clusters namens u en voert deze uit in het beheerde besturingsvlak. Als u de logboeken van het control plane wilt verzamelen, maakt u in Azure Portal een diagnostische instelling van Azure Monitor voor het AKS-cluster of gebruikt u az monitor diagnostic-settings create en schakelt u de logcategorie cluster-autoscaler in.

  1. Stel een regel in voor resourcelogboeken om logboeken van de clusterautoscaler naar Log Analytics te verzenden met behulp van de instructies in Resourcelogboekverzameling voor het AKS-besturingsvlak configureren. Zorg ervoor dat u het selectievakje voor cluster-autoscaler aanvinkt bij het selecteren van opties voor logboeken.

  2. Selecteer de sectie Logboeken in uw cluster.

  3. Als uw diagnostische instellingen gebruikmaken van Azure diagnostische modus, voert u de volgende query in Log Analytics:

    AzureDiagnostics
    | where Category == "cluster-autoscaler"
    

    Als uw diagnostische instellingen gebruikmaken van de resourcespecifieke modus, voert u in plaats daarvan de volgende query in:

    AKSControlPlane
    | where Category == "cluster-autoscaler"
    
  4. Bekijk niet-geactiveerde schaalvergrotingsevenementen van cluster-autoscaler in de CLI.

    kubectl get events --field-selector source=cluster-autoscaler,reason=NotTriggerScaleUp
    
  5. Waarschuwingen voor automatische schaalaanpassing van clusters weergeven in CLI.

    kubectl get events --field-selector source=cluster-autoscaler,type=Warning
    
  6. De automatische schaalaanpassing van clusters schrijft ook de status naar buiten naar een configmap genaamd cluster-autoscaler-status. U kunt deze status ophalen met behulp van de volgende kubectl opdracht:

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

Zie de veelgestelde vragen over het GitHub-project Kubernetes/autoscaler voor meer informatie.

Metrische gegevens voor automatische schaalaanpassing van clusters

U kunt metrische gegevens van het besturingsvlak (preview) gebruiken met Azure Monitor beheerde service voor Prometheus om metrische gegevens voor automatische schaalaanpassing van clusters te verzamelen. Het controlplane-cluster-autoscaler scrape-doel is standaard uitgeschakeld, dus u moet dit inschakelen om deze metrische gegevens te verzamelen.

De beschikbare metrische gegevens bevatten cluster_autoscaler_unschedulable_pods_count en cluster_autoscaler_unneeded_nodes_count, waarmee het aantal pods wordt weergegeven dat niet kan worden gepland en knooppunten die zijn gemarkeerd als kandidaten voor verwijdering. U kunt ook met cluster_autoscaler_cluster_safe_to_autoscale nagaan of het cluster veilig automatisch kan schalen en met cluster_autoscaler_scale_down_in_cooldown of terugschalen in een afkoelperiode zit.

In dit artikel hebt u gezien hoe u het aantal AKS-knooppunten automatisch kunt schalen. U kunt ook de horizontale automatische schaalaanpassing van pods gebruiken om het aantal pods waarop uw toepassing wordt uitgevoerd, automatisch aan te passen. Voor stappen voor het gebruik van de horizontale pod autoscaler, zie Toepassingen schalen in AKS.

Zie Vertical Pod Autoscaler voor meer informatie over het verbeteren van het gebruik van clusterresources en het vrijmaken van CPU en geheugen voor andere pods.