Knotenpools erstellen und verwalten

Ab GKE On-Prem-Version 1.3 können Sie einen Knotenpool erstellen, um eine Gruppe von Knoten in Ihren Nutzerclustern zu definieren, die alle dieselbe Konfiguration haben. Sie können diesen Knotenpool dann separat verwalten, ohne die anderen Knoten in den einzelnen Clustern zu beeinflussen. Knotenpools

In den Konfigurationsdateien Ihrer Nutzercluster können ein oder mehrere Knotenpools definiert werden. Beim Erstellen eines Knotenpools werden in jedem Cluster zusätzliche Knoten erstellt. Die Knotenpoolverwaltung erfolgt über die Konfigurationsdatei Ihres Nutzerclusters, einschließlich des Erstellens, Aktualisierens und Löschens von Knotenpools. Nachdem die Knotenpools in Ihren Konfigurationsdateien definiert wurden, stellen Sie diese Änderungen mit dem Befehl gkectl update cluster in Ihren Clustern bereit. Die Änderungen, die Sie bereitstellen, werden sofort im jeweiligen Nutzercluster ausgeführt. Wenn Sie beispielsweise einen Knotenpool aus einem Cluster entfernen, werden diese Knoten sofort gelöscht, unabhängig davon, ob einer dieser Knoten eine Arbeitslast ausführt.

Beispiel für einen Knotenpool:

nodepools:
  - name: pool-1
    cpus: 4
    memorymb: 8192
    replicas: 5

Tipp für Neuinstallationen: Erstellen Sie Ihren ersten Nutzercluster und definieren Sie Ihre Knotenpools in diesem Cluster. Erstellen Sie dann mithilfe der Konfigurationsdatei dieses Clusters weitere Nutzercluster mit denselben Knotenpooleinstellungen.

Hinweis

  • Unterstützung:

    • Es werden nur Nutzercluster der Version 1.3.0 oder höher unterstützt.

    • Knotenpools in Administratorclustern werden nicht unterstützt.

    • Der Befehl gkectl update cluster unterstützt derzeit nur die Verwaltung von Knotenpools. Alle anderen Änderungen in der Konfigurationsdatei werden ignoriert.

    • Während die Knoten in einem Knotenpool separat von den anderen Knoten in den einzelnen Nutzerclustern verwaltet werden können, lassen sich die Knoten eines Clusters nicht separat upgraden. Für alle Knoten wird ein Upgrade durchgeführt, wenn Sie Ihre Cluster upgraden.

  • Ressourcen:

    • Sie können nur Änderungen am Knotenpool replicas bereitstellen, ohne dass die Arbeitslast eines Knotens unterbrochen wird.

      Wichtig: Wenn Sie eine andere Änderung an der Knotenpoolkonfiguration bereitstellen, werden die Knoten im Knotenpool neu erstellt. In keinem Knotenpool sollte eine Arbeitslast ausgeführt werden, die nicht unterbrochen werden darf.

    • Wenn Sie Ihre Knotenpooländerungen bereitstellen, wird möglicherweise ein temporärer Knoten erstellt. Sie müssen für diesen temporären Knoten prüfen, ob eine IP-Adresse verfügbar ist.

Knotenpools erstellen und aktualisieren

Sie verwalten einen Knotenpool, indem Sie die Konfigurationsdatei Ihres Nutzerclusters ändern und bereitstellen. Sie können für jeden Nutzercluster einen oder mehrere Knotenpools erstellen und bereitstellen.

So erstellen oder aktualisieren Sie Knotenpools:

  1. Öffnen Sie in einem Editor die Konfigurationsdatei des Nutzerclusters, in dem Sie Knotenpools erstellen oder aktualisieren möchten.

  2. Definieren Sie einen oder mehrere Knotenpools in der Konfigurationsdatei im Abschnitt nodepools unter usercluster:

    1. Konfigurieren Sie die mindestens erforderlichen Knotenpoolattribute. Sie müssen für jeden Knotenpool die folgenden Attribute angeben:

      • usercluster.nodepools.name: gibt einen eindeutigen Namen für den Knotenpool an. Beim Aktualisieren dieses Attributs wird der Knoten neu erstellt. Beispiel: name: pool-1

      • usercluster.nodepools.cpus: gibt an, wie viele CPUs den einzelnen Worker-Knoten des Nutzerclusters zugeordnet werden sollen. Beim Aktualisieren dieses Attributs wird der Knoten neu erstellt. Beispiel: cpus: 4

      • usercluster.nodepools.memorymb: gibt an, wie viel Arbeitsspeicher (in Megabyte) den einzelnen Worker-Knoten des Nutzerclusters zugewiesen wird. Beim Aktualisieren dieses Attributs wird der Knoten neu erstellt. Beispiel: memorymb: 8192

      • usercluster.nodepools.replicas: gibt die Gesamtzahl der Worker-Knoten an, die der Nutzercluster zum Ausführen von Arbeitslasten verwendet. Sie können dieses Attribut aktualisieren, ohne dass es Auswirkungen auf Knoten oder laufende Arbeitslasten hat. Beispiel: replicas: 5

      Beachten Sie Folgendes: Einige der nodepools-Attribute stimmen zwar mit denen von workernode überein (DHCP | Statische IP-Adressen), der Abschnitt workernode ist jedoch für jeden Nutzercluster erforderlich. Sie können workernode weder entfernen noch durch nodepools ersetzen.

      Beispiel:

      nodepools:
        - name: pool-1
          cpus: 4
          memorymb: 8192
          replicas: 5
      

      Unter Beispiele finden Sie ein Konfigurationsbeispiel mit mehreren Knotenpools.

    2. Konfigurieren Sie optionale Knotenpoolattribute. Sie können der Knotenpoolkonfiguration Labels und Markierungen hinzufügen, um Knotenarbeitslasten zu steuern. Sie können auch definieren, welcher vSphere-Datenspeicher von Ihrem Knotenpool verwendet wird.

      • usercluster.nodepools.labels: gibt ein oder mehrere key : value-Paare an, um Ihre Knotenpools eindeutig zu identifizieren. key und value können jeweils bis zu 63 Zeichen umfassen, müssen mit einem Buchstaben oder einer Ziffer beginnen und können Buchstaben, Ziffern, Bindestriche, Punkte und Unterstriche enthalten.

        Ausführliche Informationen zur Konfiguration finden Sie unter Labels.

        Wichtig: Sie können für ein Label nicht die folgenden Schlüssel angeben, da sie für die Verwendung durch GKE On-Prem reserviert sind: kubernetes.io, k8s.io und googleapis.com.

        Beispiel:

        labels:
          key1: value1
          key2: value2
        
      • usercluster.nodepools.taints: gibt einen key, value und effect an, um taints (Markierungen) für Ihre Knotenpools zu definieren. Diese taints entsprechen den tolerations, die Sie für Ihre Pods konfigurieren.

        Die Angabe von key ist erforderlich und value ist optional. Beides kann jeweils bis zu 253 Zeichen umfassen, muss mit einem Buchstaben oder einer Ziffer beginnen und kann Buchstaben, Ziffern, Bindestriche, Punkte und Unterstriche enthalten. Optional können Sie einem key eine DNS-Subdomain gefolgt von einem Schrägstrich (/) voranstellen. Beispiel: example.com/my-app.

        Gültige Werte für effect sind NoSchedule, PreferNoSchedule und NoExecute.

        Ausführliche Informationen zur Konfiguration finden Sie unter Markierungen.

        Beispiel:

        taints:
          - key: key1
            value: value1
            effect: NoSchedule
        
      • usercluster.nodepools.vsphere.datastore: gibt den mit dem Knotenpool zu verwendenden vSphere-Datenspeicher an. Dies überschreibt die Angabe zum Standard-vSphere-Datenspeicher des Nutzerclusters.

        Beispiel:

        vsphere:
          datastore: datastore_name
        

    Unter Beispiele finden Sie ein Konfigurationsbeispiel mit mehreren Knotenpools.

  3. Verwenden Sie den Befehl gkectl update cluster, um Ihre Änderungen im Nutzercluster bereitzustellen.

    Hinweis: gkectl update cluster unterstützt nur die Verwaltung von Knotenpools. Es werden nur Änderungen am Abschnitt nodepools bereitgestellt. Alle anderen Änderungen in Ihrer Konfigurationsdatei werden ignoriert.

    gkectl update cluster --kubeconfig [ADMIN_CLUSTER_KUBECONFIG] --config config.yaml --dry-run --yes
    
    Dabei gilt:
    • [ADMIN_CLUSTER_KUBECONFIG]: gibt die kubeconfig-Datei Ihres Administratorclusters an.
    • config.yaml: gibt das bearbeitete configuration file des Nutzerclusters an. Möglicherweise haben Sie für diese Datei einen anderen Namen ausgewählt.
    • --dry-run: optionales Flag. Fügen Sie dieses Flag hinzu, um nur die Änderung zu sehen. Es werden keine Änderungen im Nutzercluster bereitgestellt.
    • --yes: optionales Flag. Fügen Sie dieses Flag hinzu, damit der Befehl automatisch ausgeführt wird. Die Eingabeaufforderung mit der Frage, ob Sie fortfahren möchten, ist deaktiviert.

    Wenn Sie den Befehl vorzeitig abbrechen, können Sie denselben Befehl noch einmal ausführen, um den Vorgang abzuschließen und Ihre Änderungen im Nutzercluster bereitzustellen.

    Wenn Sie Ihre Änderungen rückgängig machen möchten, müssen Sie die Änderungen in der Konfigurationsdatei rückgängig machen und diese Änderungen dann noch einmal in Ihrem Nutzercluster bereitstellen.

  4. Prüfen Sie alle Knoten daraufhin, ob die Änderungen erfolgreich waren. Führen Sie den folgenden Befehl aus, um alle Knoten im Nutzercluster aufzulisten:

    kubectl --kubeconfig [USER_CLUSTER_KUBECONFIG] get nodes -o wide
    

    Dabei ist [USER_CLUSTER_KUBECONFIG] die kubeconfig-Datei des Nutzerclusters.

Knotenpools löschen

So entfernen Sie Knotenpools aus einem Nutzercluster:

  1. Entfernen Sie alle nodepools-Einstellungen aus der Konfigurationsdatei des Nutzerclusters. Wenn mehrere Knotenpools vorhanden sind, müssen Sie alle Einstellungen entfernen.

  2. Achten Sie darauf, dass keine Arbeitslasten ausgeführt werden. Alle betroffenen Knoten werden gelöscht.

  3. Stellen Sie die Änderungen mit dem Befehl gkectl update cluster bereit:

    gkectl update cluster --kubeconfig [ADMIN_CLUSTER_KUBECONFIG] --config config.yaml --dry-run --yes
    
    Dabei gilt:
    • [ADMIN_CLUSTER_KUBECONFIG]: gibt die kubeconfig-Datei Ihres Administratorclusters an.
    • config.yaml: gibt das bearbeitete configuration file des Nutzerclusters an. Möglicherweise haben Sie für diese Datei einen anderen Namen ausgewählt.
    • --dry-run: optionales Flag. Fügen Sie dieses Flag hinzu, um nur die Änderung zu sehen. Es werden keine Änderungen im Nutzercluster bereitgestellt.
    • --yes: optionales Flag. Fügen Sie dieses Flag hinzu, damit der Befehl automatisch ausgeführt wird. Die Eingabeaufforderung mit der Frage, ob Sie fortfahren möchten, ist deaktiviert.
  4. Prüfen Sie alle Knoten daraufhin, ob die Änderungen erfolgreich waren. Führen Sie den folgenden Befehl aus, um alle Knoten im Nutzercluster aufzulisten:

    kubectl --kubeconfig [USER_CLUSTER_KUBECONFIG] get nodes -o wide
    

    Dabei ist [USER_CLUSTER_KUBECONFIG] die kubeconfig-Datei des Nutzerclusters.

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-Datenspeicher
  • pool-3: enthält Markierungen und Labels
  • pool-4: enthält alle Attribute
...
usercluster:
  ...
  workernode:
    cpus: 4
    memorymb: 8192
    replicas: 3
  # (Optional) Node pools with customizable labels, taints, etc.
  nodepools:
    - name: pool-1
      cpus: 4
      memorymb: 8192
      replicas: 5
    - name: pool-2
      cpus: 8
      memorymb: 16384
      replicas: 3
      vsphere:
        datastore: my_datastore
    - name: pool-3
      cpus: 4
      memorymb: 8192
      replicas: 5
      taints:
        - key: "example-key"
          effect: NoSchedule
      labels:
        environment: production
        app: nginx
    - name: pool-4
      cpus: 8
      memorymb: 16384
      replicas: 3
      taints:
        - key: "my_key"
          value: my_value1
          effect: NoExecute
      labels:
        environment: test
      vsphere:
        datastore: my_datastore
...

Hier finden Sie ein vollständiges Beispiel für die Konfigurationsdatei des Nutzerclusters.

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.