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. Het controleert ook regelmatig knooppunten op een gebrek aan actieve pods en schaalt zo nodig het aantal knooppunten omlaag.

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 bekijken. Als u Azure CLI 2.0 wilt installeren of upgraden, raadpleegt u Azure CLI 2.0 installeren.

De automatische schaalaanpassing van clusters gebruiken in een AKS-cluster

Belangrijk

De automatische schaalaanpassing van clusters is een Kubernetes-onderdeel. Hoewel het AKS-cluster gebruikmaakt van een virtuele-machineschaalset voor de knooppunten, schakelt u instellingen voor automatisch schalen van schaalsets niet handmatig in of bewerkt. Laat de Automatische schaalaanpassing van Kubernetes-clusters de vereiste schaalinstellingen beheren. Zie Kan ik de AKS-resources in de knooppuntresourcegroep wijzigen voor meer informatie ?

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
    

    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.

Automatische schaalaanpassing van clusters op 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.

Notitie

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 schaalaanpassing voor pods gebruikt, blijft deze actief met de automatische schaalaanpassing van clusters uitgeschakeld, maar pods kunnen uiteindelijk niet worden gepland als alle knooppuntbronnen 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 automatische schaalaanpassing van clusters gebruiken in 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
    

Automatische schaalaanpassing van clusters in een knooppuntgroep uitschakelen

  • 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
    

De automatische schaalaanpassing van clusters opnieuw inschakelen in een knooppuntgroep

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.

Notitie

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 automatische schaalaanpassing kan worden opgeschaald en dat de grootte van de knooppuntgroepen evenwichtig blijft.

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
    

Notitie

De automatische schaalaanpassing van clusters dwingt het minimumaantal af 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 de minimumaantalwaarde van 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 gebeurtenis voor omlaag schalen vindt bijvoorbeeld plaats nadat knooppunten na 10 minuten onderbenut zijn. Als u werkbelastingen hebt die elke 15 minuten worden uitgevoerd, kunt u het profiel voor automatische schaalaanpassing wijzigen om na 15 of 20 minuten 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 profiel voor automatisch schalen per knooppuntgroep instellen. Wanneer u het profiel instelt, worden alle bestaande knooppuntgroepen waarvoor automatische schaalaanpassing van clusters is ingeschakeld, onmiddellijk met het profiel gestart.

Profielinstellingen voor automatische schaalaanpassing van clusters

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

Instelling Omschrijving Default value
scan-interval Hoe vaak het cluster opnieuw wordt geëvalueerd voor omhoog of omlaag schalen. 10 seconden
scale-down-delay-after-add Hoe lang nadat de evaluatie van omlaag schalen is hervat. 10 minuten
scale-down-delay-after-delete Hoe lang na het verwijderen van knooppunten de evaluatie wordt hervat. scan-interval
scale-down-delay-after-failure Hoe lang na het mislukken van omlaag schalen dat de evaluatie omlaag wordt hervat. Drie minuten
scale-down-unneeded-time Hoe lang een knooppunt niet meer hoeft te worden uitgevoerd voordat het in aanmerking komt voor omlaag schalen. 10 minuten
scale-down-unready-time Hoe lang een ongelezen knooppunt overbodig moet zijn voordat het in aanmerking komt voor omlaag schalen. 20 minuten
ignore-daemonsets-utilization (Preview) Of DaemonSet-pods worden genegeerd bij het berekenen van het resourcegebruik voor omlaag schalen. false
daemonset-eviction-for-empty-nodes (Preview) Of DaemonSet-pods correct worden beëindigd vanaf lege knooppunten. false
daemonset-eviction-for-occupied-nodes (Preview) Of DaemonSet-pods correct worden beëindigd vanaf niet-lege knooppunten. true
scale-down-utilization-threshold Knooppuntgebruiksniveau, gedefinieerd als som van aangevraagde resources gedeeld door capaciteit, waarin een knooppunt kan worden overwogen voor omlaag schalen. 0,5
max-graceful-termination-sec Het maximum aantal seconden dat de automatische schaalaanpassing van clusters wacht op beëindiging van pods bij het omlaag schalen van een knooppunt. 600 seconden
balance-similar-node-groups Detecteert vergelijkbare knooppuntgroepen en balanceert het aantal knooppunten ertussen. false
expander Het type uitbreidingsfunctie voor knooppuntgroepen maakt gebruik van omhoog schalen. Mogelijke waarden zijn onder andere most-pods, random, least-wasteen priority. random
skip-nodes-with-local-storage Als truemet automatische schaalaanpassing van clusters geen knooppunten worden verwijderd met pods met lokale opslag, bijvoorbeeld EmptyDir of HostPath. false
skip-nodes-with-system-pods Als truemet automatische schaalaanpassing van clusters knooppunten met pods niet worden verwijderd uit kube-system (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-/batchschaal waarbij u niet wilt dat CA reageert voordat de Kubernetes-planner alle pods kan plannen, kunt u ca vertellen dat ze ongeplande pods moeten negeren voordat ze een bepaalde leeftijd bereiken. 0 seconden
max-total-unready-percentage Maximumpercentage ongelezen knooppunten in het cluster. Nadat dit percentage is overschreden, stopt ca bewerkingen. 45%
max-node-provision-time De maximale tijd waarop de automatische schaalaanpassing wacht totdat een knooppunt is ingericht. 15 minuten
ok-total-unready-count Aantal toegestane ongelezen knooppunten, ongeacht het maximumaantal ongelezen knooppunten. Drie knooppunten

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
    

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

Notitie

Omlaag schalen wordt niet aangeraden voor clusters die binnen korte intervallen vaak uitschalen en inschalen ondervinden, omdat dit in 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.

 az aks update \
     --resource-group myResourceGroup \
     --name myAKSCluster \
     --cluster-autoscaler-profile scan-interval=30s, scale-down-delay-after-add=0s,scale-down-delay-after-failure=30s,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 bursty-workloads

 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. U kunt het besturingsvlakknooppunt inschakelen om de logboeken en bewerkingen van de automatische schaalaanpassing van clusters te bekijken.

  1. Stel een regel in voor resourcelogboeken om logboeken voor automatische schaalaanpassing van clusters naar Log Analytics te pushen met behulp van de instructies hier. Zorg ervoor dat u het selectievakje inschakelt bij cluster-autoscaler het selecteren van opties voor logboeken.

  2. Selecteer de sectie Logboek in uw cluster.

  3. Voer de volgende voorbeeldquery in Log Analytics in:

    AzureDiagnostics
    | where Category == "cluster-autoscaler"
    

    Zolang er logboeken zijn om op te halen, ziet u logboeken die vergelijkbaar zijn met de volgende logboeken:

    Schermopname van Log Analytics-logboeken.

  4. Automatische schaalaanpassing van clusters weergeven, niet geactiveerde gebeurtenissen weergeven in CLI

    kubectl get events --field-selector source=cluster-autoscaler,reason=NotTriggerScaleUp
    
  5. Waarschuwingsevenementen 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 een configmap benoemde cluster-autoscaler-status. U kunt deze logboeken 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) inschakelen om de logboeken en bewerkingen van de automatische schaalaanpassing van clusters te bekijken met de beheerde Azure Monitor-service voor prometheus-invoegtoepassing

Volgende stappen

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. Zie Toepassingen schalen in AKS voor stappen voor het gebruik van de horizontale automatische schaalaanpassing van pods.

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.