Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
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 --versionopdracht om de versie te vinden. ZieInstall Azure CLI als u de Azure CLI wilt installeren of upgraden. - U hebt de machtiging van de
Microsoft.ContainerService/managedClusters/agentPools/writeRBAC-rol vereist 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:
-
Piekknooppunten toevoegen: nieuwe bufferknooppunten toevoegen op basis van de instellingen voor maximale pieken (
--max-surge) om de capaciteit tijdens de upgrade te behouden. - 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.
- 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.
- 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.
- Herhalen: Het proces wordt herhaald totdat alle knooppunten in de knooppuntgroep worden bijgewerkt.
- 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 beschikbaar zijn voor vereisten voor ip-adressen van Azure CNI.
- Azure-schaalvergrotingssets voor virtuele machines (VMSS) staan maximaal 1000 exemplaren per schaalset toe. Als de huidige grootte van een knooppuntgroep plus het berekende aantal pieken groter is dan 1000 exemplaren, weigert AKS de upgrade voordat deze wordt gestart.
Het standaard gedrag van AKS is om upgrades te verhogen met één extra knooppunt. 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 maximale piek kan worden ingesteld op een geheel getal of een percentage. 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.
Als schalen naar de maximale piekwaarde niet mogelijk is vanwege quotum- of capaciteitsbeperkingen, probeert AKS voor agentpools met Kubernetes-versie >= 1.35 automatisch een piek van 1 als terugval. Als de surge van 1 slaagt, gaat de upgrade verder met 1 surge-knooppunt.
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
- 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. Het gebruik van het maximum aantal niet-beschikbare voor een in-place upgrade wordt aanbevolen wanneer het verkrijgen van extra quotum of capaciteit niet mogelijk is voor de upgrade-piek.
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 |
De standaardwaarde van maxUnavailable is 0. Wanneer maxUnavailable is ingesteld op 0, vereist AKS dat maxSurge groter is dan 0. Zie de naslaginformatie over de AgentPoolUpgradeSettings-API voor meer informatie.
Als de maximale piekwaarde hoger is dan het aantal knooppunten dat nog moet worden bijgewerkt in de huidige bewerking, wordt het aantal knooppunten dat nog moet worden bijgewerkt, gebruikt voor de maximaal beschikbare waarde. Deze voorwaarde kan bijvoorbeeld optreden wanneer een upgradebewerking wordt hervat nadat slechts enkele knooppunten in de pool eerder zijn bijgewerkt.
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
MaxUnavailable terugvaloptie (preview)
Belangrijk
AKS preview-functies zijn beschikbaar op selfservice, opt-in basis. Previews worden geleverd 'zoals het is' en 'voor zover beschikbaar' en zijn uitgesloten van de serviceovereenkomsten en beperkte garantie. AKS-previews worden gedeeltelijk gedekt door klantondersteuning naar best vermogen. Zodoende zijn deze functies niet bedoeld voor productiegebruik. Zie de volgende ondersteuningsartikelen voor meer informatie:
Wanneer beide maxSurge en maxUnavailable groter zijn dan 0, gebruikt AKS een terugvalstrategie tijdens upgrades:
-
Poging tot volledige piek: AKS probeert eerst te pieken met behulp van de geconfigureerde
maxSurgewaarde. - Terugvallen op piek van 1: Als de volledige piek niet mogelijk is vanwege quotum- of capaciteitsbeperkingen, probeert AKS in plaats daarvan een piek van 1 knooppunt (voor agentpools met Kubernetes-versie >= 1.35).
-
Terugvallen op een in-place upgrade: als AKS een piekknooppunt niet kan ophalen, valt het terug naar een in-place upgrade met behulp van
maxUnavailable, cordoning en het leegmaken van bestaande knooppunten zonder nieuwe knooppunten toe te voegen.
Deze fallbackaanpak zorgt ervoor dat upgrades kunnen doorgaan, zelfs wanneer de capaciteit beperkt is, waarbij nog steeds de voorkeur wordt gegeven aan de minder verstorende surge-gebaseerde aanpak wanneer er voldoende middelen beschikbaar zijn.
De aks-preview-Azure CLI-extensie is vereist voor het gebruik van MaxUnavailable fallback.
maxSurge en maxUnavailable kan samen worden gebruikt voor terugvalgedrag of afzonderlijk.
Stel zowel de waarden voor max surge als max unavailable in
# Configure fallback: try surge first, fall back to in-place upgrade if capacity is unavailable
az aks nodepool add \
--name <node-pool-name> \
--resource-group <resource-group-name> \
--cluster-name <cluster-name> \
--max-surge 33% \
--max-unavailable 3
# Update an existing node pool with fallback configuration
az aks nodepool update \
--name <node-pool-name> \
--resource-group <resource-group-name> \
--cluster-name <cluster-name> \
--max-surge 33% \
--max-unavailable 3
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-timeout 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-timeout 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-timeout 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 knooppuntinwerktijd 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
Aanbevolen upgrade-instellingen voor AKS-knooppool voor productieworkloads
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 |
| Budgetten voor pod-onderbrekingen | PDBs configureren voor kritieke workloads voor het beheren van verwijdering van pods |
| Upgradeorder | Upgraden van niet-productieknooppuntgroepen eerst om de nieuwe versie te valideren |