Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Dieser Artikel behandelt Upgradeoptionen für AKS-Cluster und bietet szenariobasierte Empfehlungen für häufige Upgrade-Herausforderungen.
- Ein einfaches Kubernetes-Versionsupgrade finden Sie unter Upgrade eines AKS-Clusters.
- Informationen zu Clustern mit mehreren Knotenpools oder Windows Server-Knoten finden Sie unter Upgrade eines Knotenpools in AKS.
- Informationen zum Upgrade eines bestimmten Knotenpools ohne vollständiges Clusterupgrade finden Sie unter Upgrade eines bestimmten Knotenpools.
Upgrade-Optionen
Durchführen manueller Upgrades
Mit manuellen Upgrades können Sie steuern, wann Ihr Cluster auf eine neue Kubernetes-Version aktualisiert wird. Nützlich für Tests oder für die Zielbestimmung einer bestimmten Version.
- Aktualisieren eines AKS-Clusters
- Upgrade mehrerer AKS-Cluster über Azure Kubernetes Fleet Manager
- Aktualisieren des Knotenimages
- Anpassen des Upgrades für Knotenanstiege
- Verarbeiten von Updates des Knotenbetriebssystems
Konfigurieren automatischer Upgrades
Automatische Upgrades halten Ihren Cluster auf einer unterstützten Version und auf dem neuesten Stand. Dies ist der Fall, wenn Sie festlegen und vergessen möchten.
- Automatisches Upgraden eines AKS-Clusters
- Automatisches Upgrade mehrerer AKS-Cluster über Azure Kubernetes Fleet Manager
- Planen und Steuern von Upgrades mithilfe der geplanten Wartung
- Automatisches Beenden von AKS-Clusterupgrades bei Breaking Changes an der API (Vorschau)
- Automatisches Upgraden von Betriebssystemimages für AKS-Clusterknoten
- Automatisches Anwenden von Sicherheitsupdates auf AKS-Knoten mithilfe von GitHub Actions
Besondere Überlegungen für Knotenpools, die mehrere Verfügbarkeitszonen umfassen
AKS wendet in Knotengruppen den bestmöglichen Zonenausgleich an. Während eines Upgrade-Anstiegs sind die Zonen für Überspannungsknoten in Skalierungssätzen virtueller Computer im Voraus unbekannt, was vorübergehend zu einer unausgewogenen Zonenkonfiguration führen kann. AKS löscht Surgeknoten nach dem Upgrade und stellt die ursprüngliche Zonenverteilung wieder her. Wenn Zonen ausgeglichen bleiben sollen, legen Sie den Stoß auf ein Vielfaches von drei Knoten fest.To keep zones balanced, set surge to a multiple of three nodes. PVCs, die Azure LRS-Datenträger verwenden, sind zonengebunden und können Downtime verursachen, wenn sich Surgeknoten in einer anderen Zone befinden. Verwenden Sie ein Pod-Unterbrechungsbudget, um während des Ausgleichs eine hohe Verfügbarkeit aufrechtzuerhalten.
Optimieren von Upgrades zur Verbesserung der Leistung und Minimierung von Unterbrechungen
Kombinieren Sie das Fenster für die geplante Wartung, den maximalen Anstieg, das Pod-Unterbrechungsbudget, das Timeout für den Knotenausgleich und das Timeout für den Knotendurchlauf, um die Wahrscheinlichkeit für erfolgreiche Upgrades mit minimalen Unterbrechungen zu erhöhen.
- Geplantes Wartungsfenster: Planen Sie das automatische Upgrade während verkehrsärmerer Zeiten (empfehlen mindestens vier Stunden)
- Max Surge: Höhere Werte beschleunigen Upgrades, können jedoch Workloads stören; 33% wird für die Produktion empfohlen
- Max Nicht verfügbar: Verwendung, wenn die Kapazität begrenzt ist
- Pod-Unterbrechungsbudget: Legen Sie dies fest, um die Anzahl ausgefallener Pods während Upgrades zu begrenzen. Überprüfen Sie dies für Ihren Dienst.
- Timeout für den Knotenausgleich: Konfigurieren Sie die Wartezeit bis zum Entfernen von Pods (der Standardwert beträgt 30 Minuten).
- Node-Pufferzeit: Upgrade gestaffelt durchführen, um Ausfallzeiten zu minimieren (Standardzeit 0 Minuten)
Upgradeeinstellungen | Wie zusätzliche Knoten verwendet werden | Erwartetes Verhalten |
---|---|---|
maxSurge=5 , maxUnavailable=0 |
5 Surgeknoten | 5 Surgeknoten für Upgrade |
maxSurge=5 , maxUnavailable=0 |
0–4 Surgeknoten | Upgrade schlägt aufgrund unzureichender Surgeknoten fehl |
maxSurge=0 , maxUnavailable=5 |
Nicht verfügbar | 5 vorhandene Knoten für das Upgrade ausgeglichen |
Hinweis
Überprüfen Sie vor der Aktualisierung, ob es API-Änderungen gibt, die zu Unterbrechungen führen könnten, und lesen Sie die AKS-Versionshinweise , um Unterbrechungen zu vermeiden.
Validierungen, die im Upgradeprozess verwendet werden
AKS führt Vorabupgradeüberprüfungen durch, um die Clusterintegrität sicherzustellen:
- Breaking Changes bei der API: Erkennt veraltete APIs.
- Kubernetes-Upgradeversion: Stellt einen gültigen Upgradepfad sicher.
- PDB-Konfiguration: Sucht nach falsch konfigurierten PDBs (z. B.
maxUnavailable=0
). - Kontingent: Bestätigt ein ausreichendes Kontingent für Surgeknoten.
- Subnetz: Überprüft ausreichende IP-Adressen.
- Zertifikate/Dienstprinzipale: Erkennt abgelaufene Anmeldeinformationen.
Diese Prüfungen helfen dabei, Upgradefehler zu minimieren und frühzeitige Einblicke in Probleme zu bieten.
Häufige Upgradeszenarien und Empfehlungen
Szenario 1: Kapazitätsbeschränkungen
Wenn Ihr Cluster durch SKU oder regionale Kapazität begrenzt ist, können Upgrades fehlschlagen, wenn Überspannungsknoten nicht bereitgestellt werden können. Dies ist üblich bei spezialisierten SKUs (z. B. GPU-Knoten) oder in Regionen mit begrenzten Ressourcen. Fehler wie SKUNotAvailable
, , AllocationFailed
oder OverconstrainedAllocationRequest
können auftreten, wenn maxSurge
für die verfügbare Kapazität zu hoch festgelegt ist.
Empfehlungen zur Vermeidung oder Lösung von Problemen
- Verwenden Sie
maxUnavailable
, um ein Upgrade vorhandener Knoten durchzuführen, anstatt neue Surgeknoten bereitzustellen. Erfahren Sie mehr. - Senken Sie
maxSurge
, um den Bedarf an zusätzlicher Kapazität zu reduzieren. Erfahren Sie mehr. - Verwenden Sie für reine Sicherheitsupdates Sicherheitspatch-Reimages, für die keine Surgeknoten erforderlich sind. Erfahren Sie mehr.
Szenario 2: Knotenausgleichsfehler und Pod-Unterbrechungsbudgets
Upgrades erfordern den Knotenausgleich (das Entfernen von Pods). Abflüsse können fehlschlagen, wenn:
- Das Beenden von Pods dauert lange (lange Hooks beim Herunterfahren oder persistente Verbindungen).
- Strikte Pod-Unterbrechungsbudgets blockieren das Entfernen von Pods.
Beispielfehlermeldung:
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.
Empfehlungen zur Vermeidung oder Lösung von Problemen
Legen Sie
maxUnavailable
in Pod-Unterbrechungsbudgets fest, damit mindestens ein Pod entfernt werden kann.Erhöhen Sie die Anzahl der Podreplikate, damit das Unterbrechungsbudget das Entfernen tolerieren kann.
Verwenden Sie
undrainableNodeBehavior
, um Upgrades fortzusetzen, auch wenn einige Knoten nicht entwässert werden können.- Zeitplan (Standard): Knoten- und Surge-Ersatz kann gelöscht werden, wodurch sich die Kapazität reduziert.
- Cordon (Empfohlen): Der Knoten ist gesperrt und beschriftet als
kubernetes.azure.com/upgrade-status=Quarantined
.Beispiel für einen -Befehl:
az aks nodepool update \ --resource-group <resource-group-name> \ --cluster-name <cluster-name> \ --name <node-pool-name> \ --undrainable-node-behavior Cordon
Die folgende Beispielausgabe zeigt das aktualisierte Verhalten eines nicht entladbaren Knotens:
"upgradeSettings": { "drainTimeoutInMinutes": null, "maxSurge": "1", "nodeSoakDurationInMinutes": null, "undrainableNodeBehavior": "Cordon" }
Verlängern Sie das Ausschaltzeitlimit, wenn die Arbeitslasten mehr Zeit benötigen (der Standardwert beträgt 30 Minuten).
Testen Sie PDBs im Staging, überwachen Sie Upgradeereignisse und verwenden Sie blaugrüne Bereitstellungen für kritische Workloads. Erfahren Sie mehr.
Überprüfen von nicht ausgleichsfähigen Knoten
Die blockierten Knoten sind für Pods ungeplant und mit der Beschriftung
"kubernetes.azure.com/upgrade-status: Quarantined"
gekennzeichnet.Überprüfen Sie die Bezeichnung aller blockierten Knoten, wenn beim Upgrade ein Knotenausgleichsfehler auftritt:
kubectl get nodes --show-labels=true
Korrigieren von nicht ausgleichsfähigen Knoten
Entfernen Sie das verantwortliche Pod-Unterbrechungsbudget:
kubectl delete pdb <pdb-name>
Entfernen Sie die
kubernetes.azure.com/upgrade-status: Quarantined
Bezeichnung:kubectl label nodes <node-name> <label-name>
Löschen Sie optional den blockierten Knoten:
az aks nodepool delete-machines --cluster-name <cluster-name> --machine-names <machine-name> --name <node-pool-name> --resource-group <resource-group-name>
Nachdem Sie diesen Schritt abgeschlossen haben, können Sie den Clusterstatus abgleichen, indem Sie einen Aktualisierungsvorgang ohne die optionalen Felder ausführen, wie hier beschrieben. Alternativ können Sie den Knotenpool auf dieselbe Anzahl von Knoten skalieren wie die Anzahl der aktualisierten Knoten. Diese Aktion stellt sicher, dass der Knotenpool seine beabsichtigte Originalgröße erhält. AKS priorisiert die Entfernung der blockierten Knoten. Mit diesem Befehl wird auch der Clusterbereitstellungsstatus auf
Succeeded
wiederhergestellt. Im angegebenen Beispiel ist2
die Gesamtanzahl der aktualisierten Knoten.# 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
Szenario 3: Langsame Upgrades
Upgrades können durch konservative Einstellungen oder Probleme auf Knotenebene verzögert werden, was sich auf ihre Fähigkeit auswirkt, mit Patches und Verbesserungen auf dem neuesten Stand zu bleiben.
Häufige Ursachen für langsame Upgrades sind:
- Niedrige
maxSurge
- odermaxUnavailable
-Werte (begrenzt Parallelität). - Hohe Durchlaufzeiten (lange Wartezeiten zwischen Knotenupgrades).
- Ausgleichsfehler (siehe Knotenausgleichsfehler).
Empfehlungen zur Vermeidung oder Lösung von Problemen
- Für die Produktion:
maxSurge=33%
,maxUnavailable=1
. - Für Entwicklungs-/Test:
maxSurge=50%
,maxUnavailable=2
. - Verwenden Sie den Betriebssystemsicherheitspatch für schnelles, gezieltes Patchen (verhindert vollständiges Neustrukturieren von Knoten).
- Aktivieren Sie
undrainableNodeBehavior
, um Upgrade-Blocker zu vermeiden.
Szenario 4: IP-Erschöpfung
Surgeknoten erfordern zusätzliche IPs. Wenn sich das Subnetz in der Nähe seiner Kapazität befindet, kann die Knotenbereitstellung fehlschlagen (z. B. Error: SubnetIsFull
). Dies ist üblich für Azure CNI, hohe maxPods
oder große Knotenanzahlen.
Empfehlungen zur Vermeidung oder Lösung von Problemen
Stellen Sie sicher, dass Ihr Subnetz über genügend IPs für alle Knoten, Überspannungsknoten und Pods verfügt:
- Formel:
Total IPs = (Number of nodes + maxSurge) * (1 + maxPods)
- Formel:
Geben Sie nicht verwendete IPs zurück, oder erweitern Sie das Subnetz (z. B. von /24 auf /22).
Verringern Sie den Wert von
maxSurge
, wenn eine Subnetzerweiterung nicht möglich ist:az aks nodepool update \ --resource-group <resource-group-name> \ --cluster-name <cluster-name> \ --name <node-pool-name> \ --max-surge 10%
Überwachen der IP-Nutzung mit Azure Monitor oder benutzerdefinierten Warnungen.
Reduzieren Sie den Wert von
maxPods
pro Knoten, bereinigen Sie verwaiste Lastenausgleichs-IPs, und planen Sie die Subnetzgröße für hochskalierte Cluster.
Nächste Schritte
- Lesen Sie AKS-Patch- und Upgradeanleitungen für bewährte Methoden und Planungstipps, bevor Sie ein Upgrade starten.
- Überprüfen Sie immer, ob es Breaking Changes für APIs gibt, und validieren Sie die Kompatibilität Ihrer Workloads mit der Kubernetes-Zielversion.
- Testen Sie Upgradeeinstellungen (z. B.
maxSurge
,maxUnavailable
und PDBs) in einer Staging-Umgebung, um das Produktionsrisiko zu minimieren. - Überwachen Sie Upgrade-Ereignisse und die Cluster-Gesundheit während des gesamten Prozesses.
Azure Kubernetes Service