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.
Dit artikel behandelt upgradeopties voor AKS-clusters en biedt aanbevelingen op basis van scenario's voor veelvoorkomende upgradeproblemen.
- Voor een basis Kubernetes-versie-upgrade, zie Een AKS-cluster upgraden.
- Zie Een knooppuntgroep upgraden in AKS voor clusters met meerdere knooppuntgroepen of Windows Server-knooppunten.
- Als u een specifieke knooppuntgroep wilt upgraden zonder een volledige clusterupgrade, raadpleegt u Een specifieke knooppuntgroep upgraden.
Upgrade opties
Handmatige upgrades uitvoeren
Met handmatige upgrades kunt u bepalen wanneer uw cluster wordt bijgewerkt naar een nieuwe Kubernetes-versie. Handig voor het testen of afstemmen op een specifieke versie.
- Een AKS-cluster upgraden
- Meerdere AKS-clusters upgraden via Azure Kubernetes Fleet Manager
- Knooppuntimage upgraden
- Upgrade van node-stijging aanpassen
- Updates van het besturingssysteem van het procesknooppunt
Automatische upgrades configureren
Automatische upgrades houden uw cluster op een ondersteunde versie en up-to-date. Dit is wanneer u wilt instellen en vergeten.
- Automatisch een upgrade uitvoeren van een AKS-cluster
- Meerdere AKS-clusters automatisch upgraden via Azure Kubernetes Fleet Manager
- Gepland onderhoud gebruiken om upgrades te plannen en te beheren
- Stop AKS-clusterupgrades automatisch bij API-breekwijzigingen (Preview)
- Installatiekopieën van AKS-clusterknooppunten automatisch upgraden
- Beveiligingsupdates automatisch toepassen op AKS-knooppunten met behulp van GitHub Actions
Speciale overwegingen voor knooppuntgroepen die meerdere beschikbaarheidszones omvatten
AKS maakt gebruik van best-effort zonebalancering in knooppuntgroepen. Tijdens een upgrade-piek zijn de zones voor piekknooppunten in virtuele-machineschaalsets van tevoren onbekend, wat tijdelijk een niet-evenwichtige zoneconfiguratie kan veroorzaken. AKS verwijdert piekknooppunten na de upgrade en herstelt de oorspronkelijke zonebalans. Als u zones evenwichtig wilt houden, stelt u een piek in op een veelvoud van drie knooppunten. PVC's die azure LRS-schijven gebruiken, zijn zonegebonden en kunnen downtime veroorzaken als piekknooppunten zich in een andere zone bevinden. Gebruik een Pod Disruption Budget om hoge beschikbaarheid te behouden tijdens draineeracties.
Het optimaliseren van upgrades om de prestaties te verbeteren en onderbrekingen te minimaliseren
Combineer gepland onderhoudsvenster, maximale belasting, budget voor podonderbreking, timeout voor knooppuntafvoer en knoppuntinweektijd om de kans op succesvolle upgrades met minimale verstoringen te vergroten.
- Venster Gepland onderhoud: Plan automatische upgrade tijdens perioden met weinig verkeer (raad ten minste vier uur aan)
- Maximale piek: Hogere waarden kunnen upgrades versnellen, maar kunnen ook werkbelastingen verstoren; 33% wordt aanbevolen voor productie.
- Maximaal niet beschikbaar: gebruik wanneer de capaciteit beperkt is
- Budget voor podonderbreking: ingesteld om pods tijdens upgrades te beperken; valideren voor uw service
- Time-out voor knooppuntafvoer: wachttijd voor verwijdering van pods configureren (standaard 30 minuten)
- Inwerktijd van knooppunt: Verspreid de upgrades om downtime te minimaliseren (standaard 0 minuten)
Upgrade-instellingen | Hoe extra knooppunten worden gebruikt | Verwacht gedrag |
---|---|---|
maxSurge=5 , maxUnavailable=0 |
5 piekknooppunten | 5 knooppunten zijn overgesprongen voor de upgrade |
maxSurge=5 , maxUnavailable=0 |
0-4 piekknooppunten | Upgrade mislukt vanwege onvoldoende piekknooppunten |
maxSurge=0 , maxUnavailable=5 |
Niet van toepassing. | 5 bestaande knooppunten zijn leeggezogen voor de upgrade |
Opmerking
Controleer voordat u een upgrade uitvoert op wijzigingen die fouten veroorzaken in de API en bekijk de opmerkingen bij de AKS-release om onderbrekingen te voorkomen.
Validaties die worden gebruikt in het upgradeproces
AKS voert pre-upgradevalidaties uit om de clusterstatus te garanderen:
- Breken wijzigingen in de API: Detecteert verouderde API's.
- Upgradeversie van Kubernetes: Zorgt voor een geldig upgradepad.
-
PDB-configuratie: Controleert op onjuist geconfigureerde PDBs (bijvoorbeeld
maxUnavailable=0
). - Quotum: Bevestigt voldoende quotum voor piekknooppunten.
- Subnet: Controleert voldoende IP-adressen.
- Certificaten/Service Principals: Detecteert verlopen inloggegevens.
Deze controles helpen bij het minimaliseren van upgradefouten en bieden vroegtijdig inzicht in problemen.
Algemene upgradescenario's en aanbevelingen
Scenario 1: Capaciteitsbeperkingen
Als uw cluster wordt beperkt door SKU of regionale capaciteit, kunnen upgrades mislukken wanneer piekknooppunten niet kunnen worden ingericht. Dit is gebruikelijk bij gespecialiseerde SKU's (zoals GPU-knooppunten) of in regio's met beperkte resources. Fouten zoals SKUNotAvailable
, AllocationFailed
of OverconstrainedAllocationRequest
kunnen optreden als maxSurge
deze te hoog is ingesteld voor de beschikbare capaciteit.
Aanbevelingen om te voorkomen of op te lossen
- Gebruik
maxUnavailable
om een upgrade uit te voeren met bestaande knooppunten in plaats van nieuwe te maken. Meer informatie. - Verlaag
maxSurge
om extra capaciteitsbehoeften te verminderen. Meer informatie. - Gebruik voor alleen beveiligingsupdates installatiekopies die geen piekknooppunten vereisen. Meer informatie.
Scenario 2: Knooppuntleegmaakfouten en PDBs
Voor upgrades moeten knooppunten worden leeggemaakt (pods worden ontruimd). Afvoeren kunnen mislukken als:
- Pods zijn langzaam te beëindigen (lange afsluithaken of permanente verbindingen).
- Strict Pod Disruption Budgets (PDBs) blokkeren pod ontheffingen.
Voorbeeld van foutbericht:
Code: UpgradeFailed
Message: Drain node ... failed when evicting pod ... failed with Too Many Requests error. This is often caused by a restrictive Pod Disruption Budget (PDB) policy. See https://aka.ms/aks/debugdrainfailures. Original error: Cannot evict pod as it would violate the pod's disruption budget. PDB debug info: ... blocked by pdb ... with 0 unready pods.
Aanbevelingen om te voorkomen of op te lossen
- Stel
maxUnavailable
in PDBs zodanig in dat ten minste één pod kan worden verwijderd. - Verhoog de podreplica's zodat het verstoringsbudget verwijderingen kan tolereren.
- Gebruik
undrainableNodeBehavior
dit om upgrades toe te staan om door te gaan, zelfs als sommige knooppunten niet kunnen worden leeggemaakt:- Planning (standaard): Vervanging van knooppunten en stuwdruk kan mogelijk worden achterwege gelaten, wat kan leiden tot verminderde capaciteit.
-
Cordon (aanbevolen): Knooppunt is gesnoerd en gelabeld als
kubernetes.azure.com/upgrade-status=Quarantined
.Voorbeeldopdracht:
az aks nodepool update \ --resource-group <resource-group-name> \ --cluster-name <cluster-name> \ --name <node-pool-name> \ --undrainable-node-behavior Cordon
In de volgende voorbeelduitvoer wordt het onuitputtelijke gedrag van het knooppunt bijgewerkt weergegeven:
"upgradeSettings": { "drainTimeoutInMinutes": null, "maxSurge": "1", "nodeSoakDurationInMinutes": null, "undrainableNodeBehavior": "Cordon" }
Maximaal toegestane geblokkeerde knooppunten (preview)
- [Preview] De functie Maximaal toegestane geblokkeerde knooppunten stelt u in staat om op te geven hoeveel knooppunten die niet succesvol kunnen worden leeggelopen (geblokkeerde knooppunten) tijdens upgrades of soortgelijke bewerkingen acceptabel zijn. Deze functie werkt alleen als de eigenschap van onafgebroken knooppuntgedrag is ingesteld; anders zal de opdracht een fout retourneren.
Opmerking
Als u 'Maximaal Toegestane Geblokkeerde Knooppunten' niet expliciet instelt, wordt dit standaard ingesteld op de waarde van Maximale Toevoeging. Als max. piek niet is ingesteld, is de standaardwaarde doorgaans 10%, dus max geblokkeerde knooppunten toegestaan, wordt standaard ingesteld op 10%.
Voorwaarden
Azure CLI-extensie
aks-preview
versie 18.0.0b9 of hoger is vereist voor het gebruik van deze functie.Voorbeeldopdracht:
az aks nodepool update \ --cluster-name jizenMC1 \ --name nodepool1 \ --resource-group jizenTestMaxBlockedNodesRG \ --max-surge 1 \ --undrainable-node-behavior Cordon \ --max-blocked-nodes 2 \ --drain-timeout 5
- Breid de time-out van de afvoer uit als workloads meer tijd nodig hebben (de standaardwaarde is 30 minuten).
- Test PDBs in de stagingomgeving, bewaak upgrade-events en gebruik blue-green deployments voor kritieke workloads. Meer informatie.
Ondraineerbare knooppunten verifiëren
De geblokkeerde knooppunten zijn niet ingepland voor pods en gemarkeerd met het label
"kubernetes.azure.com/upgrade-status: Quarantined"
.Controleer de labels van geblokkeerde knooppunten wanneer er een drainknooppuntstoring is tijdens de upgrade.
kubectl get nodes --show-labels=true
Niet-bewerkbare knooppunten oplossen
Verwijder de verantwoordelijke PDB:
kubectl delete pdb <pdb-name>
Verwijder het
kubernetes.azure.com/upgrade-status: Quarantined
label:kubectl label nodes <node-name> <label-name>
Verwijder eventueel het geblokkeerde knooppunt:
az aks nodepool delete-machines --cluster-name <cluster-name> --machine-names <machine-name> --name <node-pool-name> --resource-group <resource-group-name>
Nadat u deze stap hebt voltooid, kunt u de clusterstatus afstemmen door een updatebewerking uit te voeren zonder de optionele velden, zoals hier wordt beschreven. U kunt de knooppuntgroep ook schalen naar hetzelfde aantal knooppunten als het aantal bijgewerkte knooppunten. Deze actie zorgt ervoor dat de knooppuntgroep de beoogde oorspronkelijke grootte krijgt. AKS geeft prioriteit aan het verwijderen van de geblokkeerde knooppunten. Met deze opdracht wordt ook de inrichtingsstatus van het cluster hersteld naar
Succeeded
. In het gegeven voorbeeld is2
het totale aantal bijgewerkte knooppunten.# Update the cluster to restore the provisioning status az aks update --resource-group <resource-group-name> --name <cluster-name> # Scale the node pool to restore the original size az aks nodepool scale --resource-group <resource-group-name> --cluster-name <cluster-name> --name <node-pool-name> --node-count 2
Scenario 3: Trage upgrades
Upgrades kunnen worden vertraagd door conservatieve instellingen of problemen op knooppuntniveau, wat van invloed is op uw vermogen om op de hoogte te blijven van patches en verbeteringen.
Veelvoorkomende oorzaken van trage upgrades zijn:
- Laag
maxSurge
ofmaxUnavailable
waarden (beperkt parallellisme). - Hoge inweektijden (lange wachttijden tussen knooppuntupgrades).
- Leegloopfouten (zie Knooppuntafvoerfouten]).
Aanbevelingen om te voorkomen of op te lossen
- Voor productie:
maxSurge=33%
,maxUnavailable=1
. - Voor dev/test:
maxSurge=50%
,maxUnavailable=2
. - Gebruik de beveiligingspatch voor het besturingssysteem voor snelle, gerichte patches (vermijd volledige knooppunten die opnieuw worden gebruikt).
- Schakel deze optie
undrainableNodeBehavior
in om upgradeblokkeringen te voorkomen.
Scenario 4: IP-uitputting
Piekknooppunten vereisen extra IP-adressen. Als het subnet bijna vol is, kan het inrichten van knooppunten mislukken (bijvoorbeeld Error: SubnetIsFull
). Dit is gebruikelijk met Azure CNI, hoog maxPods
of groot aantal knooppunten.
Aanbevelingen om te voorkomen of op te lossen
Zorg ervoor dat uw subnet voldoende IP-adressen heeft voor alle knooppunten, piekknooppunten en pods:
- Formule:
Total IPs = (Number of nodes + maxSurge) * (1 + maxPods)
- Formule:
Maak ongebruikte IP-adressen vrij of vouw het subnet uit (bijvoorbeeld van /24 tot /22).
Lager
maxSurge
als subnetuitbreiding niet mogelijk is:az aks nodepool update \ --resource-group <resource-group-name> \ --cluster-name <cluster-name> \ --name <node-pool-name> \ --max-surge 10%
IP-gebruik bewaken met Azure Monitor of aangepaste waarschuwingen.
Verminder
maxPods
per knooppunt, schoon zwevende load balancer-IP's op en plan de grootte van subnetten voor grootschalige clusters.
Volgende stappen
- Bekijk de AKS-patch- en upgraderichtlijnen voor best practices en planningstips voordat u een upgrade start.
- Controleer altijd op wijzigingen die fouten veroorzaken in de API en valideer de compatibiliteit van uw workloads met de kubernetes-doelversie.
- Test upgrade-instellingen (zoals
maxSurge
,maxUnavailable
en PDBs) in een faseringsomgeving om productierisico's te minimaliseren. - Bewaak de upgrade-gebeurtenissen en clusterstatus gedurende het hele proces.
Azure Kubernetes Service