Skalieren von Clustern

In diesem Thema wird erläutert, wie Sie Tanzu Kubernetes Grid (TKG)-Arbeitslastcluster und eigenständige Verwaltungscluster mithilfe der folgenden Methoden skalieren können:

  • Autoscaler: Für Arbeitslastcluster, die von einem eigenständigen Verwaltungscluster bereitgestellt werden, können Sie Cluster Autoscaler einsetzen, um die Anzahl der Worker-Knoten automatisch zu skalieren, um sie an den Bedarf anzupassen. Weitere Informationen finden Sie unter Skalieren von Worker-Knoten mit Cluster Autoscaler.

    Sie können Autoscaler nicht zum Skalieren von Arbeitslastclustern, die von einem Supervisor-Cluster bereitgestellt werden, verwenden.

  • Horizontal skalieren: Für Arbeitslastcluster oder eigenständige Verwaltungscluster können Sie die Anzahl der Steuerungsebenen- und Worker-Knoten manuell skalieren. Weitere Informationen finden Sie unter Horizontales Skalieren eines Clusters.

  • Vertikal skalieren: Für Arbeitslastcluster können Sie die Größe der Steuerungsebenen- und Worker-Knoten manuell ändern. Weitere Informationen finden Sie unter Vertikales Skalieren eines Clusters.

Hinweis

Informationen zum Skalieren von Knoten in einem Knotenpool finden Sie unter Aktualisieren von Knotenpools in Verwalten von Knotenpools verschiedener VM-Typen.

Skalieren von Worker-Knoten mit Cluster Autoscaler (eigenständiger MC)

Cluster Autoscaler ist ein Kubernetes-Programm, das Kubernetes-Cluster automatisch in Abhängigkeit von den Anforderungen an die Arbeitslastcluster skaliert. Verwenden Sie Cluster Autoscaler nur für Arbeitslastcluster, die von einem eigenständigen Verwaltungscluster bereitgestellt werden.

Weitere Informationen zu Cluster Autoscaler finden Sie in der folgenden Dokumentation in GitHub:

Standardmäßig ist Cluster Autoscaler in Tanzu Kubernetes Grid deaktiviert. Um Cluster Autoscaler in einem Arbeitslastcluster zu aktivieren, setzen Sie den ENABLE_AUTOSCALER auf true und legen Sie die AUTOSCALER_-Optionen in der Clusterkonfigurationsdatei oder als Umgebungsvariable fest, bevor Sie tanzu cluster create --file ausführen.

Wichtig

Für class-basierte Cluster: Aufgrund eines Bezeichnungs-Weitergabeproblems in der Cluster-API müssen Sie nach dem Erstellen eines klassenbasierten Arbeitslastclusters manuell Anmerkungen über min-size und max-size zu seinen MachineDeployment-Objekten hinzufügen, um Cluster Autoscaler zu aktivieren, wie unter (Manuelles Hinzufügen von Anmerkungen für minimale und maximale Größe)[#cc-Problemumgehung] unten beschrieben.

Jede Cluster Autoscaler-Konfigurationsvariable in einer Clusterkonfigurationsdatei entspricht einem Parameter im Cluster Autoscaler-Tool. Eine Liste dieser Variablen und deren Standardwerte finden Sie unter Cluster Autoscaler in der Variablenreferenz für Konfigurationsdatei.

Die Einstellungen AUTOSCALER_*_SIZE begrenzen die Anzahl der Worker-Knoten in einem Cluster, während AUTOSCALER_MAX_NODES_TOTAL die Anzahl aller Knoten sowohl der Worker- als auch der Steuerungsebene beschränkt.

Legen Sie je nach Anzahl der Worker-Knoten im Cluster AUTOSCALER_*_SIZE-Werte fest:

  • Legen Sie für Cluster mit einem einzelnen Worker-Knoten, wie z. B. dev-Clustern, AUTOSCALER_MIN_SIZE_0 und AUTOSCALER_MAX_SIZE_0 fest.
  • Legen Sie für Cluster mit mehreren Worker-Knoten, wie z. B. prod-Clustern, Folgendes fest:
    • AUTOSCALER_MIN_SIZE_0 und AUTOSCALER_MAX_SIZE_0
    • AUTOSCALER_MIN_SIZE_1 und AUTOSCALER_MAX_SIZE_1
    • AUTOSCALER_MIN_SIZE_2 und AUTOSCALER_MAX_SIZE_2

Im Folgenden finden Sie ein Beispiel für Cluster Autoscaler-Einstellungen des Clusters in einer Clusterkonfigurationsdatei. Sie können diese Werte nach der Bereitstellung des Clusters nicht mehr ändern.

#! ---------------------------------------------------------------------
#! Autoscaler related configuration
#! ---------------------------------------------------------------------
ENABLE_AUTOSCALER: false
AUTOSCALER_MAX_NODES_TOTAL: "0"
AUTOSCALER_SCALE_DOWN_DELAY_AFTER_ADD: "10m"
AUTOSCALER_SCALE_DOWN_DELAY_AFTER_DELETE: "10s"
AUTOSCALER_SCALE_DOWN_DELAY_AFTER_FAILURE: "3m"
AUTOSCALER_SCALE_DOWN_UNNEEDED_TIME: "10m"
AUTOSCALER_MAX_NODE_PROVISION_TIME: "15m"
AUTOSCALER_MIN_SIZE_0:
AUTOSCALER_MAX_SIZE_0:
AUTOSCALER_MIN_SIZE_1:
AUTOSCALER_MAX_SIZE_1:
AUTOSCALER_MIN_SIZE_2:
AUTOSCALER_MAX_SIZE_2:

Für jeden Arbeitslastcluster, der mit aktiviertem Cluster Autoscaler erstellt wurde, erstellt Tanzu Kubernetes Grid eine Cluster Autoscaler-Bereitstellung im Verwaltungscluster. Um Cluster Autoscaler zu deaktivieren, löschen Sie die Cluster Autoscaler-Bereitstellung, die Ihrem Arbeitslastcluster zugeordnet ist.

Manuelles Hinzufügen von Anmerkungen für minimale und maximale Größe

Nachdem Sie einen klassenbasierten Arbeitslastcluster erstellt haben, für den Cluster Autoscaler aktiviert ist, müssen Sie aufgrund eines Bezeichnungs-Weitergabeproblems in der Cluster-API Anmerkungen zu min-size und max-size manuell wie folgt zu seinen MachineDeployment-Objekten hinzufügen:

  1. Legen Sie den Kontext von kubectl auf Ihren Verwaltungscluster fest:

    kubectl config use-context MY-MGMT-CLUSTER-admin@MY-MGMT-CLUSTER
    

    Dabei ist MY-MGMT-CLUSTER der Name Ihres Verwaltungsclusters.

  2. Listen Sie die MachineDeployment-Objekte auf und notieren Sie deren AGE-Wert:

    kubectl get md
    

    Die Objektnamen enden auf -md, gefolgt von einer Zahl für jede Verfügbarkeitszone (Availability Zone, AZ).

  3. Für jede neu erstellte MachineDeployment im Cluster:

    1. Fügen Sie eine Anmerkung zu min-size hinzu:

      kubectl annotate machinedeployment MD-NAME cluster.k8s.io/cluster-api-autoscaler-node-group-min-size="MIN-SIZE"
      

      Dabei gilt:

      • MD-NAME ist der Name des MachineDeployment-Objekts, z. B. my-wc-md-0
      • MIN-SIZE ist der AUTOSCALER_MIN_SIZE_*-Wert für die Verfügbarkeitszone, z. B. der Wert AUTOSCALER_MIN_SIZE_0 für *-md0, der in der ersten Verfügbarkeitszone bereitgestellt wird.
    2. Fügen Sie eine Anmerkung zu max-size hinzu:

      kubectl annotate machinedeployment MD-NAME cluster.k8s.io/cluster-api-autoscaler-node-group-max-size="MAX-SIZE"
      

      Dabei ist MAX-SIZE die maximale Anzahl der MachineDeployment-Knoten für die AZ wie oben angegeben.

Horizontales Skalieren eines Clusters

Sie können einen TKG-Cluster je nach Clustertyp auf zwei Arten horizontal skalieren:

  • Alle Cluster Verwenden Sie die Tanzu CLI, wie im Anschluss beschrieben
  • Klassenbasierte Arbeitslastcluster Ändern Sie die Einstellungen für replicas in der Clusterdefinition, wie nachfolgend im Abschnitt Skalieren eines klassenbasierten Clusters beschrieben.

Um einen Arbeitslastcluster oder einen eigenständigen Verwaltungscluster horizontal mit der Tanzu CLI zu skalieren, führen Sie den Befehl tanzu cluster scale aus.

Wichtig

Ändern Sie den Kontext nicht und bearbeiten Sie die Datei .kube-tkg/config nicht, während Tanzu Kubernetes Grid-Vorgänge ausgeführt werden.

  • Steuerungsebenen- und Worker-Knoten: Die Optionen --controlplane-machine-count und --worker-machine-count legen die neue Anzahl der Steuerungsebenen- bzw. Worker-Knoten fest.
  • Beispiele:

    • So skalieren Sie einen Cluster auf 5 Knoten der Steuerungsebene und 10 Worker-Knoten.

      tanzu cluster scale MY-CLUSTER --controlplane-machine-count 5 --worker-machine-count 10
      

      Wenn Sie einen Cluster mit --controlplane-machine-count 1 bereitgestellt haben und ihn dann auf bis zu 3 Knoten der Steuerungsebene hochskalieren, aktiviert Tanzu Kubernetes Grid automatisch gestapelte HA auf der Steuerungsebene.

    • Wenn der Cluster in einem anderen Namespace als default ausgeführt wird, müssen Sie die Option --namespace hinzufügen:

      tanzu cluster scale MY-CLUSTER --controlplane-machine-count 5 --worker-machine-count 10 --namespace=MY-NAMESPACE
      
  • vSphere mit eigenständigem Verwaltungscluster: Nach dem Ändern der Knotenanzahl eines Clusters auf vSphere mit einem eigenständigen Verwaltungscluster müssen die DHCP-Reservierungen aller hinzugefügten oder entfernten IP-Adressen reserviert oder freigegeben werden. Informationen zum manuellen Ändern dieser Reservierungen finden Sie unter Konfigurieren von DHCP-Reservierungen für Knoten und DNS-Datensätzen für Endpoints (nur vSphere). Anweisungen zum Konfigurieren von DHCP-Reservierungen finden Sie in der Dokumentation zum DHCP-Server.

  • vSphere mit Supervisor-Cluster Auf Clustern, die in vSphere with Tanzu ausgeführt werden, können Sie nur entweder 1 Knoten der Steuerungsebene oder 3 Knoten der Steuerungsebene ausführen. Sie können die Anzahl der Knoten der Steuerungsebene von 1 auf 3 hochskalieren, aber Sie können die Anzahl nicht von 3 auf 1 herunterskalieren.

Vertikale Skalierung eines Clusters

Wie ein Arbeitslastcluster vertikal skaliert wird, hängt vom Clustertyp ab.

TKC- und planbasierte Cluster

Befolgen Sie den Vorgang Aktualisieren von Infrastruktur-Maschinenvorlagen im Cluster-API-Handbuch, mit dem die Maschinenvorlage des Clusters geändert wird.

Bei diesem Vorgang wird die vorhandene Maschinenvorlage des Clusters mit einem Befehl kubectl get heruntergeladen, den Sie wie folgt erstellen können:

kubectl get MACHINE-TEMPLATE-TYPE MACHINE-TEMPLATE-NAME -o yaml

Dabei gilt:

  • MACHINE-TEMPLATE-TYPE lautet:
    • VsphereMachineTemplate auf vSphere
    • AWSMachineTemplate auf Amazon Web Services (AWS)
    • AzureMachineTemplate auf Azure
  • MACHINE-TEMPLATE-NAME ist der Name der Maschinenvorlage für die Clusterknoten, die Sie skalieren, und hat folgendes Format:
    • CLUSTER-NAME-control-plane für Knoten der Steuerungsebene
    • CLUSTER-NAME-worker für Worker-Knoten

Beispiel:

kubectl get VsphereMachineTemplate monitoring-cluster-worker -o yaml

Klassenbasierte Cluster

Wenn Sie einen klassenbasierten Cluster vertikal skalieren möchten, ändern Sie die machine-Einstellungen in der zugehörigen Clusterdefinition wie unten unter Skalieren eines klassenbasierten Clusters beschrieben.

Skalieren eines klassenbasierten Clusters

So skalieren Sie einen klassenbasierten Cluster horizontal oder vertikal mithilfe seiner topology-Konfiguration:

  1. Setzen Sie kubectl auf den Kontext des Verwaltungsclusters, zum Beispiel:

    kubectl config use-context management-cluster@admin
    
  2. Führen Sie kubectl edit cluster CLUSTER-NAME aus und bearbeiten Sie die Einstellungen in dem zugehörigen topology-Block unter controlPlane und worker.

    Um horizontal zu skalieren, ändern Sie die Einstellungen unter replicas. - Um vertikal zu skalieren, ändern Sie die Einstellungen unter machine.

    Beispiel:

    - name: controlPlane
      value:
        replicas: 3
        machine:
          diskGiB: 20
          memoryMiB: 8192
          numCPUs: 4
    - name: worker
      value:
        replicas: 5
        machine:
          diskGiB: 20
          memoryMiB: 8192
          numCPUs: 4
    
check-circle-line exclamation-circle-line close-line
Scroll to top icon