Auf dieser Seite erfahren Sie, wie Sie die Steuerungsebene und die Knotenpools in einem Nutzercluster, der mit Google Distributed Cloud (nur Software) auf VMware erstellt wurde, separat aktualisieren. Diese Seite richtet sich an IT-Administratoren und ‑Betreiber, die den Lebenszyklus der zugrunde liegenden technischen Infrastruktur verwalten. Weitere Informationen zu gängigen Rollen und Beispielaufgaben, auf die wir in Google Cloud -Inhalten verweisen, finden Sie unter Häufig verwendete GKE Enterprise-Nutzerrollen und -Aufgaben. Bevor Sie dieses Dokument lesen, sollten Sie mit der Planung und Ausführung von Google Distributed Cloud-Upgrades vertraut sein. Weitere Informationen finden Sie unter den folgenden Links:
Das separat von der Steuerungsebene erfolgende Upgrade von Knotenpools wird für Ubuntu- und COS-Knotenpools unterstützt, aber nicht für Windows-Knotenpools. Außerdem ist diese Funktion für erweiterte Cluster nicht verfügbar.
Warum sollten Sie die Steuerungsebene und die Knotenpools separat aktualisieren?
Wenn Ihre Cluster Version 1.16 oder höher haben, können Sie beim Upgraden von Knotenpools eine Nebenversion überspringen. Wenn Sie ein Upgrade der Version überspringen, halbiert sich die Zeit, die für ein sequenzielles Upgrade der Knotenpools um zwei Versionen erforderlich wäre. Außerdem können Sie mit Upgrades, bei denen Versionen übersprungen werden, den Zeitraum zwischen den Upgrades verlängern, die erforderlich sind, um eine unterstützte Version zu verwenden. Wenn Sie die Anzahl der Upgrades reduzieren, werden Unterbrechungen der Arbeitslast und die Überprüfungszeit verringert. Weitere Informationen finden Sie unter Eine Version beim Upgraden von Knotenpools überspringen.
In bestimmten Situationen möchten Sie möglicherweise einige, aber nicht alle Knotenpools in einem Nutzercluster aktualisieren, z. B. in folgenden Fällen:
Sie können zuerst die Steuerungsebene und einen Knotenpool aktualisieren, der nur wenig Traffic hat oder auf dem Ihre am wenigsten kritischen Arbeitslasten ausgeführt werden. Wenn Sie sicher sind, dass Ihre Arbeitslasten in der neuen Version ordnungsgemäß ausgeführt werden, können Sie weitere Knotenpools aktualisieren, bis alle Knotenpools aktualisiert sind.
Anstatt ein großes Wartungsfenster für das Cluster-Upgrade zu verwenden, können Sie das Cluster in mehreren Wartungsfenstern aktualisieren. Informationen zum Schätzen des Zeitaufwands für ein Wartungsfenster finden Sie unter Zeitaufwand schätzen und Wartungsfenster planen.
Hinweis
In Version 1.29 und später sind serverseitige Preflight-Prüfungen standardmäßig aktiviert. Prüfen Sie Ihre Firewallregeln und nehmen Sie gegebenenfalls Änderungen vor.
Wenn Sie auf Version 1.28 oder höher umstellen möchten, müssen Sie
kubernetesmetadata.googleapis.com
aktivieren und dem Logging-Monitoring-Dienstkonto die IAM-Rollekubernetesmetadata.publisher
zuweisen. Weitere Informationen finden Sie unter Anforderungen an Google APIs und IAM.Die aktuelle Version des Clusters muss mindestens 1.14 sein.
Steuerungsebene und ausgewählte Knotenpools aktualisieren
Das separat von den Worker-Knotenpools erfolgende Upgrade der Steuerungsebene eines Nutzerclusters wird mit gkectl
, der Google Cloud CLI und Terraform unterstützt.
Sie können das Upgrade nur mit Terraform ausführen, wenn Sie den Nutzercluster mit Terraform erstellt haben.
gkectl
Definieren Sie die Quell- und Zielversion in den folgenden Platzhaltervariablen. Alle Versionen müssen die vollständige Versionsnummer im Format
x.y.z-gke.N
haben, z. B.1.16.11-gke.25
.Version Beschreibung SOURCE_VERSION
Die aktuelle Clusterversion. TARGET_VERSION
Wählen Sie die Zielversion aus. Wählen Sie den empfohlenen Patch aus der Zielnebenversion aus. Führen Sie ein Upgrade Ihrer Administrator-Workstation auf die Zielversion aus. Warten Sie auf eine Meldung, dass das Upgrade erfolgreich war.
Importieren Sie die entsprechenden Betriebssystem-Images in vSphere:
gkectl prepare \ --bundle-path /var/lib/gke/bundles/gke-onprem-vsphere-TARGET_VERSION.tgz \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG
Ersetzen Sie
ADMIN_CLUSTER_KUBECONFIG
durch den Pfad derkubeconfig
-Datei Ihres Administratorclusters.Nehmen Sie die folgenden Änderungen an der Konfigurationsdatei des Nutzerclusters vor:
Legen Sie im Feld
gkeOnPremVersion
die Zielversion fest, alsoTARGET_VERSION
.Legen Sie für jeden Knotenpool, den Sie aktualisieren möchten, das Feld
nodePools.nodePool[i].gkeOnPremVersion
auf den leeren String fest.- Ab Version 1.28 können Sie das Upgrade des Knotenpools beschleunigen, indem Sie das
nodePools.nodePool[i].updateStrategy.rollingUpdate.maxSurge
-Feld auf einen Ganzzahlwert festlegen, der größer als 1 ist. Wenn Sie Knoten mitmaxSurge
aktualisieren, werden mehrere Knoten in der Zeit aktualisiert, die für das Upgrade eines einzelnen Knotens erforderlich ist.
- Ab Version 1.28 können Sie das Upgrade des Knotenpools beschleunigen, indem Sie das
Legen Sie für jeden Knotenpool, den Sie nicht aktualisieren möchten,
nodePools.nodePool[i].gkeOnPremVersion
auf die QuellversionSOURCE_VERSION
fest.
Das folgende Beispiel zeigt einen Teil der Konfigurationsdatei für den Nutzercluster. Hier wird angegeben, dass die Steuerungsebene und
pool-1
aufTARGET_VERSION
aktualisiert werden,pool-2
jedoch beiSOURCE_VERSION
bleibt.gkeOnPremVersion: TARGET_VERSION ... nodePools: - name: pool-1 gkeOnPremVersion: "" ... - name: pool-2 gkeOnPremVersion: SOURCE_VERSION ...
Führen Sie ein Upgrade der Steuerungsebene und der ausgewählten Knotenpools durch:
gkectl upgrade cluster \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ --config USER_CLUSTER_CONFIG_FILE
Ersetzen Sie
USER_CLUSTER_CONFIG
durch den Pfad der Konfigurationsdatei Ihres Nutzerclusters.
Zusätzliche Knotenpools aktualisieren
Angenommen, im vorherigen Beispiel funktioniert alles gut mit pool-1
und Sie möchten jetzt pool-2
aktualisieren.
Legen Sie in der Konfigurationsdatei des Nutzerclusters unter
pool-2
den leeren String fürgkeOnPremVersion
fest:gkeOnPremVersion: TARGET_VERSION ... nodePools: - name: pool-1 gkeOnPremVersion: "" ... - name: pool-2 gkeOnPremVersion: "" ...
Führen Sie
gkectl update cluster
aus, um die Änderung anzuwenden:gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ --config USER_CLUSTER_CONFIG
gcloud-CLI
Für ein Upgrade eines Nutzerclusters sind einige Änderungen am Administratorcluster erforderlich. Mit dem Befehl gcloud container vmware clusters upgrade
wird Folgendes automatisch ausgeführt:
Registriert den Administratorcluster in der GKE On-Prem API, falls er noch nicht registriert ist.
Lädt ein Komponentenpaket auf den Administratorcluster herunter und stellt es dort bereit. Die Version der Komponenten stimmt mit der Version überein, die Sie für das Upgrade angeben. Mit diesen Komponenten kann der Administratorcluster Nutzercluster dieser Version verwalten.
Upgrade der Steuerungsebene durchführen
Führen Sie den folgenden Schritt aus, um die Steuerungsebene des Nutzerclusters zu aktualisieren.
Aktualisieren Sie die Google Cloud CLI-Komponenten:
gcloud components update
Ändern Sie die Upgrade-Richtlinie für den Cluster:
gcloud container vmware clusters update USER_CLUSTER_NAME \ --project=PROJECT_ID \ --location=REGION \ --upgrade-policy control-plane-only=True
Ersetzen Sie Folgendes:
USER_CLUSTER_NAME
: Name des Nutzerclusters, der gelöscht werden soll.PROJECT_ID
: Die ID des Flotten-Hostprojekts, zu dem der Nutzercluster gehört. Dies ist das Projekt, das Sie beim Erstellen des Clusters angegeben haben. Wenn Sie den Cluster mitgkectl
erstellt haben, ist dies die Projekt-ID im FeldgkeConnect.projectID
in der Cluster-Konfigurationsdatei.REGION
: Die Google Cloud Region, in der die GKE On-Prem API ausgeführt wird und Metadaten speichert. Wenn Sie den Cluster mit einem GKE On-Prem API-Client erstellt haben, ist dies die Region, die Sie beim Erstellen des Clusters ausgewählt haben. Wenn Sie den Cluster mitgkectl
erstellt haben, ist dies die Region, die Sie beim Registrieren des Clusters in der GKE On-Prem API angegeben haben.
Führen Sie ein Upgrade der Steuerungsebene des Clusters durch:
gcloud container vmware clusters upgrade USER_CLUSTER_NAME \ --project=PROJECT_ID \ --location=REGION \ --version=TARGET_VERSION
Ersetzen Sie
TARGET_VERSION
durch die Version, auf die Sie das Upgrade ausführen möchten. Wählen Sie den empfohlenen Patch aus der Zielnebenversion aus.Die Ausgabe des Befehls sieht in etwa so aus:
Waiting for operation [projects/example-project-12345/locations/us-west1/operations/operation-1679543737105-5f7893fd5bae9-942b3f97-75e59179] to complete.
In der Beispielausgabe ist der String
operation-1679543737105-5f7893fd5bae9-942b3f97-75e59179
der OPERATION_ID des Vorgangs mit langer Ausführungszeit. Sie können den Status des Vorgangs ermitteln, indem Sie in einem anderen Terminalfenster den folgenden Befehl ausführen:gcloud container vmware operations describe OPERATION_ID \ --project=PROJECT_ID \ --location=REGION
Upgrade der Knotenpools durchführen
Führen Sie die folgenden Schritte aus, um die Knotenpools zu aktualisieren, nachdem die Steuerungsebene des Nutzerclusters aktualisiert wurde:
Liste der Knotenpools im Nutzercluster abrufen:
gcloud container vmware node-pools list --cluster=USER_CLUSTER_NAME \ --project=PROJECT_ID \ --location=REGION
Führen Sie für jeden Knotenpool, den Sie aktualisieren möchten, den folgenden Befehl aus:
gcloud container vmware node-pools update NODE_POOL_NAME \ --cluster=USER_CLUSTER_NAME \ --project=PROJECT_ID \ --location=REGION \ --version=TARGET_VERSION
Terraform
Aktualisieren Sie die Google Cloud CLI-Komponenten:
gcloud components update
Falls noch nicht geschehen, registrieren Sie den Administratorcluster in der GKE On-Prem API. Nachdem der Cluster in der GKE On-Prem API registriert wurde, müssen Sie diesen Schritt nicht noch einmal ausführen.
Laden Sie die neue Version der Komponenten herunter und stellen Sie sie im Administratorcluster bereit:
gcloud vmware admin-clusters update ADMIN_CLUSTER_NAME \ --project=PROJECT_ID \ --location=REGION \ --required-platform-version=TARGET_VERSION
Ersetzen Sie Folgendes:
USER_CLUSTER_NAME
: Name des Nutzerclusters, der gelöscht werden soll.PROJECT_ID
: Die ID des Flotten-Hostprojekts, zu dem der Nutzercluster gehört. Dies ist das Projekt, das Sie beim Erstellen des Clusters angegeben haben. Wenn Sie den Cluster mitgkectl
erstellt haben, ist dies die Projekt-ID im FeldgkeConnect.projectID
in der Cluster-Konfigurationsdatei.REGION
: Die Google Cloud Region, in der die GKE On-Prem API ausgeführt wird und Metadaten speichert. Wenn Sie den Cluster mit einem GKE On-Prem API-Client erstellt haben, ist dies die Region, die Sie beim Erstellen des Clusters ausgewählt haben. Wenn Sie den Cluster mitgkectl
erstellt haben, ist dies die Region, die Sie beim Registrieren des Clusters in der GKE On-Prem API angegeben haben.TARGET_VERSION
: Die Version, auf die aktualisiert werden soll. Wählen Sie den empfohlenen Patch aus der Ziel-Nebenversion aus.
Mit diesem Befehl wird die Version der Komponenten, die Sie in
--required-platform-version
angeben, auf den Administratorcluster heruntergeladen und anschließend bereitgestellt. Mit diesen Komponenten kann der Administratorcluster Nutzercluster dieser Version verwalten.Ändern Sie in der
main.tf
-Datei, mit der Sie den Nutzercluster erstellt haben,on_prem_version
in der Clusterressource auf die neue Version.Fügen Sie der Clusterressource Folgendes hinzu, damit nur die Steuerungsebene aktualisiert wird:
upgrade_policy { control_plane_only = true }
Initialisieren und erstellen Sie den Terraform-Plan:
terraform init
Terraform installiert alle erforderlichen Bibliotheken, z. B. den Google Cloud-Anbieter.
Prüfen Sie die Konfiguration und nehmen Sie bei Bedarf Änderungen vor:
terraform plan
Wenden Sie den Terraform-Plan an, um den Nutzercluster zu erstellen:
terraform apply
Upgrade der Knotenpools durchführen
Führen Sie die folgenden Schritte aus, um Knotenpools zu aktualisieren, nachdem die Steuerungsebene des Nutzerclusters aktualisiert wurde:
Fügen Sie unter
main.tf
in der Ressource für jeden Knotenpool, den Sie aktualisieren möchten, Folgendes hinzu:on_prem_version = "TARGET_VERSION"
Beispiel:
resource "google_gkeonprem_vmware_node_pool" "nodepool-basic" { name = "my-nodepool" location = "us-west1" vmware_cluster = google_gkeonprem_vmware_cluster.default-basic.name config { replicas = 3 image_type = "ubuntu_containerd" enable_load_balancer = true } on_prem_version = "1.16.0-gke.0" }
Initialisieren und erstellen Sie den Terraform-Plan:
terraform init
Prüfen Sie die Konfiguration und nehmen Sie bei Bedarf Änderungen vor:
terraform plan
Wenden Sie den Terraform-Plan an, um den Nutzercluster zu erstellen:
terraform apply
Fehlerbehebung
Wenn nach dem Upgrade eines Knotenpools ein Problem auftritt, können Sie ein Rollback auf die vorherige Version durchführen. Weitere Informationen finden Sie unter Rollback für Knotenpool nach Upgrade durchführen.