Delen via


Rolling upgrades configureren voor AKS-knooppuntgroepen (Azure Kubernetes Service)

Een doorlopende upgradestrategie upgradet knooppunten één voor één (of een paar tegelijk), waardoor werkbelastingonderbreking wordt geminimaliseerd terwijl de knooppuntgroep gedurende het upgradeproces beschikbaar blijft. In dit artikel wordt uitgelegd hoe u rolling upgrades configureert voor AKS-nodepools, waaronder surge-instellingen, time-out voor afvoer en inwerktijd.

Voordat u begint

  • Zorg ervoor dat uw besturingsvlak al is bijgewerkt naar de Kubernetes-doelversie. U kunt knooppuntgroepen niet upgraden naar een versie die hoger is dan het besturingsvlak. Zie Het AKS-clusterbesturingsvlak upgraden voor meer informatie.
  • Als u de Azure CLI gebruikt, is voor dit artikel Azure CLI versie 2.34.1 of hoger vereist. Gebruik de az --version opdracht om de versie te vinden. Als u Azure CLI wilt installeren of upgraden, raadpleegt u [Azure CLI installeren][azure-cli-install].
  • U hebt de Microsoft.ContainerService/managedClusters/agentPools/write RBAC-rolmachtiging nodig om rolling upgrades voor AKS-knooppuntgroepen te configureren.

Overzicht van het gedrag van rollende updates

Tijdens een rolling upgrade voert AKS de volgende bewerkingen uit voor elk knooppunt in de knooppuntgroep:

  1. Piekknooppunten toevoegen: nieuwe bufferknooppunten toevoegen op basis van de instellingen voor maximale pieken (--max-surge) om de capaciteit tijdens de upgrade te behouden.
  2. Cordon- en afvoerknooppunten: Cordon en voer de oude knooppunten één tegelijk af om de onderbreking van toepassingen te minimaliseren. Als u 'max surge' gebruikt, worden er net zoveel knooppunten tegelijk geïsoleerd en leeggemaakt als het aantal opgegeven bufferknooppunten.
  3. Wacht op de inwerktijd (optioneel): Wacht op een geconfigureerde inwerkduur voordat u verdergaat, zodat workloads kunnen stabiliseren op de nieuwe knooppunten voordat u de upgrade voortzet.
  4. Oude knooppunten opnieuw instellen: wanneer de oude knooppunten worden leeggezogen, worden ze opnieuw geimaged om de nieuwe versie te ontvangen. De opnieuw geplaatste knooppunten worden de bufferknooppunten voor de volgende set knooppunten die moeten worden bijgewerkt.
  5. Herhalen: Het proces wordt herhaald totdat alle knooppunten in de knooppuntgroep worden bijgewerkt.
  6. Piekknooppunten verwijderen: nadat alle knooppunten zijn bijgewerkt, worden de resterende piekknooppunten verwijderd, waarbij de oorspronkelijke grootte en balans van de knooppool behouden blijven.

Instellingen voor rolling upgrade configureren

Knooppuntoename aanpassen

Belangrijk

  • Voor knooppuntpieken is het abonnementsquotum vereist voor het aangevraagde maximumaantal pieken voor elke upgradebewerking. Een cluster met vijf knooppuntgroepen, elk met een telling van vier knooppunten, heeft bijvoorbeeld in totaal 20 knooppunten. Als elke knooppuntgroep een maximale piekwaarde van 50%heeft, is extra reken- en IP-quotum van 10 knooppunten (twee knooppunten × vijf pools) vereist om de upgrade te voltooien.
  • De maximale piekinstelling voor een knooppuntgroep is permanent. Bij volgende Kubernetes-upgrades of knooppuntversieupgrades wordt deze instelling gebruikt. U kunt de maximale piekwaarde voor uw knooppuntgroepen op elk gewenst moment wijzigen. Voor productieknooppuntgroepen raden we een maximale piekinstelling van 33%aan.
  • Als u Azure CNI gebruikt, controleert u of er beschikbare IP-adressen in het subnet zijn om te voldoen aan DE IP-vereisten van Azure CNI.

AKS configureert upgrades om te pieken met één extra knooppunt standaard. Met een standaardwaarde van één voor de maximale piekinstelling kan AKS werkbelastingonderbreking minimaliseren door een extra knooppunt te maken voordat de cordon/drain van bestaande toepassingen een oudere versie van een knooppunt vervangt. U kunt de maximale piekwaarde per knooppuntgroep aanpassen. Wanneer u de maximale piekwaarde verhoogt, wordt het upgradeproces sneller voltooid, maar kan er tijdens het upgradeproces meer onderbrekingen optreden.

Een maximale surgewaarde van 100% biedt bijvoorbeeld het snelst mogelijke upgradeproces, maar zorgt er ook voor dat alle knooppunten in de knooppuntpool tegelijkertijd worden geleegd. Mogelijk wilt u een hogere waarde als deze gebruiken voor testomgevingen. Voor productieknooppuntgroepen raden we een maximale piekinstelling van 33%.

AKS accepteert zowel gehele getallen als een percentagewaarde voor een maximale piek. Voorbeeld:

Waardetype Example Description
Integer 5 Vijf extra knooppunten om de capaciteit te vergroten
Procent 50% Piekwaarde van de helft van het huidige aantal knooppunten in de pool

De maximumwaarden voor piekpercentages kunnen minimaal 1% en maximaal 100% zijn. Een percentagewaarde wordt naar boven afgerond op het dichtstbijzijnde aantal knooppunten. Als de maximale piekwaarde hoger is dan het vereiste aantal knooppunten dat moet worden bijgewerkt, wordt het aantal knooppunten dat moet worden bijgewerkt, gebruikt voor de maximale piekwaarde.

Maximale piekwaarde instellen

Stel maximale piekwaarden in voor nieuwe of bestaande knooppuntgroepen met behulp van de az aks nodepool add of az aks nodepool update opdracht met de --max-surge parameter. Voorbeeld:

# Set max surge for a new node pool
az aks nodepool add \
    --name <node-pool-name> \
    --resource-group <resource-group-name> \
    --cluster-name <cluster-name> \
    --max-surge 33%

# Update max surge for an existing node pool 
az aks nodepool update \
    --name <node-pool-name> \
    --resource-group <resource-group-name> \
    --cluster-name <cluster-name> \
    --max-surge 5

Niet-beschikbare knooppunten aanpassen

Belangrijk

  • U moet de maximale uitloop 0 instellen om een maximaal onbeschikbare waarde in te stellen. De twee waarden kunnen niet beide tegelijk actief zijn.
  • Max unavailable creëert geen piekknooppunten tijdens het upgradeproces. In plaats daarvan cordont AKS n knooppunten (de maximale onbeschikbare waarde) tegelijk en verplaatst het de pods naar andere knooppunten in de agentgroep. Dit kan leiden tot onderbrekingen in de werkbelasting als de pods niet kunnen worden gepland.
  • Maximale onbeschikbaarheid kan leiden tot meer fouten vanwege niet-voldane Pod Disruption Budgets (PDBs), omdat er minder bronnen zijn waarop pods gepland kunnen worden. Zie Probleemoplossing voor budgetten voor podonderbrekingen voor meer informatie.
  • U kunt geen maximale onbeschikbaarheid instellen voor systeemknooppuntgroepen.

AKS kan ook upgrades configureren om geen piekknooppunt te gebruiken en om de knooppunten ter plaatse te upgraden. De maximaal onbeschikbare waarde bepaalt hoeveel knooppunten tegelijkertijd kunnen worden geblokkeerd en geleegd van de bestaande knooppool.

AKS accepteert zowel gehele getallen als een percentagewaarde voor maximaal niet beschikbaar. Voorbeeld:

Waardetype Example Description
Integer 5 Vijf knooppunten zijn geïsoleerd van de bestaande knooppunten
Procent 50% De helft van het huidige aantal knooppunten in de pool is niet beschikbaar

Maximum aantal niet-beschikbare procentwaarden kan een minimum van 1% en een maximum van 100%zijn. Een percentagewaarde wordt naar boven afgerond op het dichtstbijzijnde aantal knooppunten.

Maximale waarde voor niet-beschikbaar instellen

Stel maximaal niet-beschikbare waarden in voor nieuwe of bestaande knooppuntgroepen met behulp van de az aks nodepool add, az aks nodepool update, of de az aks nodepool upgrade opdracht met de --max-unavailable parameter. Voorbeeld:

# Set max unavailable for a new node pool
az aks nodepool add \
    --name <node-pool-name> \
    --resource-group <resource-group-name> \
    --cluster-name <cluster-name> \
    --max-surge 0 \
    --max-unavailable 5

# Update max unavailable for an existing node pool 
az aks nodepool update \
    --name <node-pool-name> \
    --resource-group <resource-group-name> \
    --cluster-name <cluster-name> \
    --max-surge 0 \
    --max-unavailable 5

# Set max unavailable at upgrade time
az aks nodepool upgrade \
    --name <node-pool-name> \
    --resource-group <resource-group-name> \
    --cluster-name <cluster-name> \
    --max-surge 0 \
    --max-unavailable 5

Time-out voor knooppuntafvoer aanpassen

Mogelijk hebt u langlopende workloads op bepaalde pods die u tijdens runtime niet opnieuw kunt plannen naar een ander knooppunt. Een geheugenintensieve stateful workload die moet worden afgerond. In deze gevallen kunt u een time-out voor het leegmaken van knooppunten configureren die AKS respecteert in de upgradewerkstroom.

De standaardwaarde voor de timeout bij het leegmaken van een knooppunt is 30 minuten. Time-outwaarden voor knooppuntafvoer kunnen minimaal 5 minuten en maximaal 24 uur zijn.

Als de afvoer-time-outwaarde is verstreken en pods nog draaien, stopt de upgradebewerking. Elke volgende PUT bewerking hervat de gestopte upgrade.

Aanbeveling

Voor langlopende pods moet u ook de terminationGracePeriodSeconds configureren in uw podspecificatie.

Time-outwaarde voor knooppuntafvoer instellen

Stel de time-out voor knooppuntafvoer (in minuten) in voor nieuwe of bestaande knooppuntgroepen met behulp van de az aks nodepool add of az aks nodepool update opdracht met de --drain-time-out parameter.

# Set drain timeout for a new node pool
az aks nodepool add \
    --name <node-pool-name> \
    --resource-group <resource-group-name> \
    --cluster-name <cluster-name> \
    --drain-time-out 100

# Update drain timeout for an existing node pool
az aks nodepool update \
    --name <node-pool-name> \
    --resource-group <resource-group-name> \
    --cluster-name <cluster-name> \
    --drain-time-out 45

Inweektijd van knooppunten aanpassen

Als u een wachttijd wilt instellen voor een opgegeven duur tussen het leegmaken van een knooppunt en het opnieuw inrichten ervan voordat naar het volgende knooppunt wordt gegaan, kunt u de wachttijd instellen. Deze geniettijd geeft u de mogelijkheid om andere taken uit te voeren tijdens het upgradeproces, zoals het controleren van de toepassingsstatus vanaf een bewakingsdashboard.

De standaard verzadigingstijd van het knooppunt is 0 minuten. Knooppunttijdwaarden kunnen minimaal 0 minuten en maximaal 30 minuten zijn. We raden u aan om de weektijd zo kort mogelijk te houden, binnen redelijke grenzen. Een hogere knooppuntweektijd verhoogt de totale upgradeduur en vertraagt de detectie van problemen.

Waarde voor knooppuntweektijd instellen

Stel de rusttijd van het knooppunt (in minuten) in voor nieuwe of bestaande knooppunt pools met behulp van de az aks nodepool add, az aks nodepool update, of az aks nodepool upgrade commando met de --node-soak-duration parameter.

# Set node soak time for a new node pool
az aks nodepool add \
    --name <node-pool-name> \
    --resource-group <resource-group-name> \
    --cluster-name <cluster-name> \
    --node-soak-duration 10

# Update node soak time for an existing node pool
az aks nodepool update \
    --name <node-pool-name> \
    --resource-group <resource-group-name> \
    --cluster-name <cluster-name> \
    --max-surge 33% \
    --node-soak-duration 5

# Set node soak time when upgrading an existing node pool
az aks nodepool upgrade \
    --name <node-pool-name> \
    --resource-group <resource-group-name> \
    --cluster-name <cluster-name> \
    --max-surge 33% \
    --node-soak-duration 20

Upgrade-gebeurtenissen voor AKS-knooppunten weergeven

Bekijk upgrade-gebeurtenissen met behulp van het kubectl get events commando om de voortgang van de doorlopende upgrade te controleren.

kubectl get events --field-selector reason=Drain,reason=Surge,reason=Upgrade

Voorbeelduitvoer tijdens een upgrade-gebeurtenis:

default  2m1s  Normal  Drain    node/aks-nodepool1-12345678-vmss000001  Draining node: [aks-nodepool1-12345678-vmss000001]
default  9m22s Normal  Surge    node/aks-nodepool1-12345678-vmss000002  Created a surge node [aks-nodepool1-12345678-vmss000002 nodepool1] for agentpool nodepool1
default  1m45s Normal  Upgrade  node/aks-nodepool1-12345678-vmss000001  Soak duration 5m0s after draining node: aks-nodepool1-12345678-vmss000001

De volgende tabel bevat een overzicht van de aanbevolen upgrade-instellingen voor knooppuntgroepen voor productieworkloads:

Configuratie Aanbeveling
Maximale piek Ingesteld op 33% voor productieknooppuntgroepen
Time-out leegmaken Configureren op basis van de vereisten van uw langst lopende pod
Indringtijd Gebruik een korte duur (0-5 minuten) tenzij u handmatige verificatie nodig hebt
Budgets voor podonderbrekingen PDBs configureren voor kritieke workloads voor het beheren van verwijdering van pods
Upgradeorder Upgraden van niet-productieknooppuntgroepen eerst om de nieuwe versie te valideren