Mettre à l'échelle des clusters

Cette rubrique explique comment dimensionner des clusters de charge de travail Tanzu Kubernetes Grid (TKG) et des clusters de gestion autonomes, en utilisant les méthodes suivantes :

  • Mise à l'échelle automatique (Autoscaler) : Pour les clusters de charge de travail déployés par un cluster de gestion autonome, vous pouvez utiliser la mise à l'échelle automatique du cluster pour dimensionner le nombre de nœuds worker afin de satisfaire la demande. Reportez-vous à la section Mettre à l'échelle les nœuds worker avec la mise à l'échelle automatique du cluster.

    Vous ne pouvez pas utiliser la mise à l'échelle automatique pour dimensionner les clusters de charge de travail déployés par un cluster superviseur.

  • Dimensionner horizontalement : Pour les clusters de charge de travail ou de gestion autonomes, vous pouvez dimensionner manuellement le nombre de plans de contrôle et de nœuds worker. Reportez-vous à la section Dimensionner un cluster horizontalement.

  • Dimensionner verticalement : Pour les clusters de charge de travail, vous pouvez modifier manuellement la taille du plan de contrôle et des nœuds worker. Reportez-vous à la section Dimensionner un cluster verticalement.

Remarque

pour dimensionner des nœuds dans un pool de nœuds, reportez-vous à la section Mettre à jour des pools de nœuds dans Gérer les pools de nœuds de différents types de VM.

Mettre à l'échelle les nœuds worker avec la mise à l'échelle automatique du cluster (MC autonome)

La mise à l'échelle automatique du cluster est un programme Kubernetes qui met automatiquement à l'échelle les clusters Kubernetes en fonction des demandes des clusters de charge de travail. Utilisez la mise à l'échelle automatique du cluster uniquement pour les clusters de charge de travail déployés par un cluster de gestion autonome.

Pour plus d'informations sur la mise à l'échelle automatique du cluster, reportez-vous à la documentation suivante dans GitHub :

Par défaut, la mise à l'échelle automatique du cluster est désactivée dans Tanzu Kubernetes Grid. Pour activer la mise à l'échelle automatique du cluster dans un cluster de charge de travail, définissez ENABLE_AUTOSCALER sur true et définissez les options de AUTOSCALER_ dans le fichier de configuration du cluster ou en tant que variables d'environnement avant d'exécuter tanzu cluster create --file.

Important

Pour les clusters basés sur une classe, en raison d'un problème de propagation d'étiquette dans l'API de cluster, après avoir créé un cluster de charge de travail basé sur une classe, vous devez ajouter manuellement des annotations min-size et max-size à ses objets MachineDeployment pour activer la mise à l'échelle automatique du cluster, comme décrit dans la section (Ajouter manuellement les annotations de taille minimale et maximale)[#cc-workaround] ci-dessous.

Chaque variable de configuration de mise à l'échelle automatique du cluster dans un fichier de configuration de cluster correspond à un paramètre de l'outil Mise à l'échelle automatique du cluster. Pour obtenir la liste de ces variables et leurs valeurs par défaut, reportez-vous à la section Mise à l'échelle automatique du cluster de la Référence de variable du fichier de configuration.

Les paramètres AUTOSCALER_*_SIZE limitent le nombre de nœuds worker dans un cluster, tandis que AUTOSCALER_MAX_NODES_TOTAL limite le nombre de tous les nœuds, à la fois worker et de plan de contrôle.

Définissez les valeurs AUTOSCALER_*_SIZE en fonction du nombre de nœuds worker dans le cluster :

  • Pour les clusters disposant d'un seul nœud worker, tels que les clusters dev, définissez AUTOSCALER_MIN_SIZE_0 et AUTOSCALER_MAX_SIZE_0.
  • Pour les clusters avec plusieurs nœuds worker, tels que les clusters prod, définissez :
    • AUTOSCALER_MIN_SIZE_0 et AUTOSCALER_MAX_SIZE_0
    • AUTOSCALER_MIN_SIZE_1 et AUTOSCALER_MAX_SIZE_1
    • AUTOSCALER_MIN_SIZE_2 et AUTOSCALER_MAX_SIZE_2

Voici un exemple de paramètres de mise à l'échelle automatique du cluster dans un fichier de configuration de cluster. Vous ne pouvez pas modifier ces valeurs après avoir déployé le cluster.

#! ---------------------------------------------------------------------
#! 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:

Pour chaque cluster de charge de travail que vous créez avec la mise à l'échelle automatique du cluster activée, Tanzu Kubernetes Grid crée un déploiement de mise à l'échelle automatique du cluster dans le cluster de gestion. Pour désactiver la mise à l'échelle automatique du cluster, supprimez le déploiement de mise à l'échelle automatique du cluster associé à votre cluster de charge de travail.

Ajouter manuellement les annotations de taille minimale et maximale

Après avoir créé un cluster de charge de travail basé sur une classe sur lequel la mise à l'échelle automatique du cluster est activée, vous devez ajouter manuellement les annotations min-size et max-size à ses objets MachineDeployment comme suit, en raison d'un problème de propagation d'étiquette dans l'API de cluster :

  1. Définissez le contexte de kubectl sur votre cluster de gestion :

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

    MY-MGMT-CLUSTER est le nom de votre cluster de gestion.

  2. Répertoriez les objets MachineDeployment et notez leurs valeurs AGE :

    kubectl get md
    

    Les noms d'objets se terminent par -md, suivi d'un nombre pour chaque zone de disponibilité (AZ).

  3. Pour chaque MachineDeployment dans le cluster :

    1. Ajoutez une annotation min-size :

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

      Où :

      • MD-NAME est le nom de l'objet MachineDeployment (par exemple, my-wc-md-0).
      • MIN-SIZE est la valeur AUTOSCALER_MIN_SIZE_* de la zone de disponibilité (par exemple, la valeur AUTOSCALER_MIN_SIZE_0 pour *-md0), qui est déployée dans la première zone de disponibilité.
    2. Ajoutez une annotation max-size :

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

      MAX-SIZE est le nombre maximal de nœuds MachineDeployment pour la zone de disponibilité, comme indiqué ci-dessus.

Dimensionner un cluster horizontalement

Vous pouvez dimensionner un cluster TKG horizontalement de deux manières, en fonction du type de cluster :

  • Tous les clusters Utilisez la CLI Tanzu, comme décrit ci-dessous.
  • Clusters de charge de travail basés sur une classe Modifiez les paramètres replicas dans la définition du cluster, comme décrit dans la section Dimensionner un cluster basé sur une classe ci-dessous.

Pour dimensionner horizontalement un cluster de charge de travail ou de gestion autonome à l'aide de la CLI Tanzu, exécutez la commande tanzu cluster scale.

Important

ne modifiez pas le contexte ou le fichier .kube-tkg/config lorsque des opérations Tanzu Kubernetes Grid sont en cours d'exécution.

  • Nœuds de plan de contrôle et worker : Les options --controlplane-machine-count et --worker-machine-count définissent respectivement le nouveau nombre de nœuds de plan de contrôle et de nœuds worker.
  • Exemples :

    • mettre à l'échelle un cluster avec 5 nœuds de plan de contrôle et 10 nœuds worker :

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

      Si vous avez déployé un cluster avec --controlplane-machine-count 1, et que vous effectuez une montée en puissance jusqu'à 3 nœuds de plan de contrôle, Tanzu Kubernetes Grid active automatiquement la haute disponibilité en pile sur le plan de contrôle.

    • Si le cluster s'exécute dans un espace de noms autre que default, vous devez inclure l'option --namespace :

      tanzu cluster scale MY-CLUSTER --controlplane-machine-count 5 --worker-machine-count 10 --namespace=MY-NAMESPACE
      
  • vSphere avec un cluster de gestion autonome : Après la modification du nombre de nœuds d'un cluster sur une instance de vSphere déployée avec un cluster de gestion autonome, les réservations DHCP des adresses IP des nœuds ajoutés ou supprimés doivent être réservées ou libérées. Pour modifier ces réservations manuellement, reportez-vous à la section Configurer les réservations DHCP de nœuds et l'enregistrement DNS du point de terminaison (vSphere uniquement). Pour obtenir des instructions sur la configuration des réservations DHCP, reportez-vous à la documentation de votre serveur DHCP.

  • vSphere avec un cluster superviseur Sur les clusters qui s'exécutent dans vSphere with Tanzu, vous pouvez uniquement exécuter 1 nœud de plan de contrôle ou 3 nœuds de plan de contrôle. Vous pouvez augmenter le nombre de nœuds de plan de contrôle de 1 à 3, mais vous ne pouvez pas le réduire de 3 à 1.

Mettre à l'échelle un cluster verticalement

La procédure de mise à l'échelle verticale d'un cluster de charge de travail dépend du type de cluster.

TKC et clusters basés sur un plan

suivez la procédure Updating Infrastructure Machine Templates du site The Cluster API Book, qui modifie le modèle de machine du cluster.

La procédure télécharge le modèle de machine existant du cluster, avec une commande kubectl get que vous pouvez construire comme suit :

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

Où :

  • MACHINE-TEMPLATE-TYPE est :
    • VsphereMachineTemplate sur vSphere
    • AWSMachineTemplate sur Amazon Web Services (AWS)
    • AzureMachineTemplate sur Azure
  • MACHINE-TEMPLATE-NAME est le nom du modèle de machine pour les nœuds de cluster que vous mettez à l'échelle, sous la forme suivante :
    • CLUSTER-NAME-control-plane pour les nœuds de plan de contrôle
    • CLUSTER-NAME-worker pour les nœuds worker

Par exemple :

kubectl get VsphereMachineTemplate monitoring-cluster-worker -o yaml

Clusters basés sur une classe

Pour dimensionner verticalement un cluster basé sur une classe, modifiez les paramètres machine dans sa définition de cluster, comme décrit dans la section Dimensionner un cluster basé sur une classe ci-dessous.

Dimensionner un cluster basé sur une classe

Pour dimensionner un cluster basé sur une classe horizontalement ou verticalement à l'aide de sa configuration de topology :

  1. Définissez kubectl dans le contexte du cluster de gestion, par exemple :

    kubectl config use-context management-cluster@admin
    
  2. Exécutez kubectl edit cluster CLUSTER-NAME et modifiez les paramètres de son bloc de topology sous controlPlane et worker.

    Pour dimensionner horizontalement, modifiez les paramètres replicas. - Pour dimensionner verticalement, modifiez les paramètres sous machine.

    Par exemple :

    - 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