Reportez-vous à ces instructions pour installer et configurer le module autoscaler de cluster à l'aide de kubectl.
Configuration requise
- La version de vSphere minimale est vSphere 8 U3
- La version minimale de TKr est TKr 1.27.x pour vSphere 8
- La version mineure de TKr et la version mineure du module d'autoscaler de cluster doivent correspondre
Configurer Espace de noms vSphere
Remplissez les conditions préalables suivantes pour provisionner un cluster TKG..
- Installez ou mettez à jour votre environnement vers vSphere 8 U3 et TKr 1.27.x pour vSphere 8.
- Créez ou mettez à jour une bibliothèque de contenu avec les dernières Versions de Tanzu Kubernetes. Reportez-vous à la section Administration des versions de Kubernetes pour les clusters Service TKG.
- Créez et configurez un Espace de noms vSphere pour héberger le cluster TKG. Reportez-vous à la section Configuration de Espaces de noms vSphere pour l'hébergement de clusters Service TKG.
- Installez Outils de l'interface de ligne de commande Kubernetes pour vSphere .
L'exemple suivant peut être utilisé pour installer les outils à partir de la ligne de commande. Pour des commandes supplémentaires, consultez Installez l'Outils de l'interface de ligne de commande Kubernetes pour 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/
- Exécutez
kubectl
etkubectl vsphere
pour vérifier l'installation.
Créer un cluster TKG avec des annotations d'autoscaler
Suivez les instructions pour créer un cluster TKG. Pour des commandes supplémentaires, consultez Workflow de provisionnement de clusters TKG à l'aide de Kubectl.
Pour utiliser autoscaler, vous devez configurer le cluster avec des annotations d'étiquette autoscaler, comme indiqué dans l'exemple de spécification de cluster fourni ici. Contrairement au provisionnement de cluster standard, vous ne codez pas de manière matérielle le nombre de réplicas de nœud worker. Kubernetes dispose d'une logique par défaut intégrée pour les réplicas en fonction des annotations de taille minimale et maximale d'Autoscaler. Comme il s'agit d'un nouveau cluster, la taille minimale est utilisée pour créer le cluster. Pour plus d'informations, consultez https://cluster-api.sigs.k8s.io/tasks/automated-machine-management/autoscaling.
- Authentifiez-vous auprès du Superviseur à l'aide de kubectl.
kubectl vsphere login --server=SUPERVISOR-CONTROL-PLANE-IP-ADDRESS-or-FQDN --vsphere-username USERNAME
- Changez de contexte pour l'Espace de noms vSphere cible qui hébergera le cluster.
kubectl config use-context tkgs-cluster-namespace
- Répertoriez les classes de machines virtuelles disponibles dans l'Espace de noms vSphere.
Vous pouvez uniquement utiliser les classes de machines virtuelles qui sont liées à l'Espace de noms vSphere cible. Reportez-vous à la section Utilisation de classes de machines virtuelles avec des clusters de Service TKG.
- Répertoriez les classes de stockage de volume persistant disponibles.
kubectl describe namespace VSPHERE-NAMESPACE-NAME
La commande renvoie des détails sur l'Espace de noms vSphere, y compris la classe de stockage. La commande
kubectl describe storageclasses
renvoie également les classes de stockage disponibles, mais nécessite des autorisations d'administrateur vSphere. - Répertoriez les Versions de Tanzu Kubernetes disponibles.
kubectl get tkr
Cette commande renvoie les TKR disponibles dans cet Espace de noms vSphere et leur compatibilité. Reportez-vous à la section Administration des versions de Kubernetes pour les clusters Service TKG.
- Utilisez les informations que vous avez collectées pour créer un fichier YAML de spécification de cluster TKG avec la configuration d'autoscaler du cluster requise.
- Utilisez les annotations
*-min-size
et*-max-size
pour les nodePools worker. Dans cet exemple, 3 correspond au nombre minimal et 5 au nombre maximal de nœuds worker pouvant être mis à l'échelle. Par défaut, le cluster sera créé avec 3 nœuds worker. - Utilisez la version mineure correspondante pour le module TKr et autoscaler.
- Les valeurs
metadata.name
etmetadata.namespace
du cluster utilisées sont cohérentes avec les valeurs par défaut du module autoscaler. Si vous modifiez ces valeurs dans la spécification du cluster, vous devrez les modifier dans lesautoscaler-data-values
(voir ci-dessous).
#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
- Utilisez les annotations
- Appliquez la spécification du cluster.
kubectl apply -f cc-autoscaler.yaml
- Vérifiez la création du cluster.
kubectl get cluster,vm
- Vérifiez la version des nœuds de cluster.
kubectl get node
Installer le gestionnaire de module sur le cluster TKG
- Connectez-vous au cluster TKG provisionné.
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
- Installez l'outil Carvel imgpkg.
wget -O- https://carvel.dev/install.sh > install.sh sudo bash install.sh
- Exécutez
imgpkg version
pour vérifier l'installation. - Vérifiez la version du référentiel de modules.
imgpkg tag list -i projects.registry.vmware.com/tkg/packages/standard/repo
- Installez le référentiel de modules. Mettez à jour la version du référentiel en conséquence.
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
- Vérifiez le référentiel de modules.
kubectl get packagerepository -A NAMESPACE NAME AGE DESCRIPTION tkg-system tanzu-standard 2m22s Reconcile succeeded
- Vérifiez l'existence du module autoscaler du cluster.
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 ...
Installer le module autoscaler
kube-system
.
- Créez le fichier configuration
autoscaler.yaml
.- Vous pouvez personnaliser autoscaler en modifiant la section
autoscaler-data-values
de la spécification avec les valeurs appropriées pour votre environnement.
#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
- Vous pouvez personnaliser autoscaler en modifiant la section
- Installez le module autoscaler du cluster.
kubectl apply -f autoscaler.yaml
- Vérifiez l'installation du module autoscaler.
kubectl get pkgi -A | grep autoscaler
Résultat attendu :tkg-system autoscaler cluster-autoscaler.tanzu.vmware.com 1.27.2+vmware.1-tkg.3 Reconcile succeeded 3m52s
- Vérifiez le déploiement d'autoscaler.
kubectl get pods -n kube-system | grep autoscaler
cluster-autoscaler-798b65bd9f-bht8n 1/1 Running 0 2m
Tester la mise à l'échelle automatique du cluster
Pour tester la mise à l'échelle automatique du cluster, déployez une application, augmentez le nombre de réplicas et vérifiez que des nœuds worker supplémentaires sont montés en charge pour gérer la charge.
Reportez-vous à la section Tester l'autoscaler du cluster.
Mettre à niveau un cluster autoscaler
Pour mettre à niveau un cluster à mise à l'échelle automatique, mettez en pause le module autoscaler.
Reportez-vous à la section Mettre à niveau le cluster mis à l'échelle automatique à l'aide de Kubectl.