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.
Azure Kubernetes Service (AKS) führt Rollupgrades durch, um Unterbrechungen bei der Ausführung von Workloads zu minimieren.
Für die meisten Produktionsworkloads ist AKS Automatic gegebenenfalls die empfohlene Standardeinstellung. AKS Automatic umfasst produktionsreife Standardeinstellungen für Upgradevorgänge, z. B. automatische Kubernetes-Versionsupgrades, automatische Updates der Betriebssystemimages der Knoten, verwaltete Vorgänge für Systemknoten und integrierte Schutzmechanismen, die den manuellen Aufwand reduzieren. Weitere Informationen finden Sie in der Einführung in AKS Automatic.
In diesem Artikel werden die AKS-Upgrademechaniken erläutert und hervorgehoben, wo AKS Automatic und AKS Standard unterschiedlich sind.
Voraussetzungen
- Grundlegendes zu bewährten Methoden für Kubernetes-Upgrades
- Vertrautheit mit Pod Disruption Budgets (PDBs)
Upgrademodell: AKS Automatic und AKS Standard
Die Clustermodi „AKS Automatic“ und „AKS Standard“ verwenden dieselben grundlegenden Prinzipien für Kubernetes-Upgrades, unterscheiden sich jedoch bei den Standardeinstellungen und der operativen Verantwortung.
| Upgrade-Bedenken | AKS Automatik | AKS Standard |
|---|---|---|
| Produktionspositionierung | Empfohlene Standardeinstellung für die meisten Produktionsworkloads, sofern zutreffend | Flexibles Modell mit standardmäßig mehr manueller Konfiguration |
| Aktualisierungen von Kubernetes-Minor-Versionen | Vorkonfiguriertes Kanal für automatische Upgrades | Standardmäßig manuell, optionaler automatischer Kanal |
| Node-OS-Image-Upgrades | Vorkonfigurierter automatischer Kanal für Knoten-OS-Images | Standardmäßig manuell, optionaler automatischer Kanal |
| Systemknotenpoolvorgänge | Von AKS verwaltet | Vom Kunden verwaltet |
| Geplante Wartungsfenster | Standardmäßig verfügbar | Optionale Konfiguration |
| Steuerelemente für Arbeitslastunterbrechungen | Kundenseitig verwaltet, einschließlich Replikationsstrategie, Bereitschaftsverhalten und Unterbrechungsrichtlinie | Kundenseitig verwaltet, einschließlich Replikationsstrategie, Bereitschaftsverhalten und Unterbrechungsrichtlinie |
Note
AKS Automatic vereinfacht Plattformvorgänge, aber die gemeinsame Verantwortung gilt weiterhin. Das Verfügbarkeitskonzept auf Workload-Ebene und das Verhalten der Eviction-Richtlinie liegen weiterhin in der Verantwortung der Kunden.
Verhalten bei Rolling Upgrades in AKS
AKS aktualisiert Knotenpools mithilfe eines rollierenden Musters, das Kapazität behält, während knoten ersetzt oder umgestaltet werden. Dieses Verhalten ist für alle AKS-Clustermodi identisch.
Auf hoher Ebene: AKS
- Fügt anhand der Upgrade-Einstellungen temporäre Zusatzkapazität hinzu.
- Sperrt Knoten und entfernt Workloads von ihnen, um sie zu verschieben.
- Stellt Knoten mit dem Ziel-Image neu bereit oder ersetzt sie durch die Zielversion.
- Entfernt die temporäre Kapazitätserhöhung nach Abschluss.
Beispiel für ein fortlaufendes Upgrade
In diesem Beispiel wird das Upgrade eines Clusters mit zwei Knoten von Kubernetes 1.30 auf 1.31 veranschaulicht, wobei maxSurge auf 1 festgelegt ist.
Schritt 1: Ersteinrichtung
Der Cluster startet mit zwei Knoten, die Version 1.30 ausführen, wobei jeder Knoten Anwendungs-Pods hostet.
- Knoten 1: Pod A, Pod B
- Knoten 2: Pod C, Pod D
- Surge Node: Leer (mit Ausnahme von DaemonSets und neuen Pods)
Schritt 2: Absperren und Entwässerung des ersten Knotens
AKS sperrt Knoten 1 ab, um die Planung neuer Pods zu verhindern, und entleert dann bestehende Pods.
- Pod A → auf dem Surge Node entfernt und ersetzt
- Pod B → auf Knoten 2 entfernt und ersetzt
Schritt 3: Upgrade des ersten Knotens
Auf Node 1 wird ein Reimaging mit Kubernetes Version 1.31 durchgeführt, während die Pods weiterhin auf anderen Knoten ausgeführt werden.
- Knoten 1: Upgrade auf v1.31
- Knoten 2: Pod B, Pod C, Pod D
- Überspannungsknoten: Pod A
Schritt 4: Abgrenzen und entwässern des zweiten Knotens
AKS wiederholt den Vorgang für Node 2, Pods werden entfernt, und der Scheduler verteilt sie auf geeignete verfügbare Knoten.
- Pod C, B → auf Knoten 1 entfernt und ersetzt
- Pod D → auf dem Surge Node entfernt und ersetzt
- Node 2: Gesperrt und Reimaging auf v1.31
Schritt 5: Entfernen des Surge-Knotens
Nachdem alle dauerhaften Knoten aktualisiert wurden, wird der Surge-Knoten gesperrt, entleert und gelöscht.
- Pod A wurde aus Knoten 1 ausgegliedert und ersetzt
- Pod D → auf Node 2 entfernt und ersetzt
- Surge Node: Gelöscht
Endzustand
Alle Knoten führen jetzt Kubernetes Version 1.31 aus, wobei die Pods über den Cluster verteilt werden.
- Knoten 1 (v1.31): Pod A, Pod C
- Knoten 2 (v1.31): Pod B, Pod D
Restriktives Verhalten von Pod Disruption Budgets (PDBs)
Wenn eine restriktive PDB-Sperrung blockiert, kann der Knotenabfluss verzögert oder verhindert werden. AKS kann das Cordon Verhalten eines Knotens, der nicht entleert werden kann, verwenden, um je nach konfiguriertem Verhalten andere geeignete Knoten weiter zu aktualisieren. Blockierte Knoten verbleiben möglicherweise in einer älteren Version, bis die Blockierungsbedingung aufgelöst wird.
Restriktives PDB-Beispiel
Dieses Beispiel zeigt das Upgrade eines Clusters mit zwei Knoten von Kubernetes 1.30 auf 1.31, wobei maxSurge auf 2 gesetzt ist und ein PDB den Drain-Vorgang des ersten Knotens blockiert.
Schritt 1: Anfängliches Setup mit restriktivem PDB
Der Cluster hat anfänglich zwei Knoten, auf denen Version 1.30 ausgeführt wird, mit einem PDB, das Pod A vor dem Entfernen schützt.
- Knoten 1: Pod A (geschützt durch PDB), Pod B
- Knoten 2: Pod C, Pod D
- Spitzenlastknoten: 2 neu erstellte Knoten
- PDB: Verhindert die Entfernung von Pod A
Schritt 2: Versuch, ersten Knoten zu entwässern (blockiert)
AKS sperrt Node 1, kann Pod A jedoch aufgrund von PDB-Beschränkungen nicht evakuieren.
- Knoten 1: Abgesperrt und als unter Quarantäne markiert (Pod A festgefahren)
- Pod B → auf Surge Node 1 ausgeräumt und ersetzt, während Surge Node 2 vorübergehend nicht verwendet wird
- Status: Node 1-Upgrade blockiert
Schritt 3: Fahren Sie mit dem zweiten Knoten fort
Mit Knoten 1 unter Quarantäne stellt AKS das Upgrade von Node 2 fort.
- Knoten 1: Bleibt unter Quarantäne (v1.30)
- Knoten 2: Abgesperrt und erfolgreich entleert
- Pod C → Wird entfernt und auf Surge-Node 2 ersetzt
- Pod D → Wird entfernt und auf Surge-Node 2 ersetzt
Schritt 4: Upgrade des zweiten Knotens
Node 2 wird erfolgreich auf Kubernetes Version 1.31 umgeschrieben.
- Knoten 1: Immer noch unter Quarantäne (v1.30) mit Pod A
- Knoten 2: Upgrade auf v1.31
- Spitzknoten 1: Pod B
- Überspannungsknoten 2: Pod C, Pod D
Schritt 5: Ein Surge-Node wird zum dauerhaften Ersatz, wenn ein anderer entfernt wird
Da Node 1 weiterhin unter Quarantäne bleibt, wird Surge Node 1 zum dauerhaften Ersatz und läuft mit v1.31, während Surge Node 2 gelöscht wird.
- Knoten 1: In Quarantäne (v1.30) – erfordert manuelle Eingriffe
- Pod C, Pod D → von Surge Node 2 entfernt und auf Knoten 2 ersetzt
- Surge Node 1 (v1.31): Pod B (jetzt dauerhaft)
- Surge Node 2 (v1.31): Gelöscht
Endzustand
Das Upgrade wird mit einem isolierten Knoten abgeschlossen, der manuelle Eingriffe erfordert.
- Knoten 1: In Quarantäne versetzt (v1.30) mit Pod A – Kunde muss das Problem manuell lösen (siehe Nicht entleerbare Knoten auflösen)
- Node 2 (v1.31): Normal ausgeführt
- Ehemaliger Surge Node (v1.31): Jetzt dauerhafter Ersatz
Von Bedeutung
Der unter Quarantäne gestellte Knoten (Knoten 1) liegt in der Verantwortung des Kunden, der ihn selbst verwalten muss. Sie müssen eine der folgenden Aktionen ausführen:
- Passen Sie die PDB so an, dass die Eviction von Pod A möglich ist.
- Manuelles Löschen von Pod A.
- Löschen Sie den Knoten und erstellen Sie ihn neu, nachdem die blockierende Bedingung behoben wurde.
Wichtige Überlegungen für PDB-blockierte Upgrades
-
Verhalten bei nicht entleerbaren Knoten: Legen Sie für den Knotenpool
Cordonfest, um dieses Quarantäneverhalten zu aktivieren. - Verantwortung des Kunden: Unter Quarantäne gestellte Knoten erfordern ein manuelles Eingreifen, um das Problem zu beheben.
- Clusterkapazität: Der Spitzenlastknoten bleibt dauerhaft bestehen, was sich potenziell auf die Kapazitätsplanung des Clusters auswirkt.
- Überwachung: Verfolgen Sie isolierte Knoten über Azure Monitor oder Kubectl, um eine zeitnahe Auflösung sicherzustellen.
Tipp
Um das Quarantäneszenario vollständig zu vermeiden, können Sie die automatische PDB-Verwaltung verwenden, um Bereitstellungsreplikate automatisch zu skalieren, damit PDB-Einschränkungen erfüllt sind, bevor der Abfluss beginnt. Auf diese Weise kann die Entfernung ohne Blockierung fortgesetzt werden, ohne die Notwendigkeit einer manuellen Quarantäneauflösung zu vermeiden.
Blue-Green-Knotenpool-Aktualisierungen (manuelle Kontrolle)
Blue-Green Upgrades bieten einen kontrollierteren Upgradeansatz, indem manuell ein vollständiger Satz neuer Knotenpools erstellt wird, bevor Workloads migriert werden. Dieser manuelle Ansatz bietet Ihnen die vollständige Kontrolle über den Upgradeprozess und dessen Zeitpunkt.
Weitere Informationen finden Sie unter Blue-Green-Knotenpoolupgrades in AKS.
Wann Blue-Green-Upgrades eingesetzt werden sollten
Manuelle Blue-Green-Upgrades von Knotenpools sind eine fortgeschrittene Strategie für spezialisierte Anforderungen, wie etwa explizite Migrationsprüfpunkte, benutzerdefinierte Validierungsschranken oder engmaschig kontrollierte Umschaltungen.
Verwenden Sie manuelles Blue-Green, wenn Sie es benötigen:
- Operatorgesteuerte Migrationsphasen.
- Benutzerdefinierte Überprüfungs- und Akzeptanzkriterien vor dem Commit.
- Explizite Rollback-Choreographie, die an interne Runbooks gebunden ist.
Für die meisten Produktionsworkloads ist, sofern zutreffend, das Standardaktualisierungsverhalten von AKS Automatic der bevorzugte Ausgangspunkt, und manuelle Blue-Green-Bereitstellungen bleiben in der Regel Ausnahmefällen vorbehalten.
Wichtige Begriffe
- Blauer Knotenpool: Ihr vorhandener Knotenpool, der die aktuelle Kubernetes-Version ausführt.
- Grüner Knotenpool: Neuer Knotenpool, den Sie erstellen, um die Kubernetes-Zielversion auszuführen.
- Manuelle Steuerung: Sie verwalten alle Aspekte des Migrationsprozesses.
- Überprüfungsprüfpunkte: Sie entscheiden, wann Sie fortfahren, anhalten oder rollbacken möchten.
Vorteile von Blue-Green-Aktualisierungen
- Vollzugriff: Sie entscheiden genau, wann jeder Schritt eintritt.
- Benutzerdefinierte Validierung: Definieren Sie Ihre eigenen Validierungskriterien und den Zeitpunkt der Validierung.
- Schrittweise Migration: Verschieben Sie Workloads in Ihrem bevorzugten Tempo.
- Einfaches Rollback: Ursprüngliche Knoten bleiben verfügbar, bis Sie sie löschen.
Wichtige Aspekte für Blue-Green-Upgrades
- Manueller Aufwand: Erfordert eine aktive Verwaltung während des gesamten Prozesses.
- Kontingentanforderungen: Erfordert 2x die Knotenkapazität während des Upgrades.
- Planung: Dokumentieren Sie Ihre Überprüfungskriterien und Rollbackprozeduren.
Beispiel für einen manuellen Blue-Green-Upgradeprozess
In diesem Beispiel wird das manuelle Upgrade eines Clusters mit zwei Knoten von Kubernetes 1.30 auf 1.31 mithilfe der Blau-Grün-Bereitstellung veranschaulicht.
Schritt 1: Erstellen eines grünen Knotenpools
Zunächst erstellen Sie manuell einen neuen Knotenpool mit der Kubernetes-Zielversion zusammen mit Ihrem vorhandenen Knotenpool.
- Blauer Knotenpool (v1.30): Pod A, Pod B, Pod C, Pod D (vorhanden)
- Grüner Knotenpool (v1.31):Leer (manuell erstellt von Ihnen)
-
Ihre Aktion:
az aks nodepool addmit neuer Kubernetes-Version
Schritt 2: Manuelles Abkabeln blauer Knoten
Sperren Sie die blauen Knoten für die Planung neuer Pods, während vorhandene Pods weiter ausgeführt werden.
-
Ihre Aktion:
kubectl cordonauf jedem blauen Knoten - Blaue Knoten: Gesperrt, keine neuen Pods geplant
- Grüne Knoten: Bereit zum Empfangen von Workloads
Schritt 3: Manuelles Entwässern blauer Knoten (kontrolliertes Tempo)
Sie steuern das Migrationstempo, indem Sie Knoten einzeln oder in Batches manuell entwässern.
-
Ihre Aktion:
kubectl drainauf ausgewählten blauen Knoten - Pod-Migration: Pods werden automatisch grünen Knoten neu zugewiesen
- Überprüfung: Überprüfen von Arbeitslasten auf grünen Knoten, bevor Sie fortfahren
Schritt 4: Überprüfen und Entscheiden
Überprüfen Sie nach der Migration von Workloads die Anwendungsleistung auf grünen Knoten.
In dieser Phase haben Sie folgende Möglichkeiten:
- Überwachen: Überprüfen von Anwendungsmetriken und Protokollen
- Test: Ausführen von Überprüfungstests im grünen Knotenpool
- Entscheiden: Festlegen auf Grün oder Zurückschalten auf Blau
Schritt 5: Commit oder Rollback
Basierend auf Ihrer Überprüfung führen Sie das Upgrade manuell aus oder führen ein Rollback aus.
Option A - Commit (Erfolg):
-
Ihre Aktion: Löschen des blauen Knotenpools mithilfe von
az aks nodepool delete - Ergebnis: Der grüne Knotenpool wird primär
Option B - Rollback (Probleme erkannt):
-
Ihre Aktion: Heben Sie die Sperrung blauer Knoten mit
kubectl uncordonauf, leeren Sie grüne Knoten mitkubectl drainund löschen Sie den grünen Knotenpool mitaz aks nodepool delete - Ergebnis: Workloads kehren zu blauen Knoten zurück
Überlegungen zur Produktion für die Upgradeplanung
-
Surge (
maxSurge) Konfiguration: Steuert die Anzahl der zusätzlichen Knoten, die bei Upgrades erstellt werden. Höhere Werte beschleunigen Upgrades, verbrauchen aber mehr Ressourcen. - Pod-Unterbrechungsbudgets (PDBs): Konfigurieren Sie PDBs, um die Anwendungsverfügbarkeit während des Upgradeprozesses sicherzustellen.
- Knotenpool-Upgrades: Jeder Knotenpool wird unabhängig aktualisiert. Planen Sie ihre Upgradestrategie entsprechend.
- Kapazität und Kontingente: Überprüfen Sie vor Upgrade-Zeitfenstern die Anforderungen an temporäre Kapazität sowie an Kapazität und Kontingente im Dauerbetrieb.
- Überwachung und Warnungen: Richten Sie die Überwachung und Warnung ein, bevor das Upgrade gestartet wird.
In AKS Automatic sind mehrere Optionen auf Plattformebene für upgrades vorkonfiguriert für die Produktionsbereitschaft. In AKS Standard treffen Teams diese Entscheidungen in der Regel explizit.