Knotenpools erstellen und verwalten

In einem Nutzercluster können Sie eine Gruppe von Knoten mit derselben Konfiguration erstellen. Dazu füllen Sie den Abschnitt nodePools der Clusterkonfigurationsdatei aus. Sie können den Knotenpool dann verwalten, ohne dass sich dies auf die anderen Knoten im Cluster auswirkt. Knotenpools

Hinweis

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.

Sie können das Feld replicas eines nodePool-Abschnitts aktualisieren, ohne Arbeitslasten zu unterbrechen. Wenn Sie jedoch andere Felder aktualisieren, werden die Knoten im Pool gelöscht und neu erstellt.

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)

Wenn Sie einen nodePool-Abschnitt aktualisieren, erstellt Anthos-Cluster auf VMware einen neuen Knoten und löscht dann einen alten Knoten. Dieser Vorgang wird solange wiederholt, bis alle alten Knoten durch neue Knoten ersetzt wurden. Dies bedeutet, dass der Cluster während des Updates eine zusätzliche IP-Adresse haben muss.

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.

Den Abschnitt nodePools der Cluster-Konfigurationsdatei ausfüllen

Füllen Sie in der Konfigurationsdatei für den Nutzercluster den Abschnitt nodePools aus.

Geben Sie für jeden Knotenpool die folgenden Felder an:

  • nodePools.[i].name
  • nodePools[i].cpus
  • nodePools.[i].memoryMB
  • nodePools.[i].replicas

Die folgenden Felder sind optional:

  • nodePools[i].labels
  • nodePools[i].taints
  • nodePools[i].bootDiskSizeGB
  • nodePools[i].osImageType
  • nodePools[i].vsphere.datastore
  • nodePools[i].vsphere.tags

Knotenpools in einem neuen Cluster erstellen

Füllen Sie in der Konfigurationsdatei des Nutzerclusters den Abschnitt nodePools aus und erstellen Sie dann den Cluster:

gkectl create cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG

Ersetzen Sie Folgendes:

  • ADMIN_CLUSTER_KUBECONFIG ist die kubeconfig-Datei für den Administratorcluster

  • USER_CLUSTER_CONFIG ist die Konfigurationsdatei des Nutzerclusters

Knotenpools in einem vorhandenen Cluster aktualisieren

Bearbeiten Sie in der Konfigurationsdatei des Nutzerclusters den Abschnitt nodePools und aktualisieren Sie dann den Cluster:

gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG

Änderungen prüfen

Sehen Sie sich die Clusterknoten an, um sicherzustellen, dass Ihre Knotenpools wie vorgesehen erstellt oder aktualisiert wurden:

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.

Knotenpool löschen

So löschen Sie einen Knotenpool aus einem Nutzercluster:

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

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

  3. Aktualisieren Sie den Cluster:

    gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG
    

Beispiele

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

Problembehebung

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