Knotenpools verwalten

Ein Knotenpool besteht aus einer Gruppe von Knoten in einem Kubernetes-Cluster, die alle dieselbe Konfiguration haben. Knotenpools verwenden eine NodePool-Spezifikation. Jeder Knoten im Pool hat ein Kubernetes-Knotenlabel, das den Namen des Knotenpools als Wert enthält. Standardmäßig führen alle neuen Knotenpools dieselbe Version von Kubernetes wie die Steuerungsebene aus.

Wenn Sie einen Kubernetes-Cluster erstellen, wird die Anzahl der Knoten und der angegebene Knotentyp zum Erstellen des ersten Knotenpools verwendet. Sie können Ihrem Cluster weitere Knotenpools unterschiedlicher Größen und Typen hinzufügen. Alle Knoten in einem gegebenen Knotenpool sind identisch.

Benutzerdefinierte Knotenpools sind nützlich, wenn Sie Pods planen müssen, die mehr Ressourcen benötigen als andere, z. B. mehr Arbeitsspeicher oder lokalen Speicherplatz. Sie können Knotenmarkierungen verwenden, wenn Sie mehr Kontrolle über die Planung der Pods benötigen.

Sie können Knotenpools einzeln erstellen und löschen, ohne dass sich dies auf den gesamten Cluster auswirkt. Ein einzelner Knoten lässt sich in einem Knotenpool nicht konfigurieren. Alle Konfigurationsänderungen wirken sich auf sämtliche Knoten im Knotenpool aus.

Sie können die Größe von Knotenpools in einem Cluster anpassen, indem Sie den Pool hoch- oder herunterskalieren. Das Herunterskalieren eines Knotenpools ist ein automatisierter Prozess, bei dem Sie die Poolgröße verringern und das GDC-System automatisch einen beliebigen Knoten leert und entfernt. Beim Herunterskalieren eines Knotenpools können Sie keinen bestimmten Knoten zum Entfernen auswählen.

Hinweise

Zum Ansehen und Verwalten von Knotenpools in einem Kubernetes-Cluster benötigen Sie die folgenden Rollen:

  • Nutzerclusteradministrator (user-cluster-admin)
  • Betrachter für Nutzerclusterknoten (user-cluster-node-viewer)

Diese Rollen sind nicht an einen Namespace gebunden.

Knotenpool hinzufügen

Wenn Sie einen Kubernetes-Cluster über die GDC-Konsole erstellen, können Sie den Standardknotenpool anpassen und zusätzliche Knotenpools erstellen, bevor die Clustererstellung initialisiert wird. Wenn Sie einem vorhandenen Kubernetes-Cluster einen Knotenpool hinzufügen müssen, führen Sie die folgenden Schritte aus:

Console

  1. Wählen Sie im Navigationsmenü Kubernetes Engine > Cluster aus.
  2. Klicken Sie in der Clusterliste auf den Cluster. Die Seite Clusterdetails wird angezeigt.
  3. Wählen Sie Knotenpools > Knotenpool hinzufügen aus.
  4. Weisen Sie dem Knotenpool einen Namen zu. Sie können den Namen nach dem Erstellen des Knotenpools nicht mehr ändern.
  5. Geben Sie die Anzahl der Worker-Knoten an, die im Knotenpool erstellt werden sollen.
  6. Wählen Sie die Maschinenklasse aus, die Ihren Arbeitslastanforderungen am besten entspricht. Die Maschinenklassen werden in den folgenden Einstellungen angezeigt:
    • Maschinentyp
    • vCPU
    • Arbeitsspeicher
  7. Klicken Sie auf Speichern.

API

  1. Öffnen Sie die benutzerdefinierte Ressourcenspezifikation Cluster mit der kubectl-Befehlszeile über den interaktiven Editor:

    kubectl edit clusters.cluster.gdc.goog/KUBERNETES_CLUSTER_NAME -n platform \
        --kubeconfig MANAGEMENT_API_SERVER
    

    Ersetzen Sie Folgendes:

    • KUBERNETES_CLUSTER_NAME: Der Name des Clusters.
    • MANAGEMENT_API_SERVER: Der Kubeconfig-Pfad des zonalen API-Servers, auf dem der Kubernetes-Cluster gehostet wird. Wenn Sie noch keine kubeconfig-Datei für den API-Server in Ihrer Zielzone generiert haben, finden Sie weitere Informationen unter Anmelden.
  2. Fügen Sie im Abschnitt nodePools einen neuen Eintrag hinzu:

    nodePools:
    ...
    - machineTypeName: MACHINE_TYPE
      name: NODE_POOL_NAME
      nodeCount: NUMBER_OF_WORKER_NODES
      taints: TAINTS
      labels: LABELS
      acceleratorOptions:
        gpuPartitionScheme: GPU_PARTITION_SCHEME
    

    Ersetzen Sie Folgendes:

    • MACHINE_TYPE: Der Maschinentyp für die Worker-Knoten des Knotenpools. Hier finden Sie die verfügbaren Maschinentypen.
    • NODE_POOL_NAME: Der Name des Knotenpools.
    • NUMBER_OF_WORKER_NODES: Die Anzahl der Worker-Knoten, die im Knotenpool bereitgestellt werden sollen.
    • TAINTS: Die Markierungen, die auf die Knoten dieses Knotenpools angewendet werden sollen. Dieses Feld ist optional.
    • LABELS: Die Labels, die auf die Knoten dieses Knotenpools angewendet werden sollen. Sie enthält eine Liste von Schlüssel/Wert-Paaren. Dieses Feld ist optional.
    • GPU_PARTITION_SCHEME: Das GPU-Partitionierungsschema, wenn Sie GPU-Arbeitslasten ausführen. Beispiel: mixed-2. Die GPU wird nicht partitioniert, wenn dieses Feld nicht festgelegt ist. Informationen zu verfügbaren MIG-Profilen (Multi-Instance GPU) finden Sie unter Unterstützte MIG-Profile.
  3. Speichern Sie die Datei und beenden Sie den Editor.

Knotenpools ansehen

Führen Sie die folgenden Schritte aus, um vorhandene Knotenpools in einem Kubernetes-Cluster aufzurufen:

Console

  1. Wählen Sie im Navigationsmenü Kubernetes Engine > Cluster aus.
  2. Klicken Sie in der Clusterliste auf den Cluster. Die Seite Clusterdetails wird angezeigt.
  3. Wählen Sie Knotenpools aus.

Die Liste der Knotenpools, die im Cluster ausgeführt werden, wird angezeigt. Auf dieser Seite können Sie die Knotenpools des Clusters verwalten.

API

  • So rufen Sie die Knotenpools eines bestimmten Kubernetes-Clusters auf:

    kubectl get clusters.cluster.gdc.goog/KUBERNETES_CLUSTER_NAME -n platform \
        -o json --kubeconfig MANAGEMENT_API_SERVER | \
        jq .status.workerNodePoolStatuses
    

    Die Ausgabe sieht etwa so aus:

    [
      {
        "conditions": [
          {
            "lastTransitionTime": "2023-08-31T22:16:17Z",
            "message": "",
            "observedGeneration": 2,
            "reason": "NodepoolReady",
            "status": "True",
            "type": "Ready"
          },
          {
            "lastTransitionTime": "2023-08-31T22:16:17Z",
            "message": "",
            "observedGeneration": 2,
            "reason": "ReconciliationCompleted",
            "status": "False",
            "type": "Reconciling"
          }
        ],
        "name": "worker-node-pool",
        "readyNodes": 3,
        "readyTimestamp": "2023-08-31T18:59:46Z",
        "reconcilingNodes": 0,
        "stalledNodes": 0,
        "unknownNodes": 0
      }
    ]
    

Knotenpool löschen

Durch das Löschen eines Knotenpools werden dessen Knoten und Routen gelöscht. Auf diesen Knoten werden alle darauf ausgeführten Pods entfernt und neu geplant. Wenn die Pods spezifische Knotenselektoren haben, bleiben die Pods womöglich in einem nicht planbaren Zustand, wenn kein anderer Knoten im Cluster die Kriterien erfüllt.

Achten Sie darauf, dass Sie mindestens drei Worker-Knoten haben, bevor Sie einen Knotenpool löschen. So stellen Sie sicher, dass Ihr Cluster genügend Rechenleistung für einen effektiven Betrieb hat.

So löschen Sie einen Knotenpool:

Console

  1. Wählen Sie im Navigationsmenü Kubernetes Engine > Cluster aus.

  2. Klicken Sie auf den Cluster, in dem sich der Knotenpool befindet, den Sie löschen möchten.

  3. Wählen Sie Knotenpools aus.

  4. Klicken Sie neben dem zu löschenden Knotenpool auf  Löschen.

API

  1. Öffnen Sie die benutzerdefinierte Ressourcenspezifikation Cluster mit der kubectl-Befehlszeile über den interaktiven Editor:

    kubectl edit clusters.cluster.gdc.goog/KUBERNETES_CLUSTER_NAME -n platform \
          --kubeconfig MANAGEMENT_API_SERVER
    

    Ersetzen Sie Folgendes:

    • KUBERNETES_CLUSTER_NAME: Der Name des Clusters.
    • MANAGEMENT_API_SERVER: Der Kubeconfig-Pfad des zonalen API-Servers, auf dem der Kubernetes-Cluster gehostet wird. Wenn Sie noch keine kubeconfig-Datei für den API-Server in Ihrer Zielzone generiert haben, finden Sie weitere Informationen unter Anmelden.
  2. Entfernen Sie den Knotenpooleintrag aus dem Abschnitt nodePools. Im folgenden Snippet müssen Sie beispielsweise die Felder machineTypeName, name und nodeCount entfernen:

    nodePools:
    ...
    - machineTypeName: n2-standard-2-gdc
      name: nodepool-1
      nodeCount: 3
    

    Entfernen Sie alle Felder für den Knotenpool, den Sie löschen.

  3. Speichern Sie die Datei und beenden Sie den Editor.