Fare riferimento a queste istruzioni per installare e configurare il pacchetto di Cluster Autoscaler utilizzando kubectl.

Requisiti

Assicurarsi che siano soddisfatti i requisiti seguenti.
  • La versione di vSphere minima è vSphere 8 U3
  • La versione di TKr minima è TKr 1.27.x per vSphere 8
  • La versione secondaria di TKr e la versione secondaria del pacchetto di Cluster Autoscaler devono corrispondere
Avvertimento: Esiste una relazione 1 a 1 tra la versione secondaria del pacchetto di Autoscaler e la versione secondaria di TKr. Ad esempio, se si utilizza TKr 1.27.11, è necessario installare la versione v1.27.2 di Autoscaler. Se la versione non corrisponde, la riconciliazione del pacchetto non riesce.

Configurazione di Spazio dei nomi vSphere

Per eseguire il provisioning di un cluster TKG, completare le attività preliminari seguenti.

  1. Installare o aggiornare l'ambiente a vSphere 8 U3 e TKr 1.27.x per vSphere 8.
  2. Creare o aggiornare una libreria di contenuti con più Release di Tanzu Kubernetes. Vedere Amministrazione delle versioni di Kubernetes per i cluster Servizio TKG.
  3. Creare e configurare uno Spazio dei nomi vSphere che ospiti il cluster TKG. Vedere Configurazione di Spazi dei nomi vSphere per l'hosting di cluster Servizio TKG.
  4. Installare Strumenti CLI Kubernetes di vSphere.

    L'esempio seguente può essere utilizzato per installare gli strumenti dalla riga di comando. Per ulteriori istruzioni, vedere Installazione di Strumenti CLI Kubernetes di 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. Eseguire kubectl e kubectl vsphere per verificare l'installazione.

Creazione di un cluster TKG con annotazioni di Autoscaler

Seguire le istruzioni per creare un cluster TKG. Per ulteriori istruzioni, vedere Workflow per il provisioning dei cluster TKG utilizzando Kubectl.

Per utilizzare Autoscaler, è necessario configurare il cluster con annotazioni delle etichette di Autoscaler, come illustrato nell'esempio di specifica del cluster fornito qui. A differenza del normale provisioning del cluster, non si esegue l'hardcoding del numero di repliche dei nodi worker. Kubernetes dispone di una logica predefinita integrata per le repliche in base alle annotazioni delle dimensioni minime e massime di Autoscaler. Poiché si tratta di un nuovo cluster, per creare il cluster vengono utilizzate le dimensioni minime. Per ulteriori informazioni, vedere https://cluster-api.sigs.k8s.io/tasks/automated-machine-management/autoscaling.

  1. Eseguire l'autenticazione con Supervisore utilizzando kubectl.
    kubectl vsphere login --server=SUPERVISOR-CONTROL-PLANE-IP-ADDRESS-or-FQDN --vsphere-username USERNAME
  2. Passare al contesto dello Spazio dei nomi vSphere di destinazione che ospiterà il cluster.
    kubectl config use-context tkgs-cluster-namespace
  3. Recuperare l'elenco delle classi di macchine virtuali disponibili in Spazio dei nomi vSphere.

    È possibile utilizzare solo classi di macchine virtuali associate allo Spazio dei nomi vSphere di destinazione. Vedere Utilizzo di classi di macchine virtuali con i cluster Servizio TKG.

  4. Recuperare l'elenco delle classi di storage dei volumi persistenti disponibili.
    kubectl describe namespace VSPHERE-NAMESPACE-NAME

    Il comando restituisce i dettagli relativi allo Spazio dei nomi vSphere, inclusa la classe di storage. Il comando kubectl describe storageclasses restituisce anche classi di storage disponibili, ma richiede autorizzazioni di amministratore vSphere.

  5. Elencare le Release di Tanzu Kubernetes disponibili.
    kubectl get tkr

    Questo comando restituisce le TKr disponibili in questo Spazio dei nomi vSphere e la loro compatibilità. Vedere Amministrazione delle versioni di Kubernetes per i cluster Servizio TKG.

  6. Utilizzare le informazioni raccolte per creare un file YAML delle specifiche del cluster TKG con la configurazione di Cluster Autoscaler richiesta.
    • Utilizzare le annotazioni *-min-size e *-max-size per i nodePool worker. In questo esempio, 3 è il numero minimo e 5 è il numero massimo di nodi worker che è possibile scalare. Per impostazione predefinita, il cluster verrà creato con 3 nodi worker.
    • Utilizzare la versione secondaria corrispondente per il pacchetto di TKr e Autoscaler.
    • I valori metadata.name e metadata.namespace del cluster utilizzati sono coerenti con i valori predefiniti del pacchetto di Autoscaler. Se si modificano questi valori nella specifica del cluster, sarà necessario modificarli in autoscaler-data-values (vedere di seguito).
    #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. Applicare la specifica del cluster.
    kubectl apply -f cc-autoscaler.yaml
  8. Verificare la creazione del cluster.
    kubectl get cluster,vm
  9. Verificare la versione del nodo del cluster.
    kubectl get node

Installazione del gestore pacchetti nel cluster TKG

Una volta eseguito il provisioning del cluster TKG, installare il gestore pacchetti nel cluster e configurare il repository dei pacchetti.
  1. Accedere al cluster TKG di cui è stato eseguito il provisioning.
    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. Installare lo strumento imgpkg Carvel.
    wget -O- https://carvel.dev/install.sh > install.sh
    sudo bash install.sh
  3. Eseguire imgpkg version per verificare l'installazione.
  4. Controllare la versione del repository dei pacchetti.
    imgpkg tag list -i projects.registry.vmware.com/tkg/packages/standard/repo
  5. Installare il repository dei pacchetti. Aggiornare la versione del repository di conseguenza.
    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. Verificare il repository dei pacchetti.
    kubectl get packagerepository -A
    NAMESPACE    NAME             AGE     DESCRIPTION
    tkg-system   tanzu-standard   2m22s   Reconcile succeeded
  7. Verificare l'esistenza del pacchetto di Cluster Autoscaler.
    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
    ...

Installazione del pacchetto di Autoscaler

Ora è possibile installare il pacchetto di Cluster Autoscaler. Cluster Autoscaler verrà installato come distribuzione nello spazio dei nomi kube-system.
  1. Creare il file di configurazione autoscaler.yaml.
    • È possibile personalizzare Autoscaler modificando la sezione autoscaler-data-values della specifica con i valori appropriati per il proprio ambiente.
    #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. Installare il pacchetto di Cluster Autoscaler.
    kubectl apply -f autoscaler.yaml
  3. Verificare l'installazione del pacchetto di Autoscaler.
    kubectl get pkgi -A | grep autoscaler
    Risultato previsto:
    tkg-system autoscaler cluster-autoscaler.tanzu.vmware.com 1.27.2+vmware.1-tkg.3 Reconcile succeeded 3m52s
  4. Verificare la distribuzione di Autoscaler.
    kubectl get pods -n kube-system | grep autoscaler
    cluster-autoscaler-798b65bd9f-bht8n 1/1 Running 0 2m

Test di Cluster Autoscaler

Per testare Cluster Autoscaler, distribuire un'applicazione, aumentare il numero di repliche e verificare che vengano utilizzati nodi worker aggiuntivi per gestire il carico aggiuntivo.

Vedere Esecuzione del test di Autoscaler del cluster.

Aggiornamento di un cluster ridimensionato automaticamente

Per aggiornare un cluster con scalabilità automatica, sospendere il pacchetto di Autoscaler.

Vedere Aggiornamento del cluster sottoposto ad Autoscaler utilizzando Kubectl.