Ein Knotenpool ist eine Gruppe von Knoten in einem Cluster mit derselben Konfiguration. Alle Knoten in Ihrem Cluster müssen zu einem Knotenpool gehören. In einem Google Distributed Cloud-Cluster gibt es drei Arten von Knotenpools: Steuerungsebene, Load-Balancer und Worker-Knotenpools.
Auf dieser Seite wird beschrieben, wie Sie den Status von Worker-Knotenpools prüfen und Worker-Knotenpools hinzufügen, aktualisieren und entfernen.
Tool zum Verwalten von Knotenpools auswählen
Die Verwaltung von Knotenpools hängt vom Clustertyp und von Nutzerclustern ab, unabhängig davon, ob der Cluster von der GKE On-Prem API verwaltet wird. Ein Nutzercluster wird von der GKE On-Prem API verwaltet, wenn eine der folgenden Bedingungen zutrifft:
Der Cluster wurde in der Google Cloud Console oder mit der Google Cloud CLI (gcloud CLI) erstellt, in der die GKE On-Prem API automatisch für die Verwaltung des Clusters konfiguriert wird.
Der Cluster wurde mit
bmctl
erstellt, aber für die Verwaltung durch die GKE On-Prem API konfiguriert.
Wenn die GKE On-Prem API einen Nutzercluster verwaltet, können Sie Knotenpools entweder über die Console oder die gcloud CLI verwalten. Wenn der Nutzercluster nicht von der GKE On-Prem API verwaltet wird, verwenden Sie kubectl
auf der Administratorworkstation, um Knotenpools zu verwalten. Sie verwenden kubectl
auch, um Knotenpools für alle Clustertypen zu verwalten, die Worker-Knotenpools enthalten können (Hybrid-, eigenständige und Nutzercluster).
Wenn Sie die gcloud CLI verwenden möchten, gehen Sie auf einem Computer mit installierter gcloud CLI so vor:
Mit Google-Konto anmelden
gcloud auth login
Aktualisieren Sie die Komponenten:
gcloud components update
Knotenstatus prüfen
Prüfen Sie vor dem Hinzufügen oder Entfernen von Knotenpools den Status der Knoten und ihrer jeweiligen Knotenpools.
kubectl
Mit kubectl
können Sie den Status von Knoten in einem bestimmten Namespace oder im gesamten Cluster abrufen. Das folgende Beispiel zeigt den Status der Knotenpools im Cluster-Namespace cluster-abm-cluster
:
kubectl get nodepools.baremetal.cluster.gke.io -n cluster-abm-cluster
Das System gibt Ergebnisse ähnlich der folgenden:
NAME READY RECONCILING STALLED UNDERMAINTENANCE UNKNOWN
abm-cluster 3 0 0 0 0
default-pool 2 0 0 0 0
backup-pool 3 0 0 0 0
Jede Spalte in der Tabelle gibt die verschiedenen Status an, die ein Knoten haben kann. Jede Zeile in der Tabelle gibt die Anzahl der Knoten pro Knotenpool für jeden Knotenstatus an.
Wenn Sie einen Knoten hinzufügen, hat er anfangs den Status Reconciling
, während der Knoten bereitgestellt wird. Sobald der Knoten Teil des Clusters ist, ändert sich der Knotenstatus in Ready
.
Sie können auch den Status der Knoten im Cluster prüfen, indem Sie den folgenden Befehl ausführen:
kubectl get nodes --kubeconfig=PATH_TO_KUBECONFIG
Console
Rufen Sie in der Console die Übersichtsseite für Google Kubernetes Engine-Cluster auf.
Wählen Sie das Google Cloud-Projekt aus, in dem sich der Nutzercluster befindet.
Klicken Sie in der Clusterliste auf den Namen des Clusters und dann im Feld Details auf Weitere Details.
Klicken Sie auf den Tab Knoten.
Eine Liste der Knotenpools wird angezeigt.
gcloud-CLI
Listen Sie die Knotenpools im Cluster auf:
gcloud container bare-metal node-pools list \ --cluster=USER_CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID \ --location=LOCATION
Ersetzen Sie Folgendes:
USER_CLUSTER_NAME
: Der Name des Nutzerclusters, der die Knotenpools enthält.FLEET_HOST_PROJECT_ID
: Die ID des Projekts, in dem der Cluster erstellt wurde.LOCATION
: Der Google Cloud-Standort, der dem Nutzercluster zugeordnet ist.
Beschreiben Sie einen Knotenpool:
gcloud container bare-metal node-pools describe NODE_POOL_NAME \ --cluster=USER_CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID \ --location=LOCATION
Ersetzen Sie
NODE_POOL_NAME
durch den Namen des Knotenpools.
Weitere Informationen zum Diagnostizieren Ihrer Cluster finden Sie unter Snapshots zur Clusterdiagnose erstellen.
Neuen Knotenpool hinzufügen
kubectl
Beachten Sie beim Hinzufügen eines Knotenpools zu einem Cluster die folgenden Regeln:
Ein Administratorcluster kann einen Load-Balancer-Knotenpool und einen Knotenpool der Steuerungsebene enthalten, aber keinen Worker-Knotenpool: Wenn versucht wird, einem Administratorcluster einen Worker-Knotenpool hinzuzufügen, führt dies zu einem Fehler.
Ein Cluster kann nur einen einzigen Knotenpool für die Steuerungsebene und einen einzigen Load-Balancer-Knotenpool enthalten. Sie können einem Cluster keine zusätzlichen Knotenpools der Steuerungsebene oder des Load-Balancings hinzufügen.
Zum Hinzufügen neuer Knotenpools zu einem Cluster erstellen Sie eine neue nodepools.baremetal.cluster.gke.io
-Ressource im Cluster. Im folgenden Beispiel wird dem Manifest ein neuer Knotenpool namens "machine-learning-pool" hinzugefügt. Der neue Knotenpool besteht aus zwei Knoten mit den IP-Adressen 10.200.0.7
und 10.200.0.8
:
apiVersion: baremetal.cluster.gke.io/v1
kind: NodePool
metadata:
name: machine-learning-pool
namespace: cluster-abm-cluster
spec:
clusterName: abm-cluster
nodes:
- address: 10.200.0.7
- address: 10.200.0.8
taints:
- key: TAINT_KEY
value: TAINT_VALUE
effect: NoSchedule
labels:
key1: LABEL_1
key2: LABEL_2
Speichern Sie die Konfiguration in einer Datei mit dem Namen machine-learning-pool.yaml
und wenden Sie die Konfiguration mit dem folgenden Befehl auf den Cluster an:
kubectl apply -f machine-learning-pool.yaml
Beachten Sie beim Hinzufügen eines Knotenpools zu einem Cluster Folgendes:
NodePool.spec.taints
- undNodePool.spec.labels
-Konfigurationen werden mit Knoten abgeglichen. Alle Markierungen und Labels, die den Knoten direkt hinzugefügt wurden, werden entfernt. Die Markierungen und Labels, die Sie während der Synchronisierung direkt hinzugefügt haben, werden von der Steuerungsebene nicht entfernt. Sie können den Knoten mitbaremetal.cluster.gke.io/label-taint-no-sync
annotieren, um diesen Abgleichsschritt zu umgehen.Die Knotenpoolressource muss im selben Namespace wie der zugehörige Cluster erstellt werden und die Knotenpoolressource muss auf den Clusternamen im Feld
spec.clusterName
verweisen.
Console
Rufen Sie in der Console die Übersichtsseite für Google Kubernetes Engine-Cluster auf.
Wählen Sie das Google Cloud-Projekt aus, in dem sich der Nutzercluster befindet.
Klicken Sie in der Clusterliste auf den Namen des Clusters und dann im Feld Details auf Weitere Details.
Klicken Sie auf Knotenpool hinzufügen
.Geben Sie einen Namen für den Knotenpool ein.
Geben Sie im Feld Knotenadresse 1 die IP-Adresse der Worker-Knotenmaschine ein.
Wenn Sie mehrere Worker-Knotenmaschinen hinzufügen möchten, klicken Sie auf
Adresse hinzufügen.Fügen Sie optional Kubernetes-Labels und/oder Kubernetes-Markierungen hinzu.
Klicken Sie auf Erstellen.
Der Status des Knotenpools wird auf dem Tab Knoten angezeigt. Möglicherweise müssen Sie die Seite aktualisieren, damit der aktualisierte Status angezeigt wird.
gcloud-CLI
gcloud container bare-metal node-pools create NODE_POOL_NAME \ --cluster=USER_CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID \ --location=LOCATION \ --node-configs-from-file=NODE_POOL_CONFIG
Ersetzen Sie Folgendes:
NODE_POOL_NAME
: Ein Name Ihrer Wahl für den Knotenpool. Der Name:- darf höchstens 40 Zeichen enthalten.
- darf nur kleingeschriebene, alphanumerische Zeichen und einen Bindestrich
-
enthalten. - Er muss mit einem Buchstaben beginnen.
- Er muss mit einem alphanumerischen Zeichen enden.
USER_CLUSTER_NAME
: Der Name des Nutzerclusters.FLEET_HOST_PROJECT_ID
: Die ID des Projekts, in dem der Cluster erstellt wurde.LOCATION
: Der Google Cloud-Standort, den Sie beim Erstellen des Clusters angegeben haben.NODE_POOL_CONFIG
: Der Pfad einer Konfigurationsdatei, die den Knotenpool beschreibt. Beispiel:nodeConfigs: - nodeIP: 10.200.0.10 labels: key1: value1 key2: value2 - nodeIP: 10.200.0.11 labels: key3: value3 key4: value4
Optional können Sie Folgendes angeben:
--node-labels=KEY=VALUE,...
: Eine durch Kommas getrennte Liste von Kubernetes-Labels (Schlüssel/Wert-Paaren), die auf jeden Knoten im Pool angewendet werden.--node-taints=KEY=VALUE:EFFECT,...
Eine durch Kommas getrennte Liste von Kubernetes-Markierungen
auf jeden Knoten im Pool angewendet. Markierungen sind Schlüssel/Wert-Paare, die einem Effekt zugeordnet sind. Markierungen werden mit Toleranzen für die Pod-Planung verwendet. Geben Sie für EFFECT
einen der folgenden Werte an: NoSchedule
, PreferNoSchedule
oder NoExecute
.
--validate-only
Geben Sie dieses Flag an, wenn Sie die Aktualisierung validieren, aber keine Änderungen vornehmen möchten.
Knotenpool aktualisieren
kubectl
Zum Aktualisieren eines Knotenpools ändern Sie die Ressource nodepools.baremetal.cluster.gke.io
im Cluster. Sie können die Ressource direkt mit kubectl edit
aktualisieren oder die YAML-Datei aktualisieren und kubectl apply
verwenden.
Console
Rufen Sie in der Console die Übersichtsseite für Google Kubernetes Engine-Cluster auf.
Wählen Sie das Google Cloud-Projekt aus, in dem sich der Nutzercluster befindet.
Klicken Sie in der Clusterliste auf den Namen des Clusters und dann im Feld Details auf Weitere Details.
Klicken Sie auf den Tab Knoten.
Klicken Sie in der Liste auf den Knotenpool, den Sie aktualisieren möchten.
Klicken Sie auf der Seite Knotenpooldetails auf
Bearbeiten.Ändern Sie die Einstellungen nach Bedarf und klicken Sie auf Speichern.
gcloud-CLI
Listen Sie optional die Knotenpools im Cluster auf, um den Namen des Knotenpools zu erhalten, den Sie aktualisieren möchten.
gcloud container bare-metal node-pools list \ --cluster=USER_CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID \ --location=LOCATION
Ersetzen Sie Folgendes:
USER_CLUSTER_NAME
: Der Name des Nutzerclusters, der die Knotenpools enthält.FLEET_HOST_PROJECT_ID
: Die ID des Projekts, in dem der Cluster erstellt wurde.LOCATION
: Der Google Cloud-Standort, der dem Nutzercluster zugeordnet ist.
Führen Sie dazu diesen Befehl aus:
gcloud container bare-metal node-pools update NODE_POOL_NAME \ --cluster=USER_CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID \ --location=LOCATION \ --node-configs-from-file=NODE_CONFIG_FILE
Ersetzen Sie Folgendes:
NODE_POOL_NAME
durch den Namen des Knotenpools.NODE_CONFIG_FILE
: Der Pfad einer Konfigurationsdatei, die den Knotenpool beschreibt. Beispiel:
nodeConfigs: - nodeIP: 10.200.0.10 labels: key1: value1 - nodeIP: 10.200.0.11
Optional können Sie Folgendes angeben:
--node-labels=KEY=VALUE,...
: Eine durch Kommas getrennte Liste von Kubernetes-Labels (Schlüssel/Wert-Paaren), die auf jeden Knoten im Pool angewendet werden.--node-taints=KEY=VALUE:EFFECT,...
Eine durch Kommas getrennte Liste von Kubernetes-Markierungen, die auf jeden Knoten im Pool angewendet werden. Markierungen sind Schlüssel/Wert-Paare, die einem Effekt zugeordnet sind. Markierungen werden mit Toleranzen für die Pod-Planung verwendet. Geben Sie für EFFECT einen der folgenden Werte an:NoSchedule
,PreferNoSchedule
oderNoExecute
.--validate-only
Geben Sie dieses Flag an, wenn Sie die Aktualisierung validieren, aber keine Änderungen vornehmen möchten.
Beispiel:
gcloud container bare-metal node-pools create default-pool \ --cluster=user-cluster-1 \ --location=us-west1 \ --node-configs-from-file=node-pool-config.yaml \ --node-taints=key1=val1:NoSchedule,key2=val2:NoExecute
Knotenpool entfernen
kubectl
Sie können Knotenpools mit kubectl delete
entfernen. Wenn Sie beispielsweise den im vorherigen Abschnitt machine-learning-pool
hinzugefügten Knotenpool entfernen möchten, verwenden Sie den folgenden Befehl:
kubectl delete nodepool machine-learning-pool -n cluster-abm-cluster
Beachten Sie, dass Knotenpools der Steuerungsebene und Load-Balancer-Knotenpools für die Funktion eines Clusters entscheidend sind und daher nicht aus einem Cluster entfernt werden können.
Console
Rufen Sie in der Console die Übersichtsseite für Google Kubernetes Engine-Cluster auf.
Wählen Sie das Google Cloud-Projekt aus, in dem sich der Nutzercluster befindet.
Klicken Sie in der Clusterliste auf den Namen des Clusters und dann im Feld Details auf Weitere Details.
Klicken Sie auf den Tab Knoten und dann auf den Knotenpool, den Sie löschen möchten.
Klicken Sie auf
Löschen.Geben Sie im Bestätigungsdialogfeld den Namen des Knotenpools ein und klicken Sie auf Bestätigen.
gcloud-CLI
gcloud container bare-metal node-pools delete NODE_POOL_NAME \ --cluster=USER_CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID \ --location=LOCATION
Ersetzen Sie Folgendes:
NODE_POOL_NAME
durch den Namen des Knotenpools.USER_CLUSTER_NAME
: Der Name des Nutzerclusters, der die Knotenpools enthält.FLEET_HOST_PROJECT_ID
: Die ID des Projekts, in dem der Cluster erstellt wurde.LOCATION
: Der Google Cloud-Standort, der dem Nutzercluster zugeordnet ist.
Das Entfernen eines Worker-Knotenpools in einem Cluster kann zu Pod-Ausfällen führen. Wenn ein Pod-Ausfallbudget (PDB) vorhanden ist, werden Sie möglicherweise daran gehindert, einen Knotenpool zu entfernen. Weitere Informationen zu den Richtlinien zu Pod-Ausfällen finden Sie unter Durch das Budget für Pod-Störungen blockierte Knoten entfernen.
Nächste Schritte
Wenn sich die Arbeitslastanforderungen nach dem Erstellen von Knotenpools ändern, können Sie einen Worker-Knotenpool aktualisieren, um Knoten hinzuzufügen oder zu entfernen. Informationen zum Hinzufügen oder Entfernen von Knoten in einem Worker-Knotenpool finden Sie unter Knoten zu einem Cluster hinzufügen oder daraus entfernen.