Upgrade der Knotenpools durchführen

Wenn Sie die Steuerungsebene und die Worker-Knotenpools in einem Google Distributed Cloud-Software-only-for-VMware-Nutzercluster separat aktualisieren, können Sie die Kompatibilität von Arbeitslasten in einzelnen Knotenpools prüfen und Upgrades auf kürzere Wartungsfenster verteilen.

Dieses Dokument 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-Nutzerrollen und -Aufgaben. Bevor Sie beginnen, sollten Sie sich mit der Upgrade-Übersicht, den Regeln für Upgrade-Versionen, den Best Practices für Upgrades und dem Upgrade eines Clusters vertraut machen.

Beschränkungen

Das separat von der Steuerungsebene erfolgende Upgrade von Knotenpools unterliegt den folgenden Einschränkungen:

  • Diese Funktion wird für Ubuntu- und Container-Optimized OS-Knotenpools unterstützt, aber nicht für Windows-Knotenpools.

  • Diese Funktion ist nicht verfügbar, wenn Sie nicht erweiterte Cluster auf erweiterte Cluster aktualisieren. Nicht erweiterte Cluster werden in Version 1.33 automatisch auf erweiterte Cluster aktualisiert.

  • Version 1.31: Diese Funktion ist für erweiterte Cluster nicht verfügbar.

  • Version 1.32 und höher: Diese Funktion ist für erweiterte Cluster verfügbar.

  • Die Version des Load-Balancer-Knotenpools muss mit der Clusterversion übereinstimmen. Das separate Upgrade eines Load-Balancer-Knotenpools (ein Knotenpool mit enableLoadBalancer: true) von der Steuerungsebene oder eine Versionsabweichung wird nicht unterstützt.

Warum sollten die Steuerungsebene und die Knotenpools separat aktualisiert werden?

In bestimmten Situationen möchten Sie möglicherweise einige, aber nicht alle Worker-Knotenpools in einem Nutzercluster aktualisieren:

  • 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 Clusterupgrade zu verwenden, können Sie das Clusterupgrade über mehrere Wartungsfenster hinweg durchführen. Informationen zum Schätzen der Zeit für ein Wartungsfenster finden Sie unter Zeitaufwand schätzen und ein Wartungsfenster planen.

  • Sie können beim Upgrade von Knotenpools eine Nebenversion überspringen, um die Anzahl der Upgrades zu reduzieren, die erforderlich sind, um eine unterstützte Version beizubehalten. Das spart Zeit und reduziert Unterbrechungen der Arbeitslast. Weitere Informationen finden Sie unter Version beim Upgrade von Knotenpools überspringen.

Hinweis

  1. In Version 1.29 und später sind serverseitige Preflight-Prüfungen standardmäßig aktiviert. Prüfen Sie Ihre Firewallregeln, um die erforderlichen Änderungen vorzunehmen.

  2. Wenn Sie ein Upgrade auf Version 1.28 oder höher ausführen möchten, müssen Sie kubernetesmetadata.googleapis.com aktivieren und dem Logging-Monitoring-Dienstkonto die IAM-Rolle kubernetesmetadata.publisher zuweisen. Weitere Informationen finden Sie unter Anforderungen an die Google API und Identity and Access Management (IAM).

  3. Achten Sie darauf, dass die aktuelle Version des Clusters 1.14 oder höher ist.

Upgrade der Steuerungsebene und ausgewählter Knotenpools durchführen

Das Upgrade der Steuerungsebene eines Nutzerclusters separat von Worker-Knotenpools 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

  1. Definieren Sie die Quellversion und die 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 Ziel-Nebenversion aus.
  2. Führen Sie ein Upgrade Ihrer Administrator-Workstation auf die Zielversion durch. Warten Sie, bis eine Meldung angezeigt wird, dass das Upgrade erfolgreich war.

  3. 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 der kubeconfig-Datei des Administratorclusters.

  4. Nehmen Sie die folgenden Änderungen an der Konfigurationsdatei des Nutzerclusters vor:

    • Setzen Sie das Feld gkeOnPremVersion auf die Zielversion TARGET_VERSION.

    • Legen Sie für jeden Knotenpool, den Sie aktualisieren möchten, das Feld nodePools[i].gkeOnPremVersion auf den leeren String fest.

      • Ab Version 1.28 können Sie das Knotenpool-Upgrade beschleunigen, indem Sie das Feld nodePools[i].updateStrategy.rollingUpdate.maxSurge auf einen ganzzahligen Wert größer als 1 festlegen. Wenn Sie Knoten mit maxSurge aktualisieren, werden mehrere Knoten in derselben Zeit aktualisiert, die für die Aktualisierung eines einzelnen Knotens erforderlich ist.
    • Legen Sie für jeden Knotenpool, den Sie nicht aktualisieren möchten, nodePools[i].gkeOnPremVersion auf die Quellversion SOURCE_VERSION fest. Beachten Sie, dass Sie Load-Balancer-Knotenpools (Knotenpools mit enableLoadBalancer: true) nicht zurückhalten können. Ihre Version muss mit der Clusterversion übereinstimmen.

    Das folgende Beispiel zeigt einen Teil der Konfigurationsdatei für einen Nutzercluster. Sie gibt an, dass die Steuerungsebene und pool-1 auf TARGET_VERSION aktualisiert werden, pool-2 jedoch auf SOURCE_VERSION bleibt.

    gkeOnPremVersion: TARGET_VERSION
    ...
    nodePools:
    - name: pool-1
      gkeOnPremVersion: ""
      ...
    - name: pool-2
      gkeOnPremVersion: SOURCE_VERSION
      ...
    
  5. 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 Ihrer Konfigurationsdatei für den Nutzercluster.

Upgrade für zusätzliche Knotenpools durchführen

Angenommen, im vorherigen Beispiel funktioniert alles gut mit pool-1 und Sie möchten jetzt ein Upgrade für pool-2 durchführen.

  1. Legen Sie in der Konfigurationsdatei des Nutzerclusters unter pool-2 den Wert gkeOnPremVersion auf den leeren String fest:

    gkeOnPremVersion: TARGET_VERSION
    ...
    nodePools:
    - name: pool-1
      gkeOnPremVersion: ""
      ...
    - name: pool-2
      gkeOnPremVersion: ""
      ...
    
  2. 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 das Upgrade eines Nutzerclusters sind einige Änderungen am Administratorcluster erforderlich. Der Befehl gcloud container vmware clusters upgrade führt automatisch Folgendes aus:

  • 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 entspricht der Version, 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 ein Upgrade der Steuerungsebene des Nutzerclusters durchzuführen.

  1. Aktualisieren Sie die gcloud CLI-Komponenten:

    gcloud components update
    
  2. Ä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 mit gkectl erstellt haben, ist dies die Projekt-ID im Feld gkeConnect.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 mit gkectl erstellt haben, ist dies die Region, die Sie bei der Registrierung des Clusters in der GKE On-Prem API angegeben haben.

  3. 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 ein Upgrade ausführen möchten. Wählen Sie den empfohlenen Patch aus der Ziel-Nebenversion 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 den folgenden Befehl in einem anderen Terminalfenster 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:

  1. Rufen Sie eine Liste der Knotenpools im Nutzercluster ab:

    gcloud container vmware node-pools list
      --cluster=USER_CLUSTER_NAME  \
      --project=PROJECT_ID \
      --location=REGION
    
  2. 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

  1. Aktualisieren Sie die gcloud CLI-Komponenten:

    gcloud components update
    
  2. 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.

  3. Laden Sie die neue Version der Komponenten herunter und stellen Sie sie im Administratorcluster bereit:

    gcloud container vmware admin-clusters update ADMIN_CLUSTER_NAME \
      --project=PROJECT_ID \
      --location=REGION \
      --required-platform-version=TARGET_VERSION
    

    Ersetzen Sie Folgendes:

    • ADMIN_CLUSTER_NAME: Der Name des Administratorclusters.

    • 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 mit gkectl erstellt haben, ist dies die Projekt-ID im Feld gkeConnect.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 mit gkectl erstellt haben, ist dies die Region, die Sie bei der Registrierung des Clusters in der GKE On-Prem API angegeben haben.

    • TARGET_VERSION: Die Version, auf die ein Upgrade ausgeführt 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.

  4. Ändern Sie in der main.tf-Datei, mit der Sie den Nutzercluster erstellt haben, on_prem_version in der Clusterressource auf die neue Version.

  5. Fügen Sie der Clusterressource Folgendes hinzu, damit nur die Steuerungsebene aktualisiert wird:

    upgrade_policy {
      control_plane_only = true
    }
    
  6. Initialisieren und erstellen Sie den Terraform-Plan:

    terraform init
    

    Terraform installiert alle erforderlichen Bibliotheken, z. B. den Google Cloud-Anbieter.

  7. Überprüfen Sie die Konfiguration und nehmen Sie bei Bedarf Änderungen vor:

    terraform plan
    
  8. Wenden Sie den Terraform-Plan an, um ein Upgrade der Steuerungsebene des Nutzerclusters durchzuführen:

    terraform apply
    

Upgrade der Knotenpools durchführen

Führen Sie die folgenden Schritte aus, um ein Upgrade der Knotenpools durchzuführen, nachdem die Steuerungsebene des Nutzerclusters aktualisiert wurde:

  1. Fügen Sie in 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 = false
    }
    on_prem_version = "1.16.0-gke.0"
    }
    
  2. Initialisieren und erstellen Sie den Terraform-Plan:

    terraform init
    
  3. Überprüfen Sie die Konfiguration und nehmen Sie bei Bedarf Änderungen vor:

    terraform plan
    
  4. Wenden Sie den Terraform-Plan an, um ein Upgrade der Knotenpools durchzuführen:

    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 einem Upgrade durchführen.