Knotenpools erstellen und verwalten

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:

Wenn die GKE On-Prem API einen Nutzercluster verwaltet, können Sie Knotenpools mit der Console oder der gcloud CLI verwalten. Wenn der Nutzercluster nicht von der GKE On-Prem API verwaltet wird, verwenden Sie gkectl auf der Administrator-Workstation, um Knotenpools zu verwalten.

Wenn Sie die gcloud CLI verwenden möchten, führen Sie die folgenden Schritte auf einem Computer aus, auf dem die gcloud CLI installiert ist:

  1. Mit Google-Konto anmelden

    gcloud auth login
    
  2. 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 Administratorworkstation verwenden, um die folgenden Knotenpooleinstellungen zu konfigurieren:

Prüfen Sie vor dem Hinzufügen eines weiteren Knotenpools, ob im Cluster genügend IP-Adressen verfügbar sind.

gkectl

Führen Sie auf der Administratorworkstation die folgenden Schritte aus:

  1. 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 noch nodePools[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
  2. 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 angegeben
  • pool-2: enthält vsphere.datastore und vsphere.tags
  • pool-3: enthält taints und labels
  • pool-4: enthält osImageType und bootDiskSizeGB
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

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

    Zu GKE-Clustern

  2. Wählen Sie das Google Cloud-Projekt aus, in dem sich der Nutzercluster befindet.

  3. Klicken Sie in der Clusterliste auf den Namen des Clusters und dann im Bereich Details auf Details ansehen.

  4. Klicken Sie auf Knotenpool hinzufügen .

  5. Konfigurieren Sie den Knotenpool:

    1. Geben Sie den Namen des Knotenpools ein.
    2. Geben Sie die Anzahl der vCPUs für jeden Knoten im Pool (mindestens 4 pro Nutzercluster-Worker) ein.
    3. 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).
    4. Geben Sie im Feld Knoten die Anzahl der Knoten im Pool ein (mindestens 3).
    5. Wählen Sie den Betriebssystem-Image-Typ aus: Ubuntu Containerd oder COS.

    6. Geben Sie die Größe des Bootlaufwerks in Gibibyte (GiB) ein (Standardeinstellung ist 40 GiB).

  6. Wenn Sie im Bereich Knotenpoolmetadaten (optional) Kubernetes-Labels und Markierungen hinzufügen möchten, gehen Sie so vor:

    1. Klicken Sie auf + Kubernetes-Labels hinzufügen. Geben Sie den Schlüssel und den Wert für das Label ein. Wiederholen Sie diese Schritte für alle Suchabfragen, für die dies erforderlich ist.
    2. 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.
  7. Klicken Sie auf Erstellen.

  8. 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, für das 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 einen der folgenden Werte fest: ubuntu_containerd oder cos.

    • BOOT_DISK_SIZE: Die Größe des Bootlaufwerks in Gibibyte (GiB) für jeden Knoten im Pool. Das Minimum beträgt 40 GiB.

    • vCPUs: Die Anzahl der vCPUs für jeden Knoten im Knotenpool. Der Mindestwert ist 4.

    • MEMORY: die Arbeitsspeichergröße in Mebibyte (MiB) für jeden Knoten im Pool. Das Minimum 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. Das Minimum ist 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 relevant für den MetalLB-Load-Balancer. Wenn angegeben, kann der MetalLB-Lautsprecher auf den Knoten im Pool ausgeführt werden. Mindestens ein Knotenpool muss für den MetalLB-Load-Balancer 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 mit einem Effekt verknüpft sind. Markierungen werden mit Toleranzen für die Pod-Planung verwendet. Geben Sie für EFFECT eine der folgenden Optionen 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 GKE on VMware 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 für den Cluster aus. Bei einem Rolling Update erstellt GKE on VMware 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

  1. Ändern Sie die Werte in den Feldern, die Sie ändern möchten, im Abschnitt nodePools der Konfigurationsdatei des Nutzerclusters.

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

Mit der Console können Sie nur die folgenden Felder aktualisieren:

  • Anzahl der Replikate
  • Speicher
  • Anzahl der vCPUs

Verwenden Sie zum Aktualisieren anderer Felder die gcloud CLI oder gkectl.

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

    Zu GKE-Clustern

  2. Wählen Sie das Google Cloud-Projekt aus, in dem sich der Nutzercluster befindet.

  3. Klicken Sie in der Clusterliste auf den Namen des Clusters und dann im Bereich Details auf Details ansehen.

  4. Klicken Sie auf den Tab Knoten.

  5. Klicken Sie auf den Namen des Knotenpools, den Sie ändern möchten.

  6. Klicken Sie neben dem Feld, das Sie ändern möchten, auf Bearbeiten und dann auf Fertig.

  7. Klicken Sie auf , um zur vorherigen Seite zurückzukehren.

  8. In der Google Cloud Console wird Clusterstatus: Änderungen in Bearbeitung angezeigt. Klicken Sie auf Details ansehen, um die Ressourcenstatusbedingung und Statusmeldungen aufzurufen.

gcloud-CLI

  1. Optional können Sie die Knotenpools auflisten, 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
    
  2. 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 zu aktualisierenden Knotenpools.

    • USER_CLUSTER_NAME: Der Name des Nutzerclusters, der den Knotenpool enthält.

    • LOCATION: Der Google Cloud-Standort, der dem Nutzercluster zugeordnet ist.

    • ATTRIBUTE_TO_UPDATE: Ein oder mehrere Flags zum Aktualisieren der Knotenpoolattribute. 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, 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

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

    Zu GKE-Clustern

  2. Wählen Sie das Google Cloud-Projekt aus, in dem sich der Nutzercluster befindet.

  3. Klicken Sie in der Clusterliste auf den Namen des Clusters und dann im Bereich Details auf Details ansehen.

  4. Klicken Sie auf den Tab Knoten.

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

  1. Achten Sie darauf, dass auf den betroffenen Knoten keine Arbeitslasten ausgeführt werden.

  2. Entfernen Sie seine Definition aus dem Abschnitt nodePools der Konfigurationsdatei des Nutzerclusters.

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

  1. Achten Sie darauf, dass auf den betroffenen Knoten keine Arbeitslasten ausgeführt werden.

  2. Rufen Sie in der Console die Seite Google Kubernetes Engine-Cluster auf.

    Zu GKE-Clustern

  3. Wählen Sie das Google Cloud-Projekt aus, in dem sich der Nutzercluster befindet.

  4. Klicken Sie in der Clusterliste auf den Namen des Clusters und dann im Bereich Details auf Details ansehen.

  5. Klicken Sie auf den Tab Knoten.

  6. Klicken Sie auf den Namen des Knotenpools, den Sie löschen möchten.

  7. Klicken Sie auf Löschen.

  8. Klicken Sie auf , um zur vorherigen Seite zurückzukehren.

  9. In der Google Cloud Console wird Clusterstatus: Änderungen in Bearbeitung angezeigt. Klicken Sie auf Details ansehen, um die Ressourcenstatusbedingung und Statusmeldungen aufzurufen.

gcloud-CLI

  1. Optional können Sie die Knotenpools auflisten, um den Namen des Knotenpools zu erhalten, den Sie löschen möchten:

    gcloud container vmware node-pools list \
      --cluster=USER_CLUSTER_NAME \
      --project=FLEET_HOST_PROJECT_ID \
      --location=LOCATION
    
  2. 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 Nutzerclusters, 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:

    1. Führen Sie kubectl get nodes aus, um den Status Ihrer Knoten abzurufen.
    2. Führen Sie für alle Knoten, die nicht bereit sind, kubectl describe node NODE_NAME aus, um Details zu erfahren.