Delen via


Upgradeopties en aanbevelingen voor AKS-clusters (Azure Kubernetes Service)

Dit artikel bevat een technische basis voor AKS-clusterupgrades (Azure Kubernetes Service) door upgradeopties en algemene scenario's te behandelen. Gebruik de navigatiepaden op basis van scenario's aan het einde van dit artikel voor uitgebreide richtlijnen die zijn afgestemd op uw behoeften.

Wat in dit artikel wordt behandeld

Deze technische naslaginformatie biedt uitgebreide basisprincipes van AKS-upgrades voor:

  • Handmatige versus geautomatiseerde upgradeopties en wanneer u deze wilt gebruiken.
  • Algemene upgradescenario's met specifieke aanbevelingen.
  • Optimalisatietechnieken voor prestaties en minimale onderbrekingen.
  • Probleemoplossingsgids voor capaciteits-, afvoer- en timingproblemen.
  • Validatieprocessen en controles vóór de upgrade.

Deze hub is het beste om u te helpen bij het begrijpen van upgrademechanica, het oplossen van problemen, het optimaliseren van upgrade-instellingen en meer informatie over technische implementatie.

Zie de volgende verwante artikelen voor meer informatie:


Als u geen ervaring hebt met AKS-upgrades, begint u met de hub voor upgradescenario's voor begeleide, op scenario's gebaseerde hulp.

Snelle navigatie

Uw situatie Aanbevolen pad
Productiecluster heeft een upgrade nodig Strategieën voor productie-upgrades
Database/statusgerichte workloads Stateful workloadpatronen
Eerste upgrade of basiscluster Upgrade van AKS-basiscluster
Meerdere omgevingen of vloot Hub voor upgradescenario's
Knooppuntgroepen of Windows-knooppunten Upgrades van knooppuntgroepen
Alleen specifieke knooppuntgroep Upgrade van pool met één knooppunt

Upgrade opties

Handmatige upgrades uitvoeren

Met handmatige upgrades kunt u bepalen wanneer uw cluster wordt bijgewerkt naar een nieuwe Kubernetes-versie. Deze upgrades zijn handig voor het testen of gericht zijn op een specifieke versie.

Automatische upgrades configureren

Automatische upgrades houden uw cluster op een ondersteunde versie en up-to-date. Gebruik deze upgrades als u uw instellingen wilt automatiseren:

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. Permanente volumeclaims die lokaal redundante opslagschijven van Azure gebruiken, zijn zonegebonden en kunnen downtime veroorzaken als piekknooppunten zich in een andere zone bevinden. Gebruik een budget voor podonderbreking (PDB) om hoge beschikbaarheid te behouden tijdens afvoeren.

Het optimaliseren van upgrades om de prestaties te verbeteren en onderbrekingen te minimaliseren

Combineer gepland onderhoudsvenster, maximale piek, PDB, time-out voor knooppuntafvoer en knooppuntweektijd om de kans op geslaagde upgrades met weinig verstoring te vergroten.

Upgrade-instellingen Hoe extra knooppunten worden gebruikt Verwacht gedrag
maxSurge=5, maxUnavailable=0 5 piekknooppunten Er worden vijf knooppunten ingezet voor een upgradeproces.
maxSurge=5, maxUnavailable=0 0-4 piekknooppunten Upgrade mislukt vanwege onvoldoende piekknooppunten.
maxSurge=0, maxUnavailable=5 N/A Vijf bestaande knooppunten worden leeggezogen voor de upgrade.

Opmerking

Voordat u een upgrade uitvoert, controleert u op wijzigingen die fouten veroorzaken in de API en bekijkt u 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 PDB's (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 de productlaag of regionale capaciteit, kunnen upgrades mislukken wanneer piekknooppunten niet kunnen worden ingericht. Deze situatie is gebruikelijk bij gespecialiseerde productlagen (zoals GPU-knooppunten) of in regio's met beperkte resources. Fouten zoals SKUNotAvailable, AllocationFailedof OverconstrainedAllocationRequest kunnen optreden als maxSurge deze te hoog is ingesteld voor de beschikbare capaciteit.

Aanbevelingen om te voorkomen of op te lossen

Scenario 2: Knooppuntleegmaakfouten en PDBs

Voor upgrades moeten knooppunten worden leeggemaakt (pods worden ontruimd). Afvoerprocessen kunnen mislukken wanneer pods langzaam worden beëindigd of strikte Pod-onderbrekingsbudgetten (PDBs) het verwijderen van pods blokkeren.

Voorbeeldfout:

Code: UpgradeFailed
Message: Drain node ... failed when evicting pod ... Cannot evict pod as it would violate the pod's disruption budget.

Optie 1: Upgrade forceren (PDB omzeilen)

Waarschuwing

Geforceerde upgrade omzeilt PDB-beperkingen (Pod Disruption Budget) en kan serviceonderbreking veroorzaken door alle pods tegelijkertijd leeg te maken. Voordat u deze optie gebruikt, probeert u eerst onjuiste PDB-configuraties op te lossen (controleer de PDB minAvailable/maxUnavailable-instellingen, zorg ervoor dat er voldoende podreplica's zijn, controleer of PDBs niet alle verwijderingen blokkeren).

Gebruik alleen geforceerde upgrade wanneer PDBs essentiële upgrades voorkomen en niet kunnen worden opgelost. Hierdoor worden PDB-beveiligingen overschreven en is de service mogelijk niet beschikbaar tijdens de upgrade.

Eisen: Azure CLI 2.79.0+ of AKS API versie 2025-09-01+

az aks upgrade \
  --name $CLUSTER_NAME \
  --resource-group $RESOURCE_GROUP_NAME \
  --kubernetes-version $KUBERNETES_VERSION \
  --enable-force-upgrade \
  --upgrade-override-until 2023-10-01T13:00:00Z

Opmerking

  • De upgrade-override-until parameter definieert wanneer de validatie-bypass eindigt (moet een toekomstige datum/tijd zijn)
  • Als dit niet is opgegeven, wordt het venster standaard ingesteld op 3 dagen vanaf de huidige tijd
  • De 'Z' geeft utc/GMT-tijdzone aan

Waarschuwing

Wanneer geforceerde upgrade is ingeschakeld, heeft deze voorrang op alle andere drainconfiguraties. De instellingen voor het gedrag van ondraineerbare knooppunten (optie 2) worden niet toegepast wanneer een geforceerde upgrade actief is.

Optie 2: niet-drainbare knooppunten verwerken (respecteer PDB)

Gebruik deze conservatieve benadering om PDBs te respecteren en upgradefouten te voorkomen.

Configureer oninbaar knooppuntgedrag:

az aks nodepool update \
  --resource-group <resource-group-name> \
  --cluster-name <cluster-name> \
  --name <node-pool-name> \
  --undrainable-node-behavior Cordon \
  --max-blocked-nodes 2 \
  --drain-timeout 30

Gedragsopties:

  • Planning (standaard): Verwijdert geblokkeerd knooppunt en piekvervanging
  • Cordon (aanbevolen): Cordons-knooppunt en labelt het als kubernetes.azure.com/upgrade-status=Quarantined

Maximaal aantal geblokkeerde knooppunten (preview):

  • Hiermee specificeert u hoeveel knooppunten die niet kunnen worden gedraineerd, worden getolereerd.
  • Moet undrainable-node-behavior worden ingesteld
  • Wordt standaard ingesteld op de waarde maxSurge (meestal 10%) als deze niet is opgegeven.
Vereisten voor maximaal geblokkeerde knooppunten
  • De Azure CLI-extensie aks-preview versie 18.0.0b9 of hoger is vereist voor het gebruik van de functie maximaal geblokkeerde knooppunten.

    # Install or update the aks-preview extension
    az extension add --name aks-preview
    az extension update --name aks-preview
    
Voorbeeldconfiguratie met maximaal geblokkeerde knooppunten
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

Aanbevelingen om afvoerfouten te voorkomen

  • Instellen maxUnavailable in PDBs om ten minste één pod-verwijdering toe te staan
  • Podreplica's verhogen om te voldoen aan de vereisten van het storingbudget
  • 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. Zie Blauwgroene implementatie van AKS-clusters voor meer informatie.
Onleegbare 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
    
Oninbare knooppunten oplossen
  1. Verwijder de verantwoordelijke PDB:

    kubectl delete pdb <pdb-name>
    
  2. Verwijder het kubernetes.azure.com/upgrade-status: Quarantined label:

    kubectl label nodes <node-name> <label-name>
    
  3. 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>
    
  4. Nadat u deze stap hebt voltooid, kunt u de clusterstatus afstemmen door een updatebewerking uit te voeren zonder de optionele velden zoals beschreven in az aks. 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 volgende voorbeeld 2 is 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

Conservatieve instellingen of problemen op knooppuntniveau kunnen upgrades vertragen, 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 of maxUnavailable waarden (beperkt parallellisme).
  • Hoge inweektijden (lange wachttijden tussen knooppuntupgrades).
  • Leegloopfouten (zie Knooppuntafvoerfouten).

Aanbevelingen om te voorkomen of op te lossen

  • Gebruik maxSurge=33%, maxUnavailable=1 voor productie.
  • Gebruik maxSurge=50%, maxUnavailable=2 voor dev/test.
  • 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 meer IP-adressen. Als het subnet bijna zijn capaciteit bereikt, kan het toewijzen van knooppunten mislukken (bijvoorbeeld Error: SubnetIsFull). Dit scenario is gebruikelijk met Azure Container Networking Interface, hoog maxPods of een 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. De formule is Total IPs = (Number of nodes + maxSurge) * (1 + maxPods).

  • 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.


Veelgestelde vragen

Kan ik opensource-hulpprogramma's gebruiken voor validatie?

Ja. Veel opensource-hulpprogramma's kunnen goed worden geïntegreerd met AKS-upgradeprocessen:

  • kube-no-trouble (kubent): scant op afgeschafte API's vóór upgrades.
  • Trivy: Beveiligingsscans voor containerinstallatiekopieën en Kubernetes-configuraties.
  • Sonobuoy: Kubernetes conformance testen van en clustervalidatie.
  • kube-bench: Beveiligingsbenchmarkcontroles volgens de normen van het Centrum voor Internetbeveiliging.
  • Polaris: Validatie van aanbevolen procedures voor Kubernetes.
  • kubectl-neat: Kubernetes-manifesten opschonen voor validatie.

Hoe valideer ik API-compatibiliteit voordat ik een upgrade uitvoert?

Verouderingscontroles uitvoeren met behulp van hulpprogramma's zoals kubent:

# Install and run API deprecation scanner
kubectl apply -f https://github.com/doitintl/kube-no-trouble/releases/latest/download/knt-full.yaml

# Check for deprecated APIs in your cluster
kubectl run knt --image=doitintl/knt:latest --rm -it --restart=Never -- \
  -c /kubeconfig -o json > api-deprecation-report.json

# Review findings
cat api-deprecation-report.json | jq '.[] | select(.deprecated==true)'

Wat maakt AKS-upgrades anders dan andere Kubernetes-platforms?

AKS biedt verschillende unieke voordelen:

  • Systeemeigen Azure-integratie met Azure Traffic Manager, Azure Load Balancer en netwerken.
  • Azure Kubernetes Fleet Manager voor gecoördineerde upgrades voor meerdere clusters.
  • Automatische patchen van knooppunt afbeeldingen zonder handmatig knooppuntbeheer.
  • Ingebouwde validatie voor quota, netwerken en referenties.
  • Azure-ondersteuning voor problemen met betrekking tot upgrades.

Kies uw upgradepad

Dit artikel heeft u een technische basis gegeven. Selecteer nu uw pad op basis van scenario's.

Klaar om uit te voeren?

Als u... Ga vervolgens naar...
Productieomgeving Strategieën voor productie-upgrades: Geteste patronen voor upgrades zonder downtime
Databases of stateful apps Stateful workload patronen: Veilige upgrade patronen voor gegevenspersistentie
Meerdere omgevingen Hub voor upgradescenario's: Beslissingsstructuur voor complexe instellingen
Basiscluster Een AKS-cluster upgraden: Stapsgewijze clusterupgrade

Nog steeds beslissen?

Gebruik de hub voor upgradescenario's voor een begeleide beslissingsstructuur die rekening houdt met uw:

  • Tolerantie voor stilstandtijd
  • Omgevingscomplexiteit
  • Risicoprofiel
  • Tijdlijnbeperkingen

Volgende taken

  • 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 workload met de kubernetes-doelversie.
  • Test upgrade-instellingen (zoals maxSurge, maxUnavailableen PDBs) in een faseringsomgeving om productierisico's te minimaliseren.
  • Bewaak de upgrade-gebeurtenissen en clusterstatus gedurende het hele proces.