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.
Remarquepour 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.
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
.
ImportantPour 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
etmax-size
à ses objetsMachineDeployment
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 :
dev
, définissez AUTOSCALER_MIN_SIZE_0
et AUTOSCALER_MAX_SIZE_0
.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.
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 :
Définissez le contexte de kubectl
sur votre cluster de gestion :
kubectl config use-context MY-MGMT-CLUSTER-admin@MY-MGMT-CLUSTER
Où MY-MGMT-CLUSTER
est le nom de votre cluster de gestion.
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).
Pour chaque MachineDeployment
dans le cluster :
Ajoutez une annotation min-size
:
kubectl annotate machinedeployment MD-NAME cluster.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é.Ajoutez une annotation max-size
:
kubectl annotate machinedeployment MD-NAME cluster.k8s.io/cluster-api-autoscaler-node-group-max-size="MAX-SIZE"
Où MAX-SIZE
est le nombre maximal de nœuds MachineDeployment
pour la zone de disponibilité, comme indiqué ci-dessus.
Vous pouvez dimensionner un cluster TKG horizontalement de deux manières, en fonction du type de cluster :
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
.
Importantne modifiez pas le contexte ou le fichier
.kube-tkg/config
lorsque des opérations Tanzu Kubernetes Grid sont en cours d'exécution.
--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.
La procédure de mise à l'échelle verticale d'un cluster de charge de travail dépend du type de cluster.
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 vSphereAWSMachineTemplate
sur Amazon Web Services (AWS)AzureMachineTemplate
sur AzureMACHINE-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ôleCLUSTER-NAME-worker
pour les nœuds workerPar exemple :
kubectl get VsphereMachineTemplate monitoring-cluster-worker -o yaml
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.
Pour dimensionner un cluster basé sur une classe horizontalement ou verticalement à l'aide de sa configuration de topology
:
Définissez kubectl
dans le contexte du cluster de gestion, par exemple :
kubectl config use-context management-cluster@admin
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