TKG-Dienstcluster unterstützen ein Modell für parallele Updates. Sie können ein paralleles Update initiieren, indem Sie die Clusterspezifikation ändern. Einige Systemvorgänge können ein paralleles Update initialisiert haben. Bevor Sie die Umgebung aktualisieren, sollten Sie sich mit dem Vorgang des parallelen Updates vertraut machen.

Modell für parallele Updates für TKGS-Cluster nach TKG-Dienst 3.0

Ab TKG-Dienst 3.0 ist der TKG-Controller unabhängig von vCenter Server und vom Supervisor. Weitere Informationen hierzu finden Sie unter Verwenden der TKG-Dienst. Durch das Upgrade dieser Komponenten wird kein paralleles Update von TKGS-Clustern aktiviert.

Das Upgrade der TKG-Dienstversion kann ein paralleles Update von TKGS-Clustern auslösen.

Modell für parallele Updates für TKGS-Cluster vor TKG-Dienst 3.0

Der TKG-Controller wird auf Supervisor ausgeführt. Wenn Sie Supervisor aktualisieren, wird der TKG-Controller automatisch aktualisiert, wenn ein Update verfügbar ist. Jedes TKG-Controller-Update kann Aktualisierungen für unterstützende Dienste wie z. B. CNI, CSI, CPI sowie Konfigurationsaktualisierungen für Cluster enthalten. Zum Zweck der Kompatibilität führt das System Vorabprüfungen durch und erzwingt die Konformität.

vSphere IaaS control plane unterstützt ein Modell für parallele Updates für TKG-Cluster auf Supervisor. Das Modell für parallele Updates minimiert die Ausfallzeiten während der Aktualisierung. Parallele Updates umfassen Upgrades der Kubernetes-Versionen sowie der Infrastruktur und der Dienste, die die Cluster unterstützen, wie z. B. Konfigurationen und Ressourcen virtueller Maschinen, Dienste und Namespaces sowie benutzerdefinierte Ressourcen. Damit das Update erfolgreich verläuft, muss Ihre Konfiguration verschiedene Kompatibilitätsanforderungen erfüllen, sodass das System Bedingungen für die erneute Prüfung erzwingt, um sicherzustellen, dass die Cluster für das Updates bereit sind, und Rollback unterstützt, falls das Cluster-Upgrade nicht erfolgreich ist.

Sie können ein paralleles Update eines TKG-Clusters initiieren, indem Sie d en Wert des Parameters in der Clusterspezifikation ändern. Ein paralleles Cluster-Update kann auch vom System initiiert werden. Wird beispielsweise ein vSphere-Namespaces-Update durchgeführt, gibt das System die aktualisierten Konfigurationen sofort an alle Arbeitslastcluster weiter. Diese Aktualisierungen können ein paralleles Update von Clusterknoten auslösen. Zudem kann eine Änderung an einem der Konfigurationselemente auch zur Initiierung eines parallelen Updates führen. Wenn beispielsweise das einer Verteilungsversion entsprechende VirtualMachineImage umbenannt oder ersetzt wird, wird ein paralleles Update initiiert, da das System versucht, alle auf dem neuen Image ausgeführten Knoten abzurufen. Darüber hinaus löst das Aktualisieren eines Supervisors wahrscheinlich ein paralleles Update der dort bereitgestellten Arbeitslast-Cluster aus. Wenn beispielsweise der vmware-system-tkg-controller-manager aktualisiert wird, fügt das System neue Werte in den Manifestgenerator ein, und der Controller initiiert ein paralleles Update zur Bereitstellung dieser Werte.

Der Vorgang des parallelen Updates zum Ersetzen der Clusterknoten ähnelt dem parallelen Update von Pods in einer Kubernetes-Bereitstellung. Es gibt zwei verschiedene Controller, die für das Durchführen eines parallelen Updates von Arbeitslast-Clustern verantwortlich sind: den Add-On-Controller und den Cluster-Controller. Innerhalb dieser beiden Controller gibt es drei wichtige Phasen für ein paralleles Update: das Aktualisieren von Add-Ons, das Aktualisieren der Steuerungsebene und das Aktualisieren der Worker-Knoten. Diese Phasen erfolgen in der genannten Reihenfolge mit Vorabprüfungen, die verhindern, dass ein Schritt gestartet wird, bevor der vorherige Schritt ausreichend fortgeschritten ist. Diese Schritte werden möglicherweise übersprungen, wenn sie als unnötig eingestuft wurden. Ein Update kann beispielsweise nur Worker-Knoten betreffen und daher keine Add-On- oder Steuerungsebenen-Updates erfordern.

Während des Updatevorgangs fügt das System einen neuen Clusterknoten hinzu und wartet darauf, dass der Knoten mit der Kubernetes-Zielversion in den Onlinemodus wechselt. Das System markiert dann den alten Knoten zum Löschen, wechselt zum nächsten Knoten und wiederholt den Vorgang. Der alte Knoten wird erst gelöscht, wenn alle Pods entfernt wurden. Wenn ein Pod beispielsweise mit PodDisruptionBudgets definiert ist, die verhindern, dass ein Knoten vollständig entleert wird, wird der Knoten isoliert, aber erst gelöscht, wenn diese Pods entfernt werden können. Das System aktualisiert zuerst alle Knoten der Steuerungsebene und dann die Worker-Knoten. Während eines Updates ändert sich der Status des Clusters in „wird aktualisiert“. Nach Abschluss des parallelen Updates ändert sich der Status des Clusters in „wird ausgeführt“.

Auf einem Cluster ausgeführte Pods, die nicht von einem Replizierungs-Controller gesteuert werden, werden während des Upgrades einer Kubernetes-Version, das im Rahmen der Entleerung des Worker-Knotens beim Update des Clusters stattfindet, gelöscht. Dies ist der Fall, wenn das Cluster-Update manuell oder automatisch durch ein vSphere Namespaces- oder Supervisor-Update ausgelöst wird. Zu den nicht durch einen Replizierungs-Controller gesteuerten Pods zählen Pods, die nicht als Teil einer Bereitstellungs- oder ReplicaSet-Spezifikation erstellt werden. Weitere Informationen finden Sie in der Kubernetes-Dokumentation unter Pod Lifecycle: Pod lifetime (Pod-Lebenszyklus: Pod-Lebensdauer).

Vom Benutzer initiierte parallele Updates

Sie können ein paralleles Update eines TKG-Clusters auf Supervisor initiieren, indem Sie die Tanzu Kubernetes-Version-Version, die Klasse der virtuellen Maschine und die Speicherklasse aktualisieren. Einzelheiten finden Sie in einem der folgenden Themen.

Vom System initiierte parallele Updates

In jeder Version von Supervisor können Änderungen an einem oder mehreren der folgenden Objekte vorgenommen werden:
  • kubeadmcontrolplanetemplate/kubeadmcontrolplane
  • kubeadmconfigtemplate/kubeadmconfig
  • vpheremachinetemplate/vspheremachine (für vSphere 8.x)
  • vcpmachinetemplate/wcpmachine (für vSphere 7.x)
Wenn Supervisor aktualisiert wird, lösen die zentralen CAPI-Controller (Cluster API) ein Update-Rollout für TKG-Arbeitslastcluster aus, um den gewünschten Zustand der oben genannten Objekte mit den ausgeführten Arbeitslastclustern abzugleichen.

In vSphere IaaS control plane erzeugt der in Supervisor ausgeführte TKG-Controller diese Objekte und synchronisiert sie fortlaufend mit dem Systemcode. Wenn die Controller folglich auf einen neueren Code aktualisiert werden, führen Änderungen an einem der oben genannten Objekte zu einem parallelen Update der vorhandenen TKG-Cluster. Änderungen am Systemcode, die sich auf Supervisor auswirken, führen folglich zu parallelen Updates von TKG-Clustern.

In der Tabelle werden die Bedingungen beschrieben, unter denen Sie bei einem Upgrade von Supervisor ein automatisiertes paralleles Update von Arbeitslastclustern erwarten können.
Upgrade-Szenario Beschreibung
Upgrade von einer beliebigen vCenter Server 7.x-Version auf eine beliebige vCenter Server-Version

Löst möglicherweise ein paralleles Update aller Tanzu Kubernetes-Cluster aus.

Ein paralleles Update wird durch das erste Upgrade vom Supervisor nach einem Upgrade von vCenter Server ausgelöst. Ein paralleles Update wird in der Regel nicht durch ein Upgrade vom Supervisor auf demselben vCenter Server ausgelöst.

Spezifische Details finden Sie in den Versionshinweisen.

Upgrade von einer beliebigen vCenter Server-Version auf eine beliebige vCenter Server 8.x-Version Löst ein paralleles Update aller TKG-Cluster aus, da die folgenden Codeänderungen weitergegeben werden müssen:
  • Zugrunde liegende CAPI-Anbieter müssen von CAPW zu CAPV verschoben werden
  • Migrieren der Cluster von klassenlosen CAPI-Clustern zu einem CAPI-Cluster mit Klassen
Upgrade von vCenter Server Version 8.0 GA (8.0.0) auf die Versionen vCenter Server 8.0.0b oder 8.0.0c Löst ein paralleles Update der angegebenen TKG-Cluster aus, wenn einer der folgenden Fälle zutrifft:
  • Jeder TKG-Cluster, der Proxy-Einstellungen mit einer nicht leeren noProxy-Liste verwendet hat.
  • Alle TKG-Cluster, wenn der eingebettete Habor-Registrierungsdienst auf dem Supervisor aktiviert war.
Upgrade von vSphere Version 8.0.0b auf vSphere Version 8.0.0c Keine automatischen Rollouts von Arbeitslastclustern
Upgrade von vSphere Version 8.0.0c auf vSphere 8.0 Version Update 1 (8.0.1) Keine automatischen Rollouts von Arbeitslastclustern
Upgrade von einer beliebigen vSphere 8.x-Version auf eine 8.0 U2-Version (8.0.2) Dies führt zu einem parallelen Upgrade für alle TKCs, da die folgenden Änderungen vorgenommen werden müssen:
  • vSphere 8.0 U2 umfasst STIG-Änderungen auf Kubernetes-Ebene für TKG 1.0- und TKG 2.0-TKRs in GCM als Teil der ClusterClass.
  • Da TKCs ab Version 1.23 mit 8.0 U2 kompatibel sind, muss für alle Cluster ein paralleles Upgrade durchgeführt werden.
Upgrade von einer beliebigen vSphere 8.x-Version vor 8.0 U2 (8.0.2) auf Version 8.0 U2c Dies führt zu einem parallelen Upgrade für alle TKCs, da die folgenden Änderungen vorgenommen werden müssen:
  • 8.0U2 umfasst STIG-Änderungen auf der k8s-Ebene für TKG 1.0- und TKG 2.0-TKRs in GCM als Teil der ClusterClass.
  • Da TKCs ab Version 1.23 mit 8.0 P03 kompatibel sind, muss für alle Cluster ein paralleles Upgrade durchgeführt werden.
Darüber hinaus kann das Ändern der Inhaltsbibliothek, in der TKR-Images gehostet werden, parallele Updates von TKG-Clustern auslösen. Das Hinzufügen neuer Images über ein Abonnement oder manuell löst kein paralleles Update von TKG-Clustern aus. Das Ändern der Inhaltsbibliothek und das Hinzufügen von Images mit unterschiedlichen Namen hingegen löst ein paralleles Update aller TKG-Cluster aus.

Betrachten Sie beispielsweise ein Szenario, in dem Sie eine abonnierte Inhaltsbibliothek verwenden, die automatisch die systemdefinierten OVA-Namen verwendet. Wechseln Sie anschließend zu einer lokalen Inhaltsbibliothek und befüllen Sie sie mit denselben OVAs. Verwenden Sie jedoch andere Namen. Auf diese Weise wird ein paralleles Update aller TKG-Cluster ausgelöst, da die Ersatzinhaltsbibliothek dieselben OVAs, aber unterschiedliche benutzerdefinierte Namen aufweist.

Überlegungen zu parallelen Updates für Cluster mit mehreren Knotenpools

Wenn Sie TKG-Cluster mit mehreren Knotenpools verwenden, beachten Sie die folgenden Informationen in Bezug auf parallele Updates.
Worker-Knotenpools

Worker-Knotenpools wurden mit der TKGS-v1alpha2-API eingeführt, die mit vSphere 7 U3 veröffentlicht wurde. Cluster API MachineDeployments ist das zugrunde liegende Kubernetes-Primitiv von Worker-Knotenpools.

ClusterClass wurde mit der vSphere 8-Version von TKGS eingeführt. Sowohl die v1alpha3- als auch die v1beta1-APIs basieren auf ClusterClass. (v1alpha3 ist eine Abstraktionsschicht auf ClusterClass.)

Aktualisieren mehrerer Knotenpools während des parallelen Updates
Wenn Sie einen TKGS-Arbeitslastcluster aktualisieren, der mit mehreren Knotenpools bereitgestellt wird, unterscheidet sich das Modell für parallele Updates je nach verwendeter Version von vSphere.
vSphere TKGS-API Upgrade-Verhalten
vSphere 7 TKGS v1alpha2-API Mehrere Knotenpools innerhalb desselben Clusters werden zur selben Zeit (gleichzeitig) aktualisiert
vSphere 8 TKGS v1alpha3-API und v1beta1-API Mehrere Knotenpools innerhalb desselben Clusters werden nach einer logischen Reihenfolge (sequenziell) aktualisiert.
Best Practice-Überlegungen

Die Bereitstellung eines vSphere 8-TKGS-Clusters mit mehreren identischen Knotenpools ist im Hinblick auf die Dimensionierung irrelevant. Knotenpools sollten für verschiedene Größen, VM-Klassen, TKr-Versionen usw. verwendet werden. Vermeiden Sie es, mehrere identische Knotenpools zu verwenden, um das System herauszufordern und Cluster schneller zu aktualisieren, da dies nicht funktioniert.

Mit Pod Disruption Budgets können Sie sicherstellen, dass Upgrades ausgeführte Anwendungen nicht beeinträchtigen. Dazu empfiehlt es sich, PodDisruptionBudgets für die Arbeitslasten festzulegen (siehe https://kubernetes.io/docs/tasks/run-application/configure-pdb/). Die Cluster-API berücksichtigt diese und beendet eine Maschine nicht, wenn die Schwellenwerte überschritten würden.

Details zu parallelen Updates für vSphere 8 TKGS-Cluster
Während einer Aktualisierung der TKGS-Clusterversion auf vSphere 8:
  • Die Knoten der Steuerungsebene werden zuerst aktualisiert. Anschließend werden Worker-Knoten beginnend mit dem Knotenpool „Zone-A“ nacheinander bereitgestellt. Wenn zwei Knotenpools verwendet werden, wird jeweils nur ein Worker bereitgestellt.
Bei Aktualisierungen der Clusterkonfigurationsvariablen:
  • Die Knoten der Steuerungsebene werden zuerst aktualisiert, dann wird ein Worker-Knoten pro Knotenpool bereitgestellt. Wenn beispielsweise zwei Knotenpools verwendet werden, werden 2 Worker gleichzeitig bereitgestellt.