Knotenpools in einem Cluster verwalten

Ein Knotenpool ist eine Gruppe von Knoten in einem Cluster, die dieselbe Konfiguration haben. Alle Knoten in Anthos-Clustern auf Bare Metal müssen zu einem Knotenpool gehören. In Anthos-Clustern auf Bare Metal 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 wie Sie Worker-Knotenpools hinzufügen und entfernen.

Tool zum Verwalten von Knotenpools auswählen

Wie Sie Knotenpools verwalten, hängt vom Clustertyp und von Nutzerclustern ab, ob der Cluster von der Anthos On-Prem API verwaltet wird. Ein Nutzercluster wird von der Anthos 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 die Anthos On-Prem API automatisch für die Verwaltung des Clusters konfiguriert.

  • Der Cluster wurde mit bmctl erstellt, aber von der Anthos On-Prem API verwaltet.

Wenn die Anthos 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 Anthos On-Prem API verwaltet wird, verwenden Sie kubectl auf der Administratorworkstation, um Knotenpools zu verwalten. Mit kubectl können Sie außerdem Knotenpools für alle Clustertypen verwalten, die Worker-Knotenpools enthalten können (Hybride, eigenständige und Nutzercluster).

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

  1. Mit Google-Konto anmelden

    gcloud auth login
    
  2. Aktualisieren Sie die Komponenten:

    gcloud components update
    

Knotenstatus prüfen

Prüfen Sie den Status der Knoten und der entsprechenden Knotenpools, bevor Sie Knotenpools hinzufügen oder entfernen.

kubectl

Mit kubectl können Sie den Status der 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 den unterschiedlichen Status an, in dem sich ein Knoten befinden kann. Jede Zeile in der Tabelle ist die Anzahl der Knoten pro Knotenpool in jedem Knotenstatus.

Wenn Sie einen Knoten hinzufügen, erhält er anfangs den Status Reconciling, während der Knoten bereitgestellt wird. Nachdem der Knoten Teil des Clusters ist, ändert sich der Knotenstatus in Ready.

Mit dem folgenden Befehl können Sie auch den Status der Knoten im Cluster prüfen:

kubectl get nodes --kubeconfig=PATH_TO_KUBECONFIG

Console

  1. Rufen Sie in der Console die Seite "Anthos-Cluster" auf.

    Zur Seite "Anthos-Cluster"

  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 Weitere Details.

  4. Klicken Sie auf den Tab Knoten.

    Eine Liste der Knotenpools wird angezeigt.

Screenshot-Knotenliste

gcloud-CLI

  1. Listen Sie die Knotenpools im Cluster auf:

    gcloud beta container bare-metal node-pools list \
      --cluster=USER_CLUSTER_NAME \
      --project=FLEET_HOST_PROJECT_ID \
      --location=LOCATION
    

    Ersetzen Sie Folgendes:

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

  2. Knotenpool beschreiben:

    gcloud beta 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 zur Diagnose von Clustern finden Sie unter Snapshots zur Diagnose von Clustern erstellen.

Neuen Knotenpool hinzufügen

kubectl

Beachten Sie beim Hinzufügen eines Knotenpools zu einem Cluster die folgenden Regeln:

  • Ein Administratorcluster kann einen Knotenpool mit Load-Balancer und einen Knotenpool der Steuerungsebene enthalten, jedoch keinen Worker-Knotenpool: Wenn Sie versuchen, einem Administratorcluster einen Worker-Knotenpool hinzuzufügen, tritt ein Fehler auf.

  • Ein Cluster kann nur einen einzigen Knotenpool der Steuerungsebene und einen einzelnen Knotenpool des Load-Balancers enthalten. Sie können einem Cluster keine zusätzlichen Steuerungsebenen oder Load-Balancing-Knotenpools hinzufügen.

Sie fügen einem Cluster neue Knotenpools hinzu. Erstellen Sie dazu 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 sie mit dem folgenden Befehl auf den Cluster an:

kubectl apply -f machine-learning-pool.yaml

Beim Hinzufügen eines Knotenpools zu einem Cluster sollten Sie Folgendes beachten:

  • NodePool.spec.taints- und NodePool.spec.labels-Konfigurationen werden mit Knoten abgeglichen. Alle Markierungen und Labels, die den Knoten direkt hinzugefügt werden, werden entfernt. Die Markierungen und Labels, die Sie während der Synchronisierung direkt hinzufügen, werden von der Steuerungsebene nicht entfernt. Wenn Sie diesen Abgleich umgehen möchten, können Sie den Knoten mit baremetal.cluster.gke.io/label-taint-no-sync annotieren.

  • Die Knotenpoolressource muss im selben Namespace erstellt werden wie der zugehörige Cluster und die Knotenpoolressource muss auf den Clusternamen im Feld spec.clusterName verweisen.

Console

  1. Rufen Sie in der Google Cloud Console die Anthos-Seite Cluster auf.

    Zur Seite "Anthos-Cluster"

  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 Weitere Details.

  4. Klicken Sie auf Knotenpool hinzufügen .

  5. Geben Sie einen Namen für den Knotenpool ein.

  6. Geben Sie in das Feld Knotenadresse 1 die IP-Adresse des Worker-Knotencomputers ein.

    Wenn Sie mehrere Worker-Knotenmaschinen hinzufügen möchten, klicken Sie auf Adresse hinzufügen.

  7. Fügen Sie optional Kubernetes-Labels und/oder Kubernetes-Markierungen hinzu.

  8. Klicken Sie auf Erstellen.

Der Status des Knotenpools wird auf dem Tab Knoten angezeigt. Möglicherweise müssen Sie die Seite aktualisieren, damit ein aktualisierter Status angezeigt wird.

gcloud-CLI

gcloud beta 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 ist 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, 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.

  • --validate-only Geben Sie dieses Flag an, wenn Sie das Erstellen validieren, aber keine Änderungen vornehmen möchten.

Knotenpool aktualisieren

kubectl

Sie aktualisieren einen Knotenpool, indem Sie die Ressource nodepools.baremetal.cluster.gke.io im Cluster ändern. Sie können die Ressource direkt mit kubectl edit oder die YAML-Datei aktualisieren und kubectl apply verwenden.

Console

  1. Rufen Sie in der Console die Seite "Anthos-Cluster" auf.

    Zur Seite "Anthos-Cluster"

  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 Weitere Details.

  4. Klicken Sie auf den Tab Knoten.

  5. Klicken Sie in der Liste auf den Knotenpool, den Sie aktualisieren möchten.

  6. Klicken Sie auf der Seite Knotenpooldetails auf Bearbeiten.

  7. Ändern Sie die Einstellungen nach Bedarf und klicken Sie auf Speichern.

gcloud-CLI

  1. Optional können Sie die Knotenpools im Cluster auflisten, um den Namen des Knotenpools zu erhalten, den Sie aktualisieren möchten.

    gcloud beta container bare-metal node-pools list \
      --cluster=USER_CLUSTER_NAME \
      --project=FLEET_HOST_PROJECT_ID \
      --location=LOCATION
    

    Ersetzen Sie Folgendes:

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

  2. Führen Sie dazu diesen Befehl aus:

    gcloud beta 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 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.

  • --validate-only Geben Sie dieses Flag an, wenn Sie die Aktualisierung validieren, aber keine Änderungen vornehmen möchten.

Beispiel:

gcloud beta 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. Verwenden Sie beispielsweise den folgenden Befehl, um den im vorherigen Abschnitt hinzugefügten Knotenpool machine-learning-pool zu entfernen:

kubectl delete nodepool machine-learning-pool -n cluster-abm-cluster

Beachten Sie, dass Knotenpools der Steuerungsebene und Knotenpools des Load-Balancers für die Funktion eines Clusters entscheidend sind und folglich nicht aus einem Cluster entfernt werden können.

Console

  1. Rufen Sie in der Google Cloud Console die Anthos-Seite Cluster auf.

    Zur Seite "Anthos-Cluster"

  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 Weitere Details.

  4. Klicken Sie auf den Tab Knoten und dann auf den Knotenpool, den Sie löschen möchten.

  5. Klicken Sie auf Löschen.

  6. Geben Sie im Dialogfeld zur Bestätigung den Namen des Knotenpools ein und klicken Sie auf Bestätigen.

gcloud-CLI

gcloud beta 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: 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 Ihre 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 in einem Cluster hinzufügen oder entfernen.