Reportez-vous à ces instructions pour installer et configurer le module autoscaler de cluster à l'aide de kubectl.

Configuration requise

Respectez les exigences suivantes.
  • 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
Attention : Il existe une relation un-à-un entre la version mineure du module d'autoscaler et la version mineure de TKr. Par exemple, si vous utilisez TKr 1.27.11, vous devez installer la version 1.27.2 de l'autoscaler. Toute incompatibilité de version entraînera l'échec du rapprochement de modules.

Configurer Espace de noms vSphere

Remplissez les conditions préalables suivantes pour provisionner un cluster TKG..

  1. Installez ou mettez à jour votre environnement vers vSphere 8 U3 et TKr 1.27.x pour vSphere 8.
  2. 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.
  3. 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.
  4. 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/
  5. Exécutez kubectl et kubectl 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.

  1. Authentifiez-vous auprès du Superviseur à l'aide de kubectl.
    kubectl vsphere login --server=SUPERVISOR-CONTROL-PLANE-IP-ADDRESS-or-FQDN --vsphere-username USERNAME
  2. Changez de contexte pour l'Espace de noms vSphere cible qui hébergera le cluster.
    kubectl config use-context tkgs-cluster-namespace
  3. 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.

  4. 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.

  5. 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.

  6. 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 et metadata.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 les autoscaler-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
  7. Appliquez la spécification du cluster.
    kubectl apply -f cc-autoscaler.yaml
  8. Vérifiez la création du cluster.
    kubectl get cluster,vm
  9. Vérifiez la version des nœuds de cluster.
    kubectl get node

Installer le gestionnaire de module sur le cluster TKG

Une fois le cluster TKG provisionné, installez le gestionnaire de modules sur le cluster et configurez le référentiel de modules.
  1. 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
  2. Installez l'outil Carvel imgpkg.
    wget -O- https://carvel.dev/install.sh > install.sh
    sudo bash install.sh
  3. Exécutez imgpkg version pour vérifier l'installation.
  4. Vérifiez la version du référentiel de modules.
    imgpkg tag list -i projects.registry.vmware.com/tkg/packages/standard/repo
  5. 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
  6. Vérifiez le référentiel de modules.
    kubectl get packagerepository -A
    NAMESPACE    NAME             AGE     DESCRIPTION
    tkg-system   tanzu-standard   2m22s   Reconcile succeeded
  7. 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

Vous pouvez désormais installer le module autoscaler du cluster. L'autoscaler du cluster sera installé en tant que déploiement dans l'espace de noms kube-system.
  1. 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
  2. Installez le module autoscaler du cluster.
    kubectl apply -f autoscaler.yaml
  3. 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
  4. 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.