Lesen Sie diese Anweisungen, um das Paket für die automatische Clusterskalierung mithilfe von „kubectl“ zu installieren und zu konfigurieren.

Anforderungen

Beachten Sie die folgenden Anforderungen.
  • Die vSphere-Mindestversion ist vSphere 8 U3.
  • Die TKr-Mindestversion ist TKr 1.27.x für vSphere 8.
  • Die Nebenversion der TKr und die Nebenversion des Pakets für die automatische Clusterskalierung müssen mit übereinstimmen.
Achtung: Es besteht eine 1:1-Beziehung zwischen der Nebenversion des Pakets für die automatische Skalierung und der TKr-Nebenversion. Wenn Sie beispielsweise TKr 1.27.11 verwenden, sollten Sie v1.27.2 der automatischen Skalierung installieren. Wenn die Version nicht übereinstimmt, schlägt der Paketabgleich fehl.

Konfigurieren des vSphere-Namespace

Schließen Sie die folgenden erforderlichen Aufgaben aus, um einen TKG-Cluster bereitzustellen.

  1. Installieren oder aktualisieren Sie Ihre Umgebung auf vSphere 8 U3 und TKr 1.27.x für vSphere 8.
  2. Erstellen oder aktualisieren Sie eine Inhaltsbibliothek mit den neuesten Tanzu Kubernetes-Versionen. Weitere Informationen hierzu finden Sie unter Verwalten von Kubernetes-Versionen für TKG-Dienst-Cluster.
  3. Erstellen und konfigurieren Sie einen vSphere-Namespace zum Hosten des TKG-Clusters. Weitere Informationen hierzu finden Sie unter Konfigurieren von vSphere-Namespaces für das Hosting von TKG-Dienst-Clustern.
  4. Installieren Sie den Kubernetes-CLI-Tools für vSphere.

    Das folgende Beispiel kann verwendet werden, um die Tools über die Befehlszeile zu installieren. Weitere Anleitungen finden Sie unter Installieren des Kubernetes-CLI-Tools für vSphere.

    curl -LOk https://${SUPERVISOR_IP-or-FQDN}/wcp/plugin/linux-amd64/vsphere-plugin.zip
    unzip vsphere-plugin.zip
    mv -v bin/* /usr/local/bin/
  5. Führen Sie kubectl und kubectl vsphere aus, um die Installation zu überprüfen.

Erstellen eines TKG-Clusters mit Anmerkungen für die automatische Skalierung

Befolgen Sie die Anweisungen, um einen TKG-Cluster zu erstellen. Weitere Anleitungen finden Sie unter Workflow zum Bereitstellen von TKG-Clustern auf mithilfe von Kubectl.

Zum Verwenden der automatischen Skalierung müssen Sie den Cluster mit Bezeichnungsanmerkungen für die automatische Skalierung konfigurieren, wie im hier bereitgestellten Beispiel für die Clusterspezifikation dargestellt. Im Gegensatz zur regulären Clusterbereitstellung wird die Anzahl der Worker-Knotenreplikate nicht hart codiert. Kubernetes verfügt über eine integrierte Standardlogik für die Replikate, die auf den Anmerkungen zur Mindest- und Maximalgröße der automatischen Skalierung basiert. Da es sich um einen neuen Cluster handelt, wird die Mindestgröße zum Erstellen des Clusters verwendet. Weitere Informationen finden Sie unter https://cluster-api.sigs.k8s.io/tasks/automated-machine-management/autoscaling.

  1. Authentifizieren Sie sich mithilfe von kubectl bei Supervisor.
    kubectl vsphere login --server=SUPERVISOR-CONTROL-PLANE-IP-ADDRESS-or-FQDN --vsphere-username USERNAME
  2. Wechseln Sie den Kontext zum Ziel-vSphere-Namespace, der den Cluster hostet.
    kubectl config use-context tkgs-cluster-namespace
  3. Listen Sie die VM-Klassen auf, die im vSphere-Namespace verfügbar sind.

    Sie können nur VM-Klassen verwenden, die an den Ziel-vSphere-Namespace gebunden sind. Weitere Informationen hierzu finden Sie unter Verwenden von VM-Klassen mit TKG-Dienstclustern.

  4. Listen Sie die verfügbaren Klassen persistenter Speicher-Volumes auf.
    kubectl describe namespace VSPHERE-NAMESPACE-NAME

    Der Befehl gibt Details zum vSphere-Namespace zurück, einschließlich der Speicherklasse. Der Befehl kubectl describe storageclasses gibt auch verfügbare Speicherklassen zurück, erfordert jedoch vSphere-Administratorberechtigungen.

  5. Listen Sie die verfügbaren Tanzu Kubernetes-Versionen auf.
    kubectl get tkr

    Dieser Befehl gibt die in diesem vSphere-Namespace verfügbaren TKrs und deren Kompatibilität zurück. Weitere Informationen hierzu finden Sie unter Verwalten von Kubernetes-Versionen für TKG-Dienst-Cluster.

  6. Verwenden Sie die Informationen, die Sie in Erfahrung haben, um eine YAML-Datei für die TKG-Clusterspezifikation mit der erforderlichen Konfiguration für die automatische Clusterskalierung zu erstellen.
    • Verwenden Sie die Anmerkungen *-min-size und *-max-size für die nodePools des Workers. In diesem Beispiel können zwischen 3 und 5 Worker-Knoten skaliert werden. Standardmäßig wird der Cluster mit 3 Worker-Knoten erstellt.
    • Verwenden Sie die passende Nebenversion für die TKr und für das Paket für die automatische Skalierung.
    • Die Werte metadata.name und metadata.namespace für den Cluster stimmen mit den Standardwerten des Pakets für die automatische Skalierung überein. Wenn Sie diese Werte in der Clusterspezifikation ändern, müssen Sie sie in autoscaler-data-values ändern (siehe unten).
    #cc-autoscaler.yaml
    apiVersion: cluster.x-k8s.io/v1beta1
    kind: Cluster
    metadata:
     name: gc1
     namespace: cluster
    spec:
     clusterNetwork:
       pods:
         cidrBlocks:
         - 192.0.2.0/16
       serviceDomain: cluster.local
       services:
         cidrBlocks:
         - 198.51.100.0/12
     topology:
       class: tanzukubernetescluster
       controlPlane:
         metadata: {}
         replicas: 3
       variables:
       - name: storageClasses
         value:
         - wcpglobal-storage-profile
       - name: vmClass
         value: guaranteed-medium
       - name: storageClass
         value: wcpglobal-storage-profile
       #minor versions must match
       version: v1.27.11---vmware.1-fips.1-tkg.2
       workers:
         machineDeployments:
         - class: node-pool
           metadata:
             annotations:
               cluster.x-k8s.io/cluster-api-autoscaler-node-group-min-size: "3"
               cluster.x-k8s.io/cluster-api-autoscaler-node-group-max-size: "5"
           name: np-1
  7. Übernehmen Sie die Clusterspezifikation.
    kubectl apply -f cc-autoscaler.yaml
  8. Überprüfen Sie die Clustererstellung.
    kubectl get cluster,vm
  9. Überprüfen Sie die Clusterknotenversion.
    kubectl get node

Installieren des Paketmanagers auf dem TKG-Cluster

Sobald der TKG-Cluster bereitgestellt ist, installieren Sie den Paketmanager auf dem Cluster, und richten Sie das Paket-Repository ein.
  1. Melden Sie sich beim von Ihnen bereitgestellten TKG-Cluster an.
    kubectl vsphere login --server=SUPERVISOR-CONTROL-PLANE-IP-ADDRESS-or-FQDN \
    --vsphere-username USERNAME \
    --tanzu-kubernetes-cluster-name CLUSTER-NAME \
    --tanzu-kubernetes-cluster-namespace NAMESPACE-NAME
  2. Installieren Sie das Carvel-Tool imgpkg.
    wget -O- https://carvel.dev/install.sh > install.sh
    sudo bash install.sh
  3. Führen Sie imgpkg version aus, um die Installation zu überprüfen.
  4. Überprüfen Sie die Paket-Repository-Version.
    imgpkg tag list -i projects.registry.vmware.com/tkg/packages/standard/repo
  5. Installieren Sie das Paketrepository. Aktualisieren Sie die Repository-Version entsprechend.
    apiVersion: packaging.carvel.dev/v1alpha1
    kind: PackageRepository
    metadata:  
      name: tanzu-standard  
      namespace: tkg-system
    spec:  
      fetch:    
        imgpkgBundle:      
          image: projects.registry.vmware.com/tkg/packages/standard/repo:v2024.4.12
  6. Überprüfen Sie das Paketrepository.
    kubectl get packagerepository -A
    NAMESPACE    NAME             AGE     DESCRIPTION
    tkg-system   tanzu-standard   2m22s   Reconcile succeeded
  7. Überprüfen Sie, ob das Paket für die automatische Clusterskalierung vorhanden ist.
    kubectl get package
    NAME                                                                  PACKAGEMETADATA NAME                             VERSION                 AGE
    cert-manager.tanzu.vmware.com.1.7.2+vmware.3-tkg.1                    cert-manager.tanzu.vmware.com                    1.7.2+vmware.3-tkg.1    5s
    cert-manager.tanzu.vmware.com.1.7.2+vmware.3-tkg.3                    cert-manager.tanzu.vmware.com                    1.7.2+vmware.3-tkg.3    5s
    cluster-autoscaler.tanzu.vmware.com.1.25.1+vmware.1-tkg.3             cluster-autoscaler.tanzu.vmware.com              1.25.1+vmware.1-tkg.3   5s
    cluster-autoscaler.tanzu.vmware.com.1.26.2+vmware.1-tkg.3             cluster-autoscaler.tanzu.vmware.com              1.26.2+vmware.1-tkg.3   5s
    cluster-autoscaler.tanzu.vmware.com.1.27.2+vmware.1-tkg.3             cluster-autoscaler.tanzu.vmware.com              1.27.2+vmware.1-tkg.3   5s
    contour.tanzu.vmware.com.1.26.2+vmware.1-tkg.1                        contour.tanzu.vmware.com                         1.26.2+vmware.1-tkg.1   5s
    ...

Installieren des Pakets für die automatische Skalierung

Jetzt können Sie das Paket für die automatische Clusterskalierung installieren. Die automatische Clusterskalierung wird als Bereitstellung im Namespace kube-system installiert.
  1. Erstellen Sie die Konfigurationsdatei autoscaler.yaml.
    • Sie können die automatische Skalierung anpassen. Ändern Sie dazu den Abschnitt autoscaler-data-values der Spezifikation mit den für Ihre Umgebung geeigneten Werten.
    #autoscaler.yaml
    apiVersion: v1
    kind: ServiceAccount
    metadata:
      name: autoscaler-sa
      namespace: tkg-system
    ---
    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRoleBinding
    metadata:
      name: autoscaler-role-binding
    roleRef:
      apiGroup: rbac.authorization.k8s.io
      kind: ClusterRole
      name: cluster-admin
    subjects:
      - kind: ServiceAccount
        name: autoscaler-sa
        namespace: tkg-system
    ---
    apiVersion: packaging.carvel.dev/v1alpha1
    kind: PackageInstall
    metadata:
      name: autoscaler
      namespace: tkg-system
    spec:
      serviceAccountName: autoscaler-sa
      packageRef:
        refName: cluster-autoscaler.tanzu.vmware.com
        versionSelection:
          constraints: 1.27.2+vmware.1-tkg.3
      values:
      - secretRef:
          name: autoscaler-data-values
    ---
    apiVersion: v1
    kind: Secret
    metadata:
      name: autoscaler-data-values
      namespace: tkg-system
    stringData:
      values.yml: |
        ---
        arguments:
          ignoreDaemonsetsUtilization: true
          maxNodeProvisionTime: 15m
          maxNodesTotal: 0
          metricsPort: 8085
          scaleDownDelayAfterAdd: 10m
          scaleDownDelayAfterDelete: 10s
          scaleDownDelayAfterFailure: 3m
          scaleDownUnneededTime: 10m
        clusterConfig:
          clusterName: "gc1"
          clusterNamespace: "cluster"
        paused: false
  2. Installieren Sie das Paket für die automatische Clusterskalierung.
    kubectl apply -f autoscaler.yaml
  3. Überprüfen Sie die Installation des Pakets für die automatische Skalierung.
    kubectl get pkgi -A | grep autoscaler
    Erwartetes Ergebnis:
    tkg-system autoscaler cluster-autoscaler.tanzu.vmware.com 1.27.2+vmware.1-tkg.3 Reconcile succeeded 3m52s
  4. Überprüfen Sie die Bereitstellung für die automatische Skalierung.
    kubectl get pods -n kube-system | grep autoscaler
    cluster-autoscaler-798b65bd9f-bht8n 1/1 Running 0 2m

Testen der automatischen Skalierung des Clusters

Stellen Sie zum Testen der automatischen Skalierung des Clusters eine Anwendung bereit, erhöhen Sie die Anzahl der Replikate, und überprüfen Sie, ob zusätzliche Worker-Knoten horizontal skaliert werden, um die Last zu bewältigen.

Weitere Informationen hierzu finden Sie unter Testen der automatischen Skalierung des Clusters.

Upgrade eines automatisch skalierten Clusters

Damit Sie ein Upgrade eines automatisch skalierten Clusters durchführen können, halten Sie das Paket für die automatische Skalierung an.

Weitere Informationen hierzu finden Sie unter Upgrade eines automatisch skalierten Clusters mithilfe von Kubectl.