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 en worden verwijderd wanneer aan workloads veilig kan worden gepland en aan de voorwaarden voor omlaag schalen 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.

Automatische schaalaanpassing van clusters in- of uitschakelen op een cluster

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.

Automatische schaalaanpassing van clusters in- of uitschakelen voor knooppuntgroepen

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 cluster scant het cluster elke 30 seconden, hervat de evaluatie van omlaag schalen onmiddellijk nadat een knooppunt is toegevoegd en één minuut na een fout, maakt onnodige en ongelezen knooppunten die in aanmerking komen voor omlaag schalen na drie minuten, beperkt de beëindiging tot 30 seconden, maakt maximaal 1000 lege knooppunten tegelijk verwijderd en verhoogt de limieten voor ongelezen knooppunten tot 100 procent of 1000 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 bursty workloads. Het cluster scant het cluster elke 20 seconden, pauzeert de evaluatie van omlaag 10 minuten nadat een knooppunt is toegevoegd om de capaciteit voor binnenkomende bursts te behouden, hervat de evaluatie één minuut na een fout, maakt onnodige en ongelezen knooppunten die na vijf minuten in aanmerking komen voor omlaag schalen, beperkt de respijtperiode tot 30 seconden, waardoor maximaal 100 lege knooppunten tegelijk worden verwijderd, en verhoogt de limieten voor ongelezen knooppunten tot 100 procent of 1000 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 ""

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 besturingsvlak wilt verzamelen, maakt u een Azure Monitor diagnostische instelling voor het AKS-cluster in de Azure-portal of gebruikt az monitor diagnostic-settings createu de cluster-autoscaler logboekcategorie.

  1. Stel een regel in voor resourcelogboeken om logboeken voor automatische schaalaanpassing van clusters te pushen naar Log Analytics met behulp van de verzameling Resourcelogboek configureren voor instructies voor het AKS-besturingsvlak. 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 controleren of het cluster veilig is om automatisch te schalen en of omlaag schalen cluster_autoscaler_cluster_safe_to_autoscale zich in een afkoelperiode bevindt met cluster_autoscaler_scale_down_in_cooldown.

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.