Standardmäßig werden Cluster und Knotenpools von Google Kubernetes Engine automatisch von Google aktualisiert. Auf dieser Seite wird gezeigt, wie Sie manuell ein Upgrade oder Downgrade für einen GKE-Cluster oder dessen Knoten anfordern. Weitere Informationen zur Funktionsweise automatischer und manueller Clusterupgrades erhalten Sie unter Clusterupgrades. Sie können auch festlegen, wann automatische Upgrades ausgeführt werden sollen. Dazu müssen Sie entsprechende Wartungsfenster und -ausschlüsse konfigurieren.
Neue GKE-Versionen werden regelmäßig angekündigt. Informationen zu den verfügbaren Versionen erhalten Sie unter Versionsverwaltung und Upgrades. Weitere Informationen zu Clustern finden Sie unter Clusterarchitektur. Weitere Informationen zum Upgrade von Clustern finden Sie unter Best Practices für das Upgrade von Clustern.
Hinweis
Führen Sie die folgenden Aufgaben aus, bevor Sie beginnen:
- Achten Sie darauf, dass die Google Kubernetes Engine API aktiviert ist. Aktivieren Sie Google Kubernetes Engine API
- Prüfen Sie, ob das Cloud SDK installiert ist.
Mit den folgenden Methoden können Sie die gcloud
-Einstellungen festlegen:
- Verwenden Sie
gcloud init
, wenn Sie die Standardeinstellungen ansehen möchten. - Verwenden Sie
gcloud config
, um Ihre Projekt-ID, Zone und Region individuell festzulegen.
gcloud init verwenden
Wenn Sie die Fehlermeldung One of [--zone, --region] must be supplied: Please specify
location
erhalten, führen Sie diesen Abschnitt aus.
-
Führen Sie
gcloud init
aus und folgen Sie der Anleitung:gcloud init
Wenn Sie SSH auf einem Remote-Server verwenden, können Sie mit dem Flag
--console-only
verhindern, dass mit dem Befehl ein Browserfenster geöffnet wird:gcloud init --console-only
- Folgen Sie der Anleitung, um
gcloud
zur Verwendung Ihres Google Cloud-Kontos zu autorisieren. - Erstellen Sie eine neue Konfiguration oder wählen Sie eine vorhandene aus.
- Wählen Sie ein Google Cloud-Projekt aus.
- Wählen Sie eine Compute Engine-Standardzone aus.
gcloud config verwenden
- Legen Sie Ihre standardmäßige Projekt-ID fest:
gcloud config set project project-id
- Wenn Sie mit zonalen Clustern arbeiten, legen Sie die Compute-Standardzone fest:
gcloud config set compute/zone compute-zone
- Wenn Sie mit regionalen Clustern arbeiten, legen Sie die Standardregion für Compute Engine fest:
gcloud config set compute/region compute-region
- Aktualisieren Sie
gcloud
auf die neueste Version:gcloud components update
Daten auf nichtflüchtigen Speichern speichern
Prüfen Sie vor dem Upgrade eines Knotenpools, ob alle Daten, die Sie beibehalten möchten, in einem Pod mit nichtflüchtigen Volumes gespeichert sind, die nichtflüchtigen Speicher verwenden. Nichtflüchtige Speicher werden während der Upgrades getrennt, aber nicht gelöscht. Die darin enthaltenen Daten werden zwischen den Pods "übergeben".
Die folgenden Einschränkungen gelten für nichtflüchtige Speicher:
- Die Knoten, auf denen Pods ausgeführt werden, müssen Compute Engine-VMs sein.
- Diese VMs müssen sich im selben Compute Engine-Projekt und in derselben Zone wie der nichtflüchtige Speicher befinden.
Informationen zum Hinzufügen eines nichtflüchtigen Speichers zu einer vorhandenen Knoteninstanz finden Sie in der Compute Engine-Dokumentation unter Zonale nichtflüchtige Speicher hinzufügen oder ihre Größe anpassen.
Clusterupgrade
Die Steuerungsebene und Knoten eines Clusters werden separat aktualisiert.
Beschränkungen
Für Alphacluster kann kein Upgrade durchgeführt werden.
Unterstützte Versionen
Die Versionshinweise informieren darüber, wann neue Versionen verfügbar sind und wann ältere Versionen nicht mehr erworben werden können. Mit dem folgenden Befehl können Sie jederzeit alle unterstützten Cluster- und Knotenversionen auflisten:
gcloud container get-server-config
Bekannte Probleme
Wenn Anthos Service Mesh oder OSS Istio in Ihrem Cluster installiert ist, werden die Nutzerknoten je nach PodDisruptionBudget-Einstellungen für die Istio-Komponenten möglicherweise nach wiederholten Versuchen nicht auf die Version der Steuerungsebene aktualisiert. Zur Vermeidung diese Problems empfehlen wir, die minReplicas
-Einstellung für das horizontale Pod-Autoscaling vor dem Upgrade von 1 auf 2 für die Komponenten im Namespace istio-system
zu erhöhen. Dadurch wird immer eine Instanz der ASM-Steuerungsebene ausgeführt.
Wenn Sie Anthos Service Mesh 1.5 (oder höher) oder OSS Istio 1.5 (oder höher) verwenden:
kubectl patch hpa -n istio-system istio-ingressgateway -p '{"spec":{"minReplicas": 2}}' --type=merge
kubectl patch hpa -n istio-system istiod -p '{"spec":{"minReplicas": 2}}' --type=merge
Wenn Sie Anthos Service Mesh 1.4.x oder OSS Istio 1.4.x verwenden:
kubectl patch hpa -n istio-system istio-galley -p '{"spec":{"minReplicas": 2}}' --type=merge
kubectl patch hpa -n istio-system istio-ingressgateway -p '{"spec":{"minReplicas": 2}}' --type=merge
kubectl patch hpa -n istio-system istio-nodeagent -p '{"spec":{"minReplicas": 2}}' --type=merge
kubectl patch hpa -n istio-system istio-pilot -p '{"spec":{"minReplicas": 2}}' --type=merge
kubectl patch hpa -n istio-system istio-sidecar-injector -p '{"spec":{"minReplicas": 2}}' --type=merge
Obwohl das Problem bei automatischen Upgrades auftreten kann, erzwingt der automatische Upgrade-Prozess ein Upgrade der Knoten. Das Upgrade dauert jedoch für jeden Knoten im Namespace istio-system
, der gegen das PodDisruptionBudget verstößt, eine zusätzliche Stunde.
Downgrade-Einschränkungen
Vom Downgrade eines Clusters wird abgeraten. Knoten können auf eine Patch-Version herabgestuft werden, die älter als die Clusterversion ist. Das Downgrade eines Clusters von einer Nebenversion auf eine andere Nebenversion ist nicht möglich. Wenn in einem Cluster beispielsweise GKE 1.11.5 ausgeführt wird, können Sie ein Downgrade auf 1.11.4 durchführen, sofern die Version noch verfügbar ist. Ein Downgrade auf 1.10.9 ist jedoch nicht möglich. Sie erhalten in diesem Fall in etwa folgende Fehlermeldung:
ERROR: (gcloud.container.clusters.upgrade) ResponseError: code=400,
message=Master cannot be upgraded to "1.10.9-gke.9": specified version is not
newer than the current version.
Upgrade des Clusters ausführen
Google führt automatisch Upgrades für Cluster und Knoten aus. Für eine bessere Kontrolle automatischer Upgrades für Ihren Cluster und seine Knoten können Sie ihn für einen Releasekanal registrieren.
Weitere Informationen zur Verwaltung der GKE-Version des Clusters finden Sie unter Versionsverwaltung und Upgrades.
Sie können jederzeit ein manuelles Upgrade ausführen, wenn eine neue Version zur Verfügung steht.
Manuelles Upgrade der Steuerungsebene
Wenn Sie ein Clusterupgrade ausführen, können Sie die Konfiguration des Clusters erst dann ändern, wenn die Steuerungsebene wieder zugänglich ist. Dies kann mehrere Minuten dauern. Durch das Verwenden eines regionalen Clusters können Sie Ausfallzeiten bei Steuerungsebeneupgrades vermeiden.
Sie haben die Möglichkeit, Ihren Cluster manuell mit der Cloud Console oder mit dem gcloud
-Befehlszeilentool zu aktualisieren. Nach dem Upgrade Ihres Clusters können Sie dessen Knoten aktualisieren. Bei Knoten, die mit der Google Cloud Console erstellt wurden, ist das automatische Upgrade standardmäßig aktiviert.
gcloud
Lassen Sie zuerst die verfügbaren Versionen mit dem folgenden Befehl anzeigen, um die Version der Cluster-Steuerungsebene zu aktualisieren:
gcloud container get-server-config
Führen Sie den folgenden Befehl aus, um ein Upgrade auf die Standard-Clusterversion durchzuführen:
gcloud container clusters upgrade cluster-name --master
Wenn Sie ein Upgrade auf eine bestimmte Version durchführen möchten, die nicht die Standardversion ist, führen Sie den folgenden Befehl aus:
gcloud container clusters upgrade cluster-name \
--master --cluster-version cluster-version
Weitere Informationen finden Sie in der Dokumentation zu gcloud container clusters upgrade
.
Console
Führen Sie die folgenden Schritte aus, um die Steuerungsebene des Clusters manuell zu aktualisieren:
Rufen Sie in der Google Cloud Console das Menü von Google Kubernetes Engine auf.
Wählen Sie den gewünschten Cluster aus.
Klicken Sie neben Masterversion auf den Link Upgrade verfügbar.
Wählen Sie die gewünschte Version aus und klicken Sie dann auf Ändern.
Klicken Sie oben auf dem Bildschirm auf den Pfeil, um zur Seite "Clusterübersicht" zurückzukehren.
Cluster-Downgrades
Ändern Sie die Version der Cluster-Steuerungsebene mit dem folgenden Befehl, um ein Downgrade des Clusters auf eine vorherige Patchversion durchzuführen:
gcloud container clusters upgrade cluster-name \
--master --cluster-version downgrade-version
Automatische Upgrades von Clustern deaktivieren
Automatische Upgrades von Clustern können nicht deaktiviert werden. Obwohl es nicht empfohlen wird, können Sie aber das automatische Upgrade von Knoten deaktivieren.
Upgrade für Knoten ausführen
Für die Knoten eines Clusters ist standardmäßig das automatische Upgrade aktiviert. Wir empfehlen, dies nicht zu deaktivieren.
Wenn ein Knotenpool aktualisiert wird, führt GKE das Upgrade für jeden Knoten nacheinander aus.
Beim Upgrade von Knoten wird die Planung neuer Pods für diese Knoten in GKE beendet. In diesem Fall werden die neu geplanten Pods nach Möglichkeit auf anderen Knoten geplant. Der Knoten wird dann in der neuen Version, aber mit dem gleichen Namen wie zuvor neu erstellt. Dies ist mit anderen Ereignissen vergleichbar, bei denen der Knoten neu erstellt wird, z. B. beim Aktivieren oder Deaktivieren eines Features im Knotenpool.
Das Upgrade ist erst abgeschlossen, wenn alle Knoten neu erstellt worden sind und der Cluster den gewünschten Status hat. Die aktualisierten Knoten werden bei der Registrierung auf der Steuerungsebene in GKE als planbar gekennzeichnet.
Neue Knoteninstanzen führen die gewünschte Kubernetes-Version aus sowie:
- Knoten-Image
- Docker-Daemon, falls zutreffend
kubelet
kube-proxy
Manuelles Upgrade eines Knotens ausführen
Sie können die Version eines Knotenpools manuell auf die Version der Steuerungsebene oder auf eine frühere Version aktualisieren, die noch verfügbar und mit der Steuerungsebene kompatibel ist. Die Supportrichtlinie für Kubernetes-Versionen und Versionsinkompatibilität sorgt dafür, dass Steuerungsebenen mit Knoten kompatibel sind, die bis zu zwei Nebenversionen älter sind als die Steuerungsebene. Die Kubernetes-Steuerungsebenen 1.13 sind beispielsweise mit den Kubernetes-Knoten 1.11 kompatibel.
Sie können Ihre Knoten mithilfe der Google Cloud Console oder des gcloud
-Befehlszeilentools manuell auf eine Version aktualisieren, die mit der Steuerungsebene kompatibel ist.
gcloud
Mit dem folgenden Befehl wird ein Upgrade Ihrer Knoten auf die Version durchgeführt, die auf Ihrer Steuerungsebene ausgeführt wird:
gcloud container clusters upgrade cluster-name \
--node-pool=node-pool-name
wobei cluster-name der Name des Clusters ist, der aktualisiert werden soll.
Wenn Sie für Knoten eine andere Version von GKE angeben möchten, verwenden Sie das optionale Flag --cluster-version
:
gcloud container clusters upgrade cluster-name \
--node-pool=node-pool-name \
--cluster-version cluster-version
Dabei ist cluster-version die Kubernetes-Version, auf die ein Upgrade der Knoten vorgenommen werden soll. Beispiel: --cluster-version=1.7.2
oder cluster-version=latest
Weitere Informationen zum Festlegen von Versionen finden Sie unter Versionsverwaltung und Upgrades.
Weitere Informationen finden Sie in der Dokumentation zu gcloud container clusters upgrade
.
Console
So aktualisieren Sie einen Knotenpool mithilfe der Cloud Console:
Rufen Sie in der Cloud Console das Kubernetes Engine-Menü auf.
Klicken Sie auf die Schaltfläche "Bearbeiten" (Stiftsymbol) des Clusters.
Klicken Sie im Bereich Knotenpools auf den Namen des Knotenpools, den Sie aktualisieren möchten.
Klicken Sie auf Bearbeiten.
Klicken Sie neben Knotenversion auf den Link Ändern.
Wählen Sie die gewünschte Version aus und klicken Sie dann auf Ändern.
Klicken Sie auf Speichern.
Downgrade von Knoten ausführen
Für einen Knotenpool kann kein Downgrade ausgeführt werden. Erstellen Sie stattdessen mit der gewünschten Version einen neuen Knotenpool und migrieren Sie Ihre Arbeitslasten dorthin. Knoten, für die das automatische Upgrade aktiviert ist, werden auf die Steuerungsebenenversion aktualisiert.
Status der Knotenaktualisierung prüfen
Sie können den Status eines Upgrades mit gcloud beta container operations
prüfen.
So zeigen Sie eine Liste aller ausgeführten und abgeschlossenen Vorgänge im Cluster an:
gcloud beta container operations list
Jedem Vorgang werden eine Vorgangs-ID, ein Vorgangstyp, Start- und Endzeiten, Zielcluster und ein Status zugewiesen. Eine solche Liste sieht etwa so aus:
NAME TYPE ZONE TARGET STATUS_MESSAGE STATUS START_TIME END_TIME
operation-1505407677851-8039e369 CREATE_CLUSTER us-west1-a my-cluster DONE 20xx-xx-xxT16:47:57.851933021Z 20xx-xx-xxT16:50:52.898305883Z
operation-1505500805136-e7c64af4 UPGRADE_CLUSTER us-west1-a my-cluster DONE 20xx-xx-xxT18:40:05.136739989Z 20xx-xx-xxT18:41:09.321483832Z
operation-1505500913918-5802c989 DELETE_CLUSTER us-west1-a my-cluster DONE 20xx-xx-xxT18:41:53.918825764Z 20xx-xx-xxT18:43:48.639506814Z
Weitere Informationen zu einem bestimmten Vorgang erhalten Sie, wenn Sie die Vorgangs-ID in folgenden Befehl eingeben:
gcloud beta container operations describe operation-id
Beispiel:
gcloud beta container operations describe operation-1507325726639-981f0ed6
endTime: '20xx-xx-xxT21:40:05.324124385Z'
name: operation-1507325726639-981f0ed6
operationType: UPGRADE_CLUSTER
selfLink: https://container.googleapis.com/v1/projects/.../kubernetes-engine/docs/zones/us-central1-a/operations/operation-1507325726639-981f0ed6
startTime: '20xx-xx-xxT21:35:26.639453776Z'
status: DONE
targetLink: https://container.googleapis.com/v1/projects/.../kubernetes-engine/docs/zones/us-central1-a/clusters/...
zone: us-central1-a
Knotenupgrade abbrechen
Sie können ein Upgrade jederzeit abbrechen. Dabei gilt:
- Knoten, die das Upgrade gestartet haben, schließen es auch ab.
- Knoten, die das Upgrade nicht gestartet haben, werden nicht aktualisiert.
- Knoten, die das Upgrade bereits erfolgreich abgeschlossen haben, sind davon nicht betroffen und werden nicht zurückgesetzt.
Die Vorgangs-ID des Upgrades rufen Sie mit dem folgenden Befehl ab:
gcloud container operations list
Führen Sie den folgenden Befehl aus, um das Upgrade abzubrechen:
gcloud beta container operations cancel operation-id
Weitere Informationen finden Sie in der Dokumentation zu gcloud container operations cancel
.
Knotenupgrade rückgängig machen
Sie können für Knotenpools, deren Upgrade nicht korrekt ausgeführt wurde, ein Rollback durchführen, sodass wieder die vorherige Version von Kubernetes angewendet wird. Sie können für Knotenpools kein Rollback mehr durchführen, nachdem sie erfolgreich aktualisiert worden sind. Knoten, die kein Upgrade gestartet haben, sind davon nicht betroffen.
Führen Sie den folgenden Befehl aus, um ein Upgrade rückgängig zu machen:
gcloud container node-pools rollback node-pool-name \
--cluster cluster-name
Dabei gilt:
- node-pool-name ist der Name des Knotenpools, dessen Upgrade rückgängig gemacht werden soll.
- cluster-name ist der Name des Clusters, von dem aus ein Rollback für den Knotenpool durchgeführt werden soll.
Weitere Informationen finden Sie in der Dokumentation zu gcloud container node-pools rollback
.
Surge-Upgradeparameter ändern
Mit Surge-Upgrades können Sie die Anzahl der Knoten, die GKE in einem Schritt aktualisiert, sowie den Umfang der Unterbrechung, die ein Upgrade bei Ihren Arbeitslasten verursacht, ändern.
Die Flags max-surge-upgrade
und max-unavailable-upgrade
sind für jeden Knotenpool definiert. Weitere Informationen zur Auswahl der richtigen Parameter finden Sie unter Optimale Surge-Konfiguration ermitteln.
Sie können diese Einstellungen ändern, wenn Sie einen Cluster oder Knotenpool erstellen oder aktualisieren.
Die folgenden Variablen werden in den unten aufgeführten Befehlen verwendet:
- cluster-name ist der Name des Clusters für den Knotenpool.
- compute-zone ist die Zone für den Cluster.
- node-pool-name ist der Name des Knotenpools.
- number-nodes ist die Anzahl der Knoten im Knotenpool in jeder Zone des Clusters.
- surge-nodes ist die Anzahl der zusätzlichen Knoten, die bei jedem Upgrade des Knotenpools erstellt werden.
- unavailable-nodes ist die Anzahl der Knoten, die bei jedem Upgrade des Knotenpools gleichzeitig nicht verfügbar sein können.
Cluster mit unterschiedlichen Surge-Parametern erstellen
Verwenden Sie die Flags max-surge-upgrade
und max-unavailable-upgrade
, um einen Cluster mit spezifischen Einstellungen für Surge-Upgrades zu erstellen.
gcloud container clusters create cluster-name \ --max-surge-upgrade=surge-nodes --max-unavailable-upgrade=unavailable-nodes
Cluster mit deaktiviertem Surge-Upgrade erstellen
Wenn Sie einen Cluster ohne Surge-Upgrades erstellen möchten, legen Sie den Wert für das Flag max-surge-upgrade
auf 0
fest.
gcloud container clusters create cluster-name \ --max-surge-upgrade=0 --max-unavailable-upgrade=1
Knotenpool mit unterschiedlichen Surge-Parametern erstellen
Verwenden Sie die Flags max-surge-upgrade
und max-unavailable-upgrade
, um einen Knotenpool in einem vorhandenen Cluster mit spezifischen Einstellungen für Surge-Upgrades zu erstellen.
gcloud container node-pools create node-pool-name \ --num-nodes=number-nodes --cluster=cluster-name \ --max-surge-upgrade=surge-nodes --max-unavailable-upgrade=unavailable-nodes
Surge-Upgrade für einen vorhandenen Knotenpool aktivieren oder deaktivieren
Verwenden Sie die Flags max-surge-upgrade
und max-unavailable-upgrade
, um die Upgradeeinstellungen eines vorhandenen Knotenpools zu aktualisieren. Wenn Sie max-surge-upgrade
auf einen größeren Wert als 0
festlegen, erstellt GKE Surge-Knoten. Wenn Sie max-surge-upgrade
auf 0
festlegen, erstellt GKE keine Surge-Knoten.
gcloud beta container node-pools update node-pool-name \ --cluster=cluster-name \ --max-surge-upgrade=surge-nodes --max-unavailable-upgrade=unavailable-nodes
Surge-Upgrades in einem Knotenpool auf Aktivierung prüfen
Wenn Sie prüfen möchten, ob Surge-Upgrades für einen Knotenpool aktiviert sind, verwenden Sie gcloud
zum Beschreiben der Parameter des Clusters:
gcloud container node-pools describe node-pool-name \ --cluster=cluster-name