Wenn Sie einen Nutzercluster erstellen, müssen Sie mindestens einen Knotenpool konfigurieren. Dabei handelt es sich um eine Gruppe von Knoten, die alle dieselbe Konfiguration haben. Nachdem der Cluster erstellt wurde, können Sie neue Knotenpools hinzufügen, Knotenpooleinstellungen aktualisieren und Knotenpools löschen.
Tool zum Verwalten von Knotenpools auswählen
Wie Sie Knotenpools erstellen, aktualisieren und löschen, hängt davon ab, 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, die automatisch die GKE On-Prem API zum Verwalten des Clusters konfiguriert.
Der Cluster wurde mit
gkectl
erstellt, aber er wurde so konfiguriert, dass er von der GKE On-Prem API verwaltet wird.
Wenn die GKE On-Prem API einen Nutzercluster verwaltet, können Sie die Console oder die gcloud CLI verwenden, um Knotenpools zu verwalten. Wenn der Nutzercluster nicht von der GKE On-Prem API verwaltet wird, verwenden Sie gkectl
für den Administrator-Workstation, um Knotenpools zu verwalten.
Wenn Sie die gcloud CLI verwenden möchten, führen Sie folgende Schritte auf einem Computer aus, auf dem die gcloud CLI installiert ist:
Über Ihr Google-Konto anmelden
gcloud auth login
Aktualisieren Sie die Komponenten:
gcloud components update
Knotenpool hinzufügen
Wenn der Cluster von der GKE On-Prem API verwaltet wird, können Sie entweder die Console oder die gcloud CLI verwenden, um einen Knotenpool hinzuzufügen. Sie müssen jedoch gkectl
auf Ihrer Administrator-Workstation verwenden, um die folgenden Knotenpooleinstellungen zu konfigurieren:
- Windows für den Betriebssystem-Image-Typ
- vSphere-Datenspeicher
vSphere tags: Wenn Sie Tags an alle VMs in einem Knotenpool anhängen möchten, muss Ihr vCenter-Nutzerkonto diese vSphere-Tagging-Berechtigungen haben:
- vSphere-Tagging.Assign oder Unassign vSphere Tag
- vSphere Tagging.Assign oder Unassign vSphere Tag on Object (vSphere 7)
gkectl
Führen Sie auf Ihrer Administrator-Workstation folgende Schritte aus:
Füllen Sie in der Konfigurationsdatei für den Nutzercluster den Abschnitt
nodePools
aus.Geben Sie die folgenden Felder an:
nodePools.[i].name
nodePools[i].cpus
nodePools.[i].memoryMB
nodePools.[i].replicas
Die folgenden Felder sind optional. Wenn Sie weder
nodePools[i].bootDiskSizeGB
nochnodePools[i].osImageType
angeben, werden die Standardwerte verwendet.nodePools[i].labels
nodePools[i].taints
nodePools[i].bootDiskSizeGB
nodePools[i].osImageType
nodePools[i].vsphere.datastore
nodePools[i].vsphere.tags
Führen Sie dazu diesen Befehl aus:
gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG
Ersetzen Sie Folgendes:
ADMIN_CLUSTER_KUBECONFIG
ist der Pfad der kubeconfig-Datei für Ihren Administratorcluster.USER_CLUSTER_CONFIG
ist der Pfad Ihrer Nutzercluster-Konfigurationsdatei.
Konfigurationsbeispiel
In der folgenden Beispielkonfiguration gibt es vier Knotenpools mit jeweils unterschiedlichen Attributen:
pool-1
: nur mindestens erforderliche Attribute sind angegebenpool-2
: enthältvsphere.datastore
undvsphere.tags
pool-3
: enthälttaints
undlabels
pool-4
: enthältosImageType
undbootDiskSizeGB
nodePools:
- name: pool-1
cpus: 4
memoryMB: 8192
replicas: 5
- name: pool-2
cpus: 8
memoryMB: 16384
replicas: 3
vsphere:
datastore: my_datastore
tags:
- category: "purpose"
name: "testing"
- name: pool-3
cpus: 4
memoryMB: 8192
replicas: 5
taints:
- key: "example-key"
effect: NoSchedule
labels:
environment: production
app: nginx
- name: pool-4
cpus: 4
memoryMB: 8192
replicas: 5
osImageType: cos
bootDiskSizeGB: 40
Console
Rufen Sie in der Console die Seite Google Kubernetes Engine-Cluster – Übersicht 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 Bereich Details auf Details ansehen.
Klicken Sie auf Knotenpool hinzufügen
.Konfigurieren Sie den Knotenpool:
- Geben Sie den Namen des Knotenpools ein.
- Geben Sie die Anzahl der vCPUs für jeden Knoten im Pool (mindestens 4 pro Nutzercluster-Worker) ein.
- Geben Sie die Größe des Arbeitsspeichers in Mebibyte (MiB) für jeden Knoten im Pool ein (mindestens 8.192 MiB pro Nutzercluster-Worker-Knoten und muss ein Vielfaches von 4 sein).
- Geben Sie im Feld Knoten die Anzahl der Knoten im Pool ein (mindestens 3).
Wählen Sie den Betriebssystem-Image-Typ aus: Ubuntu Containerd oder COS.
Geben Sie die Größe des Bootlaufwerks in Gibibyte (GiB) ein (Standardeinstellung ist 40 GiB).
Wenn Sie Labels und Markierungen von Kubernetes hinzufügen möchten, gehen Sie im Abschnitt Knotenpool-Metadaten (optional) so vor:
- Klicken Sie auf + Kubernetes-Labels hinzufügen. Geben Sie den Schlüssel und den Wert für das Label ein. Wiederholen Sie diese Schritte je nach Bedarf.
- Klicken Sie auf + Markierung hinzufügen. Geben Sie den Schlüssel, den Wert und den Effekt für die Markierung ein. Wiederholen Sie diese Schritte für alle Suchabfragen, für die dies erforderlich ist.
Klicken Sie auf Erstellen.
In der Google Cloud Console wird Clusterstatus: Änderungen in Bearbeitung angezeigt. Klicken Sie auf Details ansehen, um die Ressourcenstatusbedingung und Statusmeldungen aufzurufen.
gcloud-CLI
Führen Sie den folgenden Befehl aus, um einen Knotenpool zu erstellen:
gcloud container vmware node-pools create NODE_POOL_NAME \ --cluster=USER_CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID \ --location=LOCATION \ --image-type=IMAGE_TYPE \ --boot-disk-size=BOOT_DISK_SIZE \ --cpus=vCPUS \ --memory=MEMORY \ --replicas=NODES
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, in dem der Knotenpool erstellt wird.
FLEET_HOST_PROJECT_ID
: die ID des Projekts, bei dem der Cluster registriert ist.LOCATION
: Der Google Cloud-Standort, der dem Nutzercluster zugeordnet ist.IMAGE_TYPE
: Der Typ des Betriebssystem-Images, das auf den VMs im Knotenpool ausgeführt werden soll Legen Sie dafür einen der folgenden Werte fest:ubuntu_containerd
odercos
.BOOT_DISK_SIZE
: Die Größe des Bootlaufwerks in Gibibyte (GiB) für jeden Knoten im Pool. Der Mindestwert beträgt 40 GiB.vCPUs
: Die Anzahl der CPUs für jeden Knoten im Knotenpool. Der Mindestwert beträgt 4.MEMORY
: Die Größe des Arbeitsspeichers in Mebibyte (MiB) für jeden Knoten im Pool. Der Mindestwert beträgt 8.192 MiB pro Worker-Knoten des Nutzerclusters und der Wert muss ein Vielfaches von 4 sein.NODES
: Die maximale Anzahl von Knoten im Knotenpool. Der Mindestwert beträgt 3.
Beispiel:
gcloud container vmware node-pools create default-pool \ --cluster=user-cluster-1 \ --location=us-west1 \ --image-type=ubuntu_containerd \ --boot-disk-size=40 \ --cpus=8 \ --memory=8192 \ --replicas=5
Optional können Sie Folgendes angeben:
--enable-load-balancer
: Nur für den MetalLB-Load-Balancer relevant. Wenn dieses Flag angegeben ist, kann der MetalLB-Speaker auf den Knoten im Pool ausgeführt werden. Für den MetalLB-Load-Balancer muss mindestens ein Knotenpool aktiviert sein.--image=IMAGE
: Name des Betriebssystem-Images in vCenter--node-labels=KEY=VALUE,...
: Eine durch Kommas getrennte Liste von Kubernetes-Labels (Schlüssel/Wert-Paare), 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 eine der folgenden Optionen für EFFECT an:NoSchedule
,PreferNoSchedule
,NoExecute
.
Beispiel:
gcloud container vmware node-pools create default-pool \ --cluster=user-cluster-1 \ --location=us-west1 \ --image-type=ubuntu_containerd \ --boot-disk-size=40 \ --cpus=8 \ --memory=8192 \ --replicas=5 \ --node-taints=key1=val1:NoSchedule,key2=val2:NoExecute
Informationen zu anderen optionalen Flags finden Sie in der gcloud-Referenz.
Knotenpool aktualisieren
Wenn Sie die Anzahl der Replikate erhöhen, fügt Google Distributed Cloud dem Nutzercluster die erforderliche Anzahl von Knoten hinzu. Wenn Sie die Anzahl der Replikate verringern, werden Knoten entfernt. Die Änderung der Anzahl von Replikaten für einen Knotenpool unterbricht die Arbeitslasten nicht. Achten Sie darauf, dass IP-Adressen zur Verfügung stehen, wenn Sie die Anzahl der Replikate erhöhen.
Wenn Sie ein anderes Knotenpoolfeld aktualisieren, löst dies ein Rolling Update im Cluster aus. Bei einem Rolling Update erstellt Google Distributed Cloud einen neuen Knoten und löscht dann einen alten Knoten. Dieser Vorgang wird wiederholt, bis alle alten Knoten durch neue Knoten ersetzt wurden. Dieser Vorgang verursacht keine Ausfallzeit, aber der Cluster muss eine zusätzliche IP-Adresse haben, die während des Updates verwendet werden kann.
Angenommen, ein Knotenpool hat am Ende einer Aktualisierung N Knoten. Dann müssen Sie mindestens N + 1 IP-Adressen für Knoten in diesem Pool haben. Wenn Sie also die Größe eines Clusters anpassen, indem Sie einem oder mehreren Pools Knoten hinzufügen, müssen Sie mindestens eine IP-Adresse mehr als die Gesamtzahl der Knoten haben, die sich am Ende der Größenänderung in allen Knotenpools des Clusters befinden werden. Weitere Informationen finden Sie unter Prüfen, ob genügend IP-Adressen verfügbar sind.
So aktualisieren Sie einen Knotenpool in einem Nutzercluster:
gkectl
Ändern Sie die Werte in den Feldern, die Sie ändern möchten, im Abschnitt
nodePools
der Konfigurationsdatei des Nutzerclusters.Aktualisieren Sie den Cluster:
gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG
Ersetzen Sie Folgendes:
ADMIN_CLUSTER_KUBECONFIG
ist der Pfad der kubeconfig-Datei für Ihren Administratorcluster.USER_CLUSTER_CONFIG
ist der Pfad Ihrer Nutzercluster-Konfigurationsdatei.
Von einem Knotenpool verwendeten osImageType
aktualisieren
Zum Aktualisieren eines Knotenpools für die Verwendung eines anderen osImageType
müssen Sie die Befehlszeile verwenden. Wenn Sie den von einem Knotenpool verwendeten osImageType
ändern möchten, aktualisieren Sie die Konfigurationsdatei für den Knotenpool, wie im folgenden Beispiel gezeigt, und führen Sie gkectl update cluster
aus.
nodePools: - name: np-1 cpus: 4 memoryMB: 8192 replicas: 3 osImageType: ubuntu_containerd
Console
Sie können mit der Console nur die folgenden Felder aktualisieren:
- Anzahl der Replikate
- Arbeitsspeicher
- Anzahl der vCPUs
Verwenden Sie zum Aktualisieren anderer Felder die gcloud CLI oder gkectl
.
Rufen Sie in der Console die Seite 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 Bereich Details auf Details ansehen.
Klicken Sie auf den Tab Knoten.
Klicken Sie auf den Namen des Knotenpools, den Sie ändern möchten.
Klicken Sie neben dem Feld, das Sie ändern möchten, auf
Bearbeiten und dann auf Fertig.Klicken Sie auf
, um zur vorherigen Seite zurückzukehren.In der Google Cloud Console wird Clusterstatus: Änderungen in Bearbeitung angezeigt. Klicken Sie auf Details ansehen, um die Ressourcenstatusbedingung und Statusmeldungen aufzurufen.
gcloud-CLI
Listen Sie optional die Knotenpools auf, um den Namen des Knotenpools abzurufen, den Sie aktualisieren möchten:
gcloud container vmware node-pools list \ --cluster=USER_CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID \ --location=LOCATION
Führen Sie den folgenden Befehl aus, um den Knotenpool zu aktualisieren:
gcloud container vmware node-pools update NODE_POOL_NAME \ --cluster=USER_CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID \ --location=LOCATION \ --ATTRIBUTE_TO_UPDATE \ ...
Ersetzen Sie Folgendes:
NODE_POOL_NAME
: der Name des Knotenpools, der aktualisiert werden soll.USER_CLUSTER_NAME
: der Name des GKE-Clusters, der den Knotenpool enthält.LOCATION
: Der Google Cloud-Standort, der dem Nutzercluster zugeordnet ist.ATTRIBUTE_TO_UPDATE
: Ein oder mehrere Flags zum Aktualisieren von Knotenpoolattributen. Führen Sie beispielsweise den folgenden Befehl aus, um die Anzahl der vCPUs und Knoten im Pool zu ändern.
gcloud container vmware node-pools update default-pool \ --cluster=user-cluster-1 \ --project=example-project-12345 --location=us-west1 \ --cpus=10 \ --replicas=6
Informationen zu den Knotenpoolattributen, die Sie aktualisieren können, Weitere Informationen finden Sie in der gcloud-Referenz.
Änderungen prüfen
Sehen Sie sich die Clusterknoten an, um sicherzustellen, dass Ihre Knotenpools wie vorgesehen erstellt oder aktualisiert wurden:
gkectl
Führen Sie dazu diesen Befehl aus:
kubectl --kubeconfig USER_CLUSTER_KUBECONFIG get nodes -o wide
Wenn Sie Ihre Änderungen rückgängig machen möchten, bearbeiten Sie die Clusterkonfigurationsdatei und führen Sie gkectl update cluster
aus.
Console
Rufen Sie in der Console die Seite Google Kubernetes Engine-Cluster – Übersicht 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 Bereich Details auf Details ansehen.
Klicken Sie auf den Tab Knoten.
Klicken Sie auf den Namen des Knotenpools, den Sie sich ansehen möchten.
gcloud-CLI
Führen Sie dazu diesen Befehl aus:
gcloud container vmware node-pools describe NODE_POOL_NAME \ --cluster=USER_CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID \ --location=LOCATION
Knotenpool löschen
Sie können Knotenpools zwar löschen, Ihr Nutzercluster muss jedoch mindestens einen Knotenpool haben. Das Löschen eines Knotenpools führt dazu, dass die Knoten des Pools sofort entfernt werden, unabhängig davon, ob auf diesen Knoten Arbeitslasten ausgeführt werden.
So löschen Sie einen Knotenpool aus einem Nutzercluster:
gkectl
Achten Sie darauf, dass auf den betroffenen Knoten keine Arbeitslasten ausgeführt werden.
Entfernen Sie seine Definition aus dem Abschnitt
nodePools
der Konfigurationsdatei des Nutzerclusters.Aktualisieren Sie den Cluster:
gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG
Ersetzen Sie Folgendes:
[ADMIN_CLUSTER_KUBECONFIG]
ist der Pfad der kubeconfig-Datei für Ihren Administratorcluster.[USER_CLUSTER_CONFIG]
ist der Pfad Ihrer Nutzercluster-Konfigurationsdatei.
Console
Achten Sie darauf, dass auf den betroffenen Knoten keine Arbeitslasten ausgeführt werden.
Rufen Sie in der Console die Seite 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 Bereich Details auf Details ansehen.
Klicken Sie auf den Tab Knoten.
Klicken Sie auf den Namen des Knotenpools, den Sie löschen möchten.
Klicken Sie auf
Löschen.Klicken Sie auf
, um zur vorherigen Seite zurückzukehren.In der Google Cloud Console wird Clusterstatus: Änderungen in Bearbeitung angezeigt. Klicken Sie auf Details ansehen, um die Ressourcenstatusbedingung und Statusmeldungen aufzurufen.
gcloud-CLI
Optional können Sie die Knotenpools auflisten, um den Namen des zu löschenden Knotenpools abzurufen:
gcloud container vmware node-pools list \ --cluster=USER_CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID \ --location=LOCATION
Führen Sie den folgenden Befehl aus, um den Knotenpool zu löschen:
gcloud container vmware node-pools delete NODE_POOL_NAME \ --cluster=USER_CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID \ --location=LOCATION
Ersetzen Sie Folgendes:
NODE_POOL_NAME
: der Name des zu löschenden Knotenpools.USER_CLUSTER_NAME
: der Name des GKE-Clusters, der den Knotenpool enthält.LOCATION
: Der Google Cloud-Standort, der dem Nutzercluster zugeordnet ist.
Fehlerbehebung
Im Allgemeinen liefert der Befehl
gkectl update cluster
detaillierte Informationen, wenn er fehlschlägt. Wenn der Befehl erfolgreich ausgeführt wurde und die Knoten nicht angezeigt werden, können Sie anhand des Leitfadens Clusterprobleme diagnostizieren eine Fehlerbehebung durchführen.Es ist möglich, dass nicht genügend Clusterressourcen vorhanden sind, z. B. wenn beim Erstellen oder Aktualisieren des Knotenpools nicht genügend IP-Adressen verfügbar sind. Weitere Informationen dazu, wie Sie die Verfügbarkeit von IP-Adressen prüfen, finden Sie unter Größe eines Nutzerclusters anpassen.
Sie können auch den allgemeinen Leitfaden zur Fehlerbehebung lesen.
Wenn Sie nicht weiter als bis
Creating node MachineDeployment(s) in user cluster…
gelangen:Es kann eine Weile dauern, bis die Knotenpools in Ihrem Nutzercluster erstellt oder aktualisiert wurden. Wenn die Wartezeit jedoch extrem lang ist und Sie den Verdacht haben, dass etwas nicht richtig funktioniert, können Sie so vorgehen:
- Führen Sie
kubectl get nodes
aus, um den Status Ihrer Knoten abzurufen. - Führen Sie für alle Knoten, die nicht bereit sind,
kubectl describe node NODE_NAME
aus, um Details zu erfahren.
- Führen Sie