Knotenpools hinzufügen und verwalten


Auf dieser Seite wird erläutert, wie Sie auf Knotenpools, auf denen Ihre GKE-Cluster (Google Kubernetes Engine) ausgeführt werden, Vorgänge hinzufügen und ausführen. Informationen zur Funktionsweise von Knotenpools finden Sie in diesem Artikel.

Cluster können Vorgänge wie die automatische Knotenbereitstellung auf mehreren Knotenpools parallel ausführen. Sie können einen Knotenpool manuell erstellen, aktualisieren oder löschen, während bereits ein anderer Knotenpool erstellt, aktualisiert oder gelöscht wird.

Hinweise

Führen Sie die folgenden Aufgaben aus, bevor Sie beginnen:

  • Aktivieren Sie die Google Kubernetes Engine API.
  • Google Kubernetes Engine API aktivieren
  • Wenn Sie die Google Cloud CLI für diese Aufgabe verwenden möchten, müssen Sie die gcloud CLI installieren und dann initialisieren. Wenn Sie die gcloud CLI bereits installiert haben, rufen Sie die neueste Version mit gcloud components update ab.

Knotenpool hinzufügen

Sie können einem GKE-Standard-Cluster mithilfe der gcloud CLI, der Google Cloud Console oder Terraform einen neuen Knotenpool hinzufügen. GKE unterstützt auch die automatische Knotenbereitstellung, die die Knotenpools in Ihrem Cluster automatisch basierend auf den Skalierungsanforderungen verwaltet.

Als Best Practice empfehlen wir in beiden Fällen, für Ihre Knotenpools ein IAM-Dienstkonto (Identity and Access Management) mit minimalen Berechtigungen zu erstellen und zu verwenden, das anstelle des Compute Engine-Standarddienstkontos verwendet wird. Eine Anleitung zum Erstellen eines Dienstkontos mit minimalen Berechtigungen finden Sie unter Sicherheit von Clustern erhöhen.

gcloud

Führen Sie zum Erstellen eines Knotenpools den Befehl gcloud container node-pools create aus:

gcloud container node-pools create POOL_NAME \
    --cluster CLUSTER_NAME \
    --service-account SERVICE_ACCOUNT

Dabei gilt:

  • POOL_NAME: der Name des neuen Knotenpools.
  • CLUSTER_NAME ist der Name Ihres vorhandenen Clusters.
  • SERVICE_ACCOUNT: der Name des IAM-Dienstkontos, das von Ihren Knoten verwendet werden soll. Wenn kein Wert angegeben ist, verwendet der Knotenpool das Compute Engine-Standarddienstkonto.
  • Fügen Sie das Flag --enable-private-nodes hinzu, um Knoten über private IP-Adressen bereitzustellen. Sie können dieses Flag in öffentlichen Clustern verwenden, die Private Service Connect verwenden. Wenn Sie Prüfen wollen, ob Ihr Cluster Private Service Connect verwendet, finden Sie unter Öffentliche Cluster mit Private Service Connect weitere Informationen.

Eine vollständige Liste der optionalen Flags, die Sie angeben können, finden Sie in der Dokumentation zu gcloud container node-pools create.

Die Ausgabe sieht in etwa so aus:

Creating node pool POOL_NAME...done.
Created [https://container.googleapis.com/v1/projects/PROJECT_ID/zones/us-central1/clusters/CLUSTER_NAME/nodePools/POOL_NAME].
NAME: POOL_NAME
MACHINE_TYPE: e2-medium
DISK_SIZE_GB: 100
NODE_VERSION: 1.21.5-gke.1302

In dieser Ausgabe sehen Sie Details zum Knotenpool, z. B. den Maschinentyp und die GKE-Version, die auf den Knoten ausgeführt werden.

Gelegentlich wird der Knotenpool zwar erfolgreich erstellt, doch der Befehl gcloud überschreitet das Zeitlimit, anstatt den Status vom Server zu melden. Mit dem folgenden Befehl können Sie den Status aller Knotenpools prüfen, einschließlich der Pools, die noch nicht vollständig bereitgestellt wurden:

gcloud container node-pools list --cluster CLUSTER_NAME

Console

Führen Sie die folgenden Schritte aus, um einen Knotenpool einem vorhandenen Cluster hinzuzufügen:

  1. Rufen Sie in der Google Cloud Console die Seite Google Kubernetes Engine auf:

    Zur Seite „Google Kubernetes Engine“

  2. Klicken Sie in der Clusterliste auf den Namen des Clusters, den Sie ändern möchten.

  3. Klicken Sie auf Knotenpool hinzufügen .

  4. Konfigurieren Sie den Knotenpool.

  5. Klicken Sie im Navigationsmenü auf Sicherheit.

  6. Wählen Sie im Drop-down-Menü Dienstkonto das IAM-Dienstkonto aus, das Ihr Knotenpool verwenden soll. Standardmäßig verwendet der Knotenpool das Compute Engine-Standarddienstkonto.

  7. Klicken Sie auf Erstellen, um den Knotenpool hinzuzufügen.

Terraform

Informationen zum Hinzufügen eines Knotenpools zu einem vorhandenen Cluster mit Terraform finden Sie im folgenden Beispiel:

resource "google_container_node_pool" "default" {
  name    = "gke-standard-regional-node-pool"
  cluster = google_container_cluster.default.name

  node_config {
    service_account = google_service_account.default.email
  }
}

Weitere Informationen zur Verwendung von Terraform finden Sie unter Terraform-Unterstützung für GKE.

Knotenpools in einem Cluster aufrufen

gcloud

Führen Sie zum Auflisten aller Knotenpools eines Clusters den Befehl gcloud container node-pools list aus:

gcloud container node-pools list --cluster CLUSTER_NAME

Führen Sie zum Aufrufen der Details eines bestimmten Knotenpools den Befehl gcloud container node-pools describe aus:

gcloud container node-pools describe POOL_NAME \
    --cluster CLUSTER_NAME

Dabei gilt:

  • CLUSTER_NAME ist der Name des Clusters.
  • POOL_NAME ist der Name des Knotenpools, den Sie sich ansehen möchten.

Console

Führen Sie die folgenden Schritte aus, um Knotenpools für einen Cluster anzeigen zu lassen:

  1. Rufen Sie in der Google Cloud Console die Seite Google Kubernetes Engine auf:

    Zur Seite „Google Kubernetes Engine“

  2. Klicken Sie in der Clusterliste auf den Namen des Clusters.

  3. Klicken Sie auf den Tab Knoten.

  4. Klicken Sie unter Knotenpools auf den Namen des Knotenpools, den Sie aufrufen möchten.

Knotenpool skalieren

Sie können die Knotenpools hoch- oder herunterskalieren, um Leistung und Kosten zu optimieren. Mit GKE-Standard-Knotenpools können Sie einen Knotenpool horizontal skalieren, indem Sie die Anzahl der Knoten im Knotenpool ändern oder einen Knotenpool vertikal skalieren, indem Sie die Maschinenattributkonfiguration der Knoten ändern.

Horizontal skalieren, indem Sie die Knotenzahl ändern

gcloud

Mit dem Befehl gcloud container clusters resize können Sie die Größe der Knotenpools eines Clusters anpassen:

gcloud container clusters resize CLUSTER_NAME \
    --node-pool POOL_NAME \
    --num-nodes NUM_NODES

Dabei gilt:

  • CLUSTER_NAME ist der Name des Clusters, dessen Größe geändert werden soll.
  • POOL_NAME ist der Name des Knotenpools, dessen Größe geändert werden soll.
  • NUM_NODES ist die Anzahl der Knoten im Pool in einem zonalen Cluster. Wenn Sie multizonale oder regionale Cluster verwenden, ist NUM_NODES die Anzahl der Knoten jeder Zone, in der sich der Knotenpool befindet.

Wiederholen Sie diesen Befehl für weitere Knotenpools. Wenn Ihr Cluster nur einen einzigen Knotenpool hat, lassen Sie das Flag --node-pool weg.

Console

Führen Sie die folgenden Schritte aus, um die Größe des Knotenpools Ihres Clusters zu ändern:

  1. Rufen Sie in der Google Cloud Console die Seite Google Kubernetes Engine auf:

    Zur Seite „Google Kubernetes Engine“

  2. Klicken Sie in der Clusterliste auf den Namen des Clusters, den Sie ändern möchten.

  3. Klicken Sie auf den Tab Knoten.

  4. Klicken Sie im Bereich Knotenpools auf den Namen des Knotenpools, dessen Größe Sie anpassen möchten.

  5. Klicken Sie auf Größe ändern .

  6. Geben Sie im Feld Anzahl der Knoten den gewünschten Wert für den Knotenpool ein und klicken Sie dann auf Größe ändern.

  7. Wiederholen Sie den Vorgang nach Bedarf für weitere Knotenpools.

Vertikale Skalierung durch Änderung der Knotenmaschinenattribute

Sie können den konfigurierten Maschinentyp, den Laufwerktyp und die Laufwerkgröße des Knotenpools ändern.

Wenn Sie eines oder mehrere dieser Maschinenattribute bearbeiten, aktualisiert GKE die Knoten anhand der für den Knotenpool konfigurierten Upgradestrategie auf die neue Konfiguration. Wenn Sie die Blau/Grün-Upgradestrategie konfigurieren, können Sie die Arbeitslasten von den ursprünglichen Knoten zu den neuen Knoten migrieren und dabei die ursprünglichen Knoten zurücksetzen, wenn die Migration fehlschlägt. Prüfen Sie die Upgrade-Einstellungen des Knotenpools, um sicherzustellen, dass die konfigurierte Strategie so ist, wie Ihre Knoten aktualisiert werden sollen.

Aktualisieren Sie mit dem folgenden Befehl mindestens eines der markierten Maschinenattribute:

gcloud container node-pools update POOL_NAME \
    --cluster CLUSTER_NAME \
    --machine-type MACHINE_TYPE \
    --disk-type DISK_TYPE \
    --disk-size DISK_SIZE

Lassen Sie alle Flags für Maschinenattribute weg, die Sie nicht ändern möchten. Sie müssen jedoch mindestens ein Maschinenattribut-Flag verwenden, da der Befehl ansonsten fehlschlägt.

Ersetzen Sie Folgendes:

  • POOL_NAME ist der Name des Knotenpools, dessen Größe geändert werden soll.
  • CLUSTER_NAME ist der Name des Clusters, dessen Größe geändert werden soll.
  • MACHINE_TYPE: Der Maschinentyp für Knoten. Weitere Informationen finden Sie unter gcloud container node-pools update.
  • DISK_TYPE: Der Typ des Knoten-VM-Bootlaufwerks muss einer von pd-standard, pd-ssd, pd-balanced sein.
  • DISK_SIZE: Die Größe für VM-Bootlaufwerke des Knotens in GB. Der Standardwert ist 100 GB.

Knotenpool aktualisieren

Für die Knoten eines Clusters ist standardmäßig das automatische Upgrade aktiviert. Wir empfehlen, dies nicht zu deaktivieren. Automatische Knotenupgrades sorgen dafür, dass die Steuerungsebene und die Knotenversion Ihres Clusters synchron bleiben und die Versionsinkompatibilitätsrichtlinie von Kubernetes einhalten. Dadurch wird sichergestellt, dass die Steuerungsebenen mit Knoten kompatibel sind, die bis zu zwei Nebenversionen älter als die Steuerungsebene sind. Die Steuerungsebenen von Kubernetes 1.29 sind beispielsweise mit den Knoten von Kubernetes 1.27 kompatibel.

Bei GKE-Knotenpool-Upgrades haben Sie die Wahl zwischen zwei konfigurierbaren Upgradestrategien, nämlich Surge-Upgrades und Blau/Grün-Upgrades.

Wählen Sie eine Strategie aus und verwenden Sie die Parameter, um die Strategie so zu optimieren, dass sie die Anforderungen Ihrer Clusterumgebung am besten erfüllt.

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. 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:

Manuelles Upgrade für einen Knotenpool 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. Sie können mehrere Knotenpools gleichzeitig manuell aktualisieren, während GKE automatisch jeweils nur einen Knotenpool nacheinander aktualisiert.

Wenn Sie einen Knotenpool manuell aktualisieren, entfernt GKE alleLabels, die Sie einzelnen Knoten mit kubectl hinzugefügt haben. Um dies zu vermeiden, können Sie stattdessen Labels auf Knotenpools anwenden.

Sie können Knotenpools mithilfe der Google Cloud Console oder der Google Cloud CLI manuell auf eine Version aktualisieren, die mit der Steuerungsebene kompatibel ist.

gcloud

Die folgenden Variablen werden in den Befehlen in diesem Abschnitt verwendet:

  • CLUSTER_NAME ist der Name des Clusters des Knotenpools, der aktualisiert werden soll.
  • NODE_POOL_NAME ist der Name des Knotenpools, der aktualisiert werden soll.
  • VERSION ist die Kubernetes-Version, auf die die Knoten aktualisiert werden. Beispiel: --cluster-version=1.7.2 oder cluster-version=latest.

Knotenpool aktualisieren:

gcloud container clusters upgrade CLUSTER_NAME \
  --node-pool=NODE_POOL_NAME

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 VERSION

Weitere Informationen zum Festlegen von Versionen finden Sie unter Versionsverwaltung.

Weitere Informationen finden Sie in der Dokumentation zu gcloud container clusters upgrade.

Console

Zum Aktualisieren eines Knotenpools mithilfe der Google Cloud Console führen Sie die folgenden Schritte aus:

  1. Rufen Sie in der Google Cloud Console die Seite Google Kubernetes Engine auf.

    Zur Seite „Google Kubernetes Engine“

  2. Klicken Sie neben dem Cluster, den Sie bearbeiten möchten, auf Aktionen und dann auf Bearbeiten.

  3. Klicken Sie auf der Seite Clusterdetails auf den Tab Knoten.

  4. Klicken Sie im Bereich Knotenpools auf den Namen des Knotenpools, den Sie aktualisieren möchten.

  5. Klicken Sie auf  Bearbeiten.

  6. Klicken Sie unter Knotenversion auf Ändern.

  7. Wählen Sie die gewünschte Version aus der Drop-down-Liste Knotenversion aus und klicken Sie auf Ändern.

Einen Pod in einem bestimmten Knotenpool bereitstellen

Sie können einen Pod explizit mithilfe eines nodeSelector in Ihrem Pod-Manifest für einen bestimmten Knotenpool bereitstellen. nodeSelector plant Pods auf Knoten mit einem passenden Label.

Alle GKE-Knotenpools haben Labels im folgenden Format: cloud.google.com/gke-nodepool: POOL_NAME. Fügen Sie dieses Label dem Feld nodeSelector in Ihrem Pod hinzu, wie im folgenden Beispiel gezeigt:

apiVersion: v1
kind: Pod
metadata:
  name: nginx
  labels:
    env: test
spec:
  containers:
  - name: nginx
    image: nginx
    imagePullPolicy: IfNotPresent
  nodeSelector:
    cloud.google.com/gke-nodepool: POOL_NAME

Weitere Informationen finden Sie unter Pods zu Knoten zuweisen.

Alternativ zur Knotenauswahl können Sie auch die Knotenaffinität verwenden. Verwenden Sie die Knotenaffinität, wenn Sie eine „weiche“ Regel wünschen, bei der der Pod versucht, die Einschränkung zu erfüllen, aber selbst dann geplant wird, wenn gegen die Einschränkung verstoßen wird. Weitere Informationen finden Sie unter Knotenaffinität. Sie können auch Ressourcenanfragen für die Container angeben.

Downgrade von Knotenpools ausführen

Sie können beispielsweise ein Downgrade für einen Knotenpool ausführen, um einem fehlgeschlagenen Knotenpool-Upgrade entgegenzuwirken. Überprüfen Sie vor dem Downgrade eines Knotenpools die Einschränkungen.

  1. Legen Sie einen Wartungsausschluss für den Cluster fest, um zu verhindern, dass der Knotenpool nach dem Downgrade von GKE automatisch aktualisiert wird.
  2. Geben Sie für das Downgrade eines Knotenpools eine frühere Version an, wenn Sie der Anleitung unter Manuelles Upgrade für einen Knotenpool ausführen folgen.

Knotenpool löschen

Durch das Löschen eines Knotenpools werden die Knoten und alle laufenden Arbeitslasten gelöscht, ohne die Einstellungen von PodDisruptionBudget zu berücksichtigen. Weitere Informationen dazu, wie sich dies auf Ihre Arbeitslasten auswirkt, einschließlich Interaktionen mit Knotenselektoren, finden Sie unter Knotenpools löschen.

gcloud

Führen Sie zum Löschen eines Knotenpools den Befehl gcloud container node-pools delete aus:

gcloud container node-pools delete POOL_NAME \
    --cluster CLUSTER_NAME

Console

Führen Sie die folgenden Schritte aus, um einen Knotenpool zu löschen:

  1. Rufen Sie in der Google Cloud Console die Seite Google Kubernetes Engine auf:

    Zur Seite „Google Kubernetes Engine“

  2. Klicken Sie in der Clusterliste auf den Namen des Clusters, den Sie ändern möchten.

  3. Klicken Sie auf den Tab Knoten.

  4. Klicken Sie im Abschnitt Knotenpools neben dem zu löschenden Knotenpool auf .

  5. Wenn Sie zur Bestätigung aufgefordert werden, klicken Sie auf Löschen.

Fehlerbehebung

Informationen zur Fehlerbehebung finden Sie unter Fehlerbehebung bei Standardknotenpools und Fehlerbehebung bei der Knotenregistrierung.

Nächste Schritte