Vous pouvez faire évoluer un cluster Tanzu Kubernetes horizontalement en modifiant le nombre de nœuds ou verticalement en modifiant la classe de machine virtuelle hébergeant les nœuds.

Opérations de mise à l'échelle prises en charge

Le tableau répertorie les opérations de mise à l'échelle prises en charge pour les clusters Tanzu Kubernetes.
Tableau 1. Opérations de mise à l'échelle prises en charge pour les clusters Tanzu Kubernetes
Nœud Montée en charge horizontale Réduction de charge horizontale Échelle verticale Échelle volumétrique
Plan de contrôle Oui Non Oui Non
Worker Oui Oui Oui Oui
Gardez à l'esprit les éléments suivants :
  • Lors d'une mise à l'échelle verticale d'un nœud de cluster, les charges de travail risquent de ne plus pouvoir s'exécuter sur le nœud en raison de l'absence de ressources disponibles. Pour cette raison, la mise à l'échelle horizontale peut être l'approche préférée.
  • Les classes de machine virtuelle ne sont pas immuables. Si vous montez en charge un cluster Tanzu Kubernetes après la modification d'une classe de machine virtuelle utilisée par ce cluster, les nouveaux clusters utilisent la définition de classe mise à jour, mais les clusters existants continuent d'utiliser la définition de classe initiale, ce qui entraîne une discordance. Reportez-vous à la section Classes de machine virtuelle pour des clusters Tanzu Kubernetes.
  • Les volumes de nœuds worker peuvent être modifiés après le provisionnement, ce qui n'est pas le cas des volumes de nœuds de plan de contrôle.

Condition préalable à la mise à l'échelle : configurer la modification Kubectl

Pour dimensionner un cluster Tanzu Kubernetes, vous mettez à jour le manifeste du cluster à l'aide de la commande kubectl edit tanzukubernetescluster/CLUSTER-NAME. La commande kubectl edit ouvre le manifeste du cluster dans l'éditeur de texte défini par votre variable d'environnement KUBE_EDITOR ou EDITOR. Pour obtenir des instructions sur la configuration de la variable d'environnement, reportez-vous à la section Spécifier un éditeur de texte par défaut pour Kubectl.

Lorsque vous enregistrez les modifications du manifeste, kubectl signale que les modifications ont été enregistrées et que le cluster est mis à jour avec les modifications.
kubectl edit tanzukubernetescluster/tkgs-cluster-1
tanzukubernetescluster.run.tanzu.vmware.com/tkgs-cluster-1 edited
Pour annuler, fermez simplement l'éditeur sans enregistrer.
kubectl edit tanzukubernetescluster/tkgs-cluster-1
Edit cancelled, no changes made.

Monter en charge le plan de contrôle

Vous pouvez effectuez une montée en charge d'un cluster Tanzu Kubernetes en augmentant le nombre de nœuds de plan de contrôle de 1 à 3. Le nombre de nœuds de plan de contrôle doit être impair. Vous ne pouvez pas réduire la charge du plan de contrôle.
  1. Authentifiez-vous avec le Cluster superviseur.
    kubectl vsphere login --server=SVC-IP-ADDRESS --vsphere-username USERNAME
  2. Changez de contexte pour utiliser l'Espace de noms vSphere où le cluster Tanzu Kubernetes est en cours d'exécution.
    kubectl config use-context tkgs-cluster-ns
  3. Répertoriez les clusters Kubernetes qui s'exécutent dans l'espace de noms.
    kubectl get tanzukubernetescluster -n tkgs-cluster-ns
  4. Obtenez le nombre de nœuds en cours d'exécution dans le cluster cible.
    kubectl get tanzukubernetescluster tkgs-cluster-1
    Par exemple, le cluster suivant dispose d'un nœud de plan de contrôle et de trois nœuds worker.
    NAMESPACE             NAME             CONTROL PLANE   WORKER   TKR NAME                           AGE     READY
    tkgs-cluster-ns       test-cluster     1               3        v1.21.2---vmware.1-tkg.1.13da849   5d12h   True
    
  5. Chargez le manifeste du cluster afin de le modifier à l'aide de la commande kubectl edit.
    kubectl edit tanzukubernetescluster/tkgs-cluster-1

    Le manifeste du cluster s'ouvre dans l'éditeur de texte défini par vos variables d'environnement KUBE_EDITOR ou EDITOR.

  6. Localisez le paramètre spec.topology.controlPlane.count et augmentez le nombre de nœuds de 1 à 3.
    ...
    controlPlane:
        replicas: 1
    ...
    
    ...
    ControlPlane:
        replicas: 3
    ...
    
  7. Pour appliquer les modifications, enregistrez le fichier dans l'éditeur de texte. Pour annuler, fermez l'éditeur sans enregistrer.

    Lorsque vous enregistrez le fichier, kubectl applique les modifications au cluster. En arrière-plan, le Service de machine virtuelle du Cluster superviseur provisionne le nouveau nœud worker.

  8. Vérifiez que les nouveaux nodes sont ajoutés.
    kubectl get tanzukubernetescluster tkgs-cluster-1
    Le plan de contrôle ayant fait l'objet d'une montée en charge dispose dorénavant de 3 nœuds.
    NAMESPACE             NAME             CONTROL PLANE   WORKER   TKR NAME                           AGE     READY
    tkgs-cluster-ns       test-cluster     3               3        v1.21.2---vmware.1-tkg.1.13da849   5d12h   True
    

Monter en charge des nœuds worker

Vous pouvez monter en charge un cluster Tanzu Kubernetes en augmentant le nombre de nœuds worker à l'aide de kubectl.

  1. Authentifiez-vous avec le Cluster superviseur.
    kubectl vsphere login --server=SVC-IP-ADDRESS --vsphere-username USERNAME
  2. Changez de contexte pour utiliser l'Espace de noms vSphere où le cluster Tanzu Kubernetes est en cours d'exécution.
    kubectl config use-context tkgs-cluster-ns
  3. Répertoriez les clusters Kubernetes qui s'exécutent dans l'espace de noms.
    kubectl get tanzukubernetescluster -n tkgs-cluster-ns
  4. Obtenez le nombre de nœuds en cours d'exécution dans le cluster cible.
    kubectl get tanzukubernetescluster tkgs-cluster-1
    Par exemple, le cluster suivant dispose de 3 nodes de plan de contrôle et de 3 nodes worker.
    NAMESPACE             NAME             CONTROL PLANE   WORKER   TKR NAME                           AGE     READY
    tkgs-cluster-ns       test-cluster     3               3        v1.21.2---vmware.1-tkg.1.13da849   5d12h   True
    
  5. Chargez le manifeste du cluster afin de le modifier à l'aide de la commande kubectl edit.
    kubectl edit tanzukubernetescluster/tkgs-cluster-1

    Le manifeste du cluster s'ouvre dans l'éditeur de texte défini par vos variables d'environnement KUBE_EDITOR ou EDITOR.

  6. Localisez le paramètre spec.topology.workers.count et augmentez le nombre de nœuds.
    ...
    workers:
        replicas: 3
    ...
    
    ...
    workers:
        replicas: 4
    ...
    
  7. Pour appliquer les modifications, enregistrez le fichier dans l'éditeur de texte. Pour annuler, fermez l'éditeur sans enregistrer.

    Lorsque vous enregistrez le fichier, kubectl applique les modifications au cluster. En arrière-plan, le Service de machine virtuelle du Cluster superviseur provisionne le nouveau nœud worker.

  8. Vérifiez que le nouveau nœud travailleur est ajouté.
    kubectl get tanzukubernetescluster tkgs-cluster-1
    Après la montée en charge, le cluster dispose de 4 nœuds worker.
    NAMESPACE             NAME             CONTROL PLANE   WORKER   TKR NAME                           AGE     READY
    tkgs-cluster-ns       test-cluster     3               4        v1.21.2---vmware.1-tkg.1.13da849   5d12h   True
    

Réduire la charge des nœuds worker

Vous pouvez réduire la charge d'un cluster Tanzu Kubernetes en diminuant le nombre de nœuds worker. La mise à l'échelle du plan de contrôle n'est pas prise en charge.

  1. Authentifiez-vous avec le Cluster superviseur.
    kubectl vsphere login --server=SVC-IP-ADDRESS --vsphere-username USERNAME
  2. Changez de contexte pour utiliser l'Espace de noms vSphere où le cluster Tanzu Kubernetes est en cours d'exécution.
    kubectl config use-context tkgs-cluster-ns
  3. Répertoriez les clusters Kubernetes qui s'exécutent dans l'espace de noms.
    kubectl get tanzukubernetescluster -n tkgs-cluster-ns
  4. Obtenez le nombre de nœuds en cours d'exécution dans le cluster cible.
    kubectl get tanzukubernetescluster tkgs-cluster-1
    Par exemple, le cluster suivant dispose de 3 nodes de plan de contrôle et de 4 nodes travailleurs.
    NAMESPACE             NAME             CONTROL PLANE   WORKER   TKR NAME                           AGE     READY
    tkgs-cluster-ns       test-cluster     3               4        v1.21.2---vmware.1-tkg.1.13da849   5d12h   True
    
  5. Chargez le manifeste du cluster afin de le modifier à l'aide de la commande kubectl edit.
    kubectl edit tanzukubernetescluster/tkgs-cluster-1

    Le manifeste du cluster s'ouvre dans l'éditeur de texte défini par vos variables d'environnement KUBE_EDITOR ou EDITOR.

  6. Localisez le paramètre spec.topology.workers.count et diminuez le nombre de nœuds.
    ...
    workers:
        replicas: 4
    ...
    
    ...
    workers:
        replicas: 2
    ...
    
  7. Pour appliquer les modifications, enregistrez le fichier dans l'éditeur de texte. Pour annuler, fermez l'éditeur sans enregistrer.

    Lorsque vous enregistrez le fichier, kubectl applique les modifications au cluster. En arrière-plan, le Service de machine virtuelle du Cluster superviseur provisionne le nouveau nœud worker.

  8. Vérifiez que les nœuds worker ont été supprimés.
    kubectl get tanzukubernetescluster tkgs-cluster-1
    Après la réduction de la taille, le cluster dispose de 2 clusters worker.
    NAMESPACE             NAME             CONTROL PLANE   WORKER   TKR NAME                           AGE     READY
    tkgs-cluster-ns       test-cluster     3               2        v1.21.2---vmware.1-tkg.1.13da849   5d12h   True
    

Mettre à l'échelle un cluster verticalement

Vous pouvez dimensionner verticalement un cluster Tanzu Kubernetes en modifiant la classe de machine virtuelle utilisée pour héberger les nœuds du cluster. La mise à l'échelle verticale est prise en charge pour le plan de contrôle et les nodes travailleurs.

Le Service Tanzu Kubernetes Grid prend en charge le dimensionnement vertical des nœuds de cluster au moyen du mécanisme de mise à jour continue intégré au service. Si vous modifiez la définition de VirtualMachineClass, le service déploie de nouveaux nœuds avec cette nouvelle classe et désactive les anciens nœuds. Reportez-vous à la section Mettre à jour les clusters Tanzu Kubernetes.

  1. Authentifiez-vous avec le Cluster superviseur.
    kubectl vsphere login --server=SVC-IP-ADDRESS --vsphere-username USERNAME
  2. Changez de contexte pour utiliser l'Espace de noms vSphere où le cluster Tanzu Kubernetes est en cours d'exécution.
    kubectl config use-context tkgs-cluster-ns
  3. Répertoriez les clusters Kubernetes qui s'exécutent dans l'espace de noms.
    kubectl get tanzukubernetescluster -n tkgs-cluster-ns
  4. Décrivez le cluster Tanzu Kubernetes cible et vérifiez la classe de machine virtuelle.
    kubectl describe tanzukubernetescluster tkgs-cluster-2

    Par exemple, le cluster suivant utilise la classe de machine virtuelle best-effort-medium.

    Spec:
      ...
      Topology:
        Control Plane:
          Class:          best-effort-medium
          ...
        nodePool-a1:
          Class:          best-effort-medium
          ...
    
  5. Répertoriez et décrivez les classes de machines virtuelles disponibles.
    kubectl get virtualmachineclassbinding
    kubectl describe virtualmachineclassbinding
    Note : La classe de machine virtuelle que vous souhaitez utiliser doit être liée à l' Espace de noms vSphere. Reportez-vous à la section Classes de machine virtuelle pour des clusters Tanzu Kubernetes.
  6. Ouvrez pour modifier le manifeste du cluster cible.
    kubectl edit tanzukubernetescluster/tkgs-cluster-2

    Le manifeste du cluster s'ouvre dans l'éditeur de texte défini par vos variables d'environnement KUBE_EDITOR ou EDITOR.

  7. Modifiez le manifeste en changeant la classe de machine virtuelle.
    Par exemple, modifiez le manifeste du cluster pour utiliser la classe de machine virtuelle guaranteed-large pour le plan de contrôle et les nœuds worker.
    spec:
      topology:
        controlPlane:
          class: guaranteed-large
          ...
        nodePool-a1:
          class: guaranteed-large
          ...
    
  8. Pour appliquer les modifications, enregistrez le fichier dans l'éditeur de texte. Pour annuler, fermez l'éditeur sans enregistrer.

    Lorsque vous enregistrez le fichier, kubectl applique les modifications au cluster. En arrière-plan, le Service Tanzu Kubernetes Grid provisionne les nouveaux nœuds et supprime les anciens. Pour obtenir une description du processus de mise à jour continue, reportez-vous à la section À propos des mises à jour du cluster Service Tanzu Kubernetes Grid.

  9. Vérifiez que le cluster est mis à jour.
    kubectl get tanzukubernetescluster
    NAMESPACE             NAME             CONTROL PLANE   WORKER   TKR NAME                           AGE     READY
    tkgs-cluster-ns       test-cluster     3               3        v1.21.2---vmware.1-tkg.1.13da849   5d12h   True
    

Mettre à l'échelle les volumes de nœuds

Dans la spécification de cluster Tanzu Kubernetes pour les nœuds, vous avez la possibilité de déclarer un ou plusieurs volumes persistants. La déclaration d'un volume de nœuds est utile pour les composants à taux de variation élevé, tels que la base de données ectd sur le plan de contrôle et l'exécution du conteneur sur les nœuds worker. Une spécification de cluster extraite avec les deux volumes de nœuds déclarés est fournie ci-dessous à des fins de référence. (Un exemple complet de spécification de cluster est disponible ici.)

Si vous souhaitez ajouter ou modifier un ou plusieurs volumes de nœuds après la création du cluster, gardez à l'esprit les considérations suivantes :
Nœud de volume Description
Les modifications du volume de nœuds worker sont autorisées.
Après le provisionnement d'un cluster Tanzu Kubernetes, vous pouvez ajouter ou mettre à jour un volume de nœuds worker. Lorsque vous lancez une mise à jour continue, le cluster est mis à jour avec le nouveau volume ou le volume modifié.
Avertissement : Si vous mettez à l'échelle le nœud worker avec un nouveau volume ou un volume modifié, les données du volume actuel sont supprimées lors de la mise à jour continue.
Les modifications du volume du nœud de plan de contrôle ne sont pas autorisées. Après le provisionnement d'un cluster Tanzu Kubernetes, vous ne pouvez pas ajouter ou mettre à jour un volume de nœuds de plan de contrôle. L'API du cluster Kubernetes (CAPI) interdit les modifications post-création de spec.toplogy.controlPlane.volumes. Si vous tentez d'ajouter ou de modifier un volume de plans de contrôle après la création du cluster, la demande est refusée et vous recevez le message d'erreur « Les mises à jour de champs immuables ne sont pas autorisées ».
spec:
  topology:
    controlPlane:
      replicas: 3
      vmClass: guaranteed-medium
      storageClass: vwt-storage-policy
      volumes:
        - name: etcd
          mountPath: /var/lib/etcd
          capacity:
            storage: 4Gi
      tkr:  
        reference:
          name: v1.21.2---vmware.1-tkg.1.ee25d55
    nodePools:
    - name: worker-nodepool-a1
      replicas: 3
      vmClass: guaranteed-large
      storageClass: vwt-storage-policy
      volumes:
        - name: containerd
          mountPath: /var/lib/containerd
          capacity:
            storage: 16Gi