Consulte estas instrucciones para instalar y configurar el paquete del escalador automático de clústeres mediante kubectl.

Requisitos

Cumpla con los siguientes requisitos.
  • La versión mínima de vSphere es vSphere 8 U3.
  • La versión mínima de TKr es TKr 1.27.x para vSphere 8.
  • La versión secundaria de TKr y la versión secundaria del paquete del escalador automático de clústeres deben coincidir.
Atención: Existe una relación 1 a 1 entre la versión secundaria del paquete del escalador automático y la versión secundaria de TKr. Por ejemplo, si utiliza TKr 1.27.11, debe instalar la versión 1.27.2 del escalador automático. Si la versión no coincide, se producirá un error en la reconciliación del paquete.

Configurar espacio de nombres de vSphere

Complete las siguientes tareas de requisitos previos para el aprovisionamiento del clúster de TKG.

  1. Instale o actualice el entorno a vSphere 8 U3 y TKr 1.27.x para vSphere 8.
  2. Cree o actualice una biblioteca de contenido con las versiones de Tanzu Kubernetes más recientes. Consulte Administrar las versiones de Kubernetes para clústeres de Servicio TKG.
  3. Cree y configure un espacio de nombres de vSphere para alojar el clúster de TKG. Consulte Configurar espacios de nombres de vSphere para alojar clústeres de Servicio TKG.
  4. Instale Herramientas de la CLI de Kubernetes para vSphere.

    El siguiente ejemplo se puede utilizar para instalar las herramientas desde la línea de comandos. Para obtener más instrucciones, consulte Instalar el Herramientas de la CLI de Kubernetes para 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. Ejecute kubectl y kubectl vsphere para comprobar la instalación.

Crear un clúster de TKG con anotaciones del escalador automático

Siga las instrucciones para crear un clúster de TKG. Para obtener más instrucciones, consulte Flujo de trabajo para aprovisionar clústeres de TKG mediante Kubectl.

Para utilizar el escalador automático, debe configurar el clúster con anotaciones en la etiqueta del escalador automático, como se muestra en el ejemplo de especificación de clúster que se proporciona aquí. A diferencia del aprovisionamiento de clústeres normal, no codifica de forma forzada el número de réplicas del nodo de trabajo. Kubernetes tiene una lógica predeterminada integrada para las réplicas en función de las anotaciones de tamaño máximo y mínimo del escalador automático. Dado que se trata de un clúster nuevo, se utiliza el tamaño mínimo para crear el clúster. Para obtener más información, consulte https://cluster-api.sigs.k8s.io/tasks/automated-machine-management/autoscaling.

  1. Autentíquese con Supervisor mediante kubectl.
    kubectl vsphere login --server=SUPERVISOR-CONTROL-PLANE-IP-ADDRESS-or-FQDN --vsphere-username USERNAME
  2. Cambie el contexto al espacio de nombres de vSphere de destino que alojará el clúster.
    kubectl config use-context tkgs-cluster-namespace
  3. Enumere las clases de máquina virtual que están disponibles en espacio de nombres de vSphere.

    Solo puede utilizar las clases de máquinas virtuales que están enlazadas al espacio de nombres de vSphere de destino. Consulte Uso de clases de máquinas virtuales con clústeres de Servicio TKG.

  4. Mencione las clases de almacenamiento de volumen persistente disponibles.
    kubectl describe namespace VSPHERE-NAMESPACE-NAME

    El comando devuelve detalles sobre el espacio de nombres de vSphere, incluida la clase de almacenamiento. El comando kubectl describe storageclasses también devuelve las clases de almacenamiento disponibles, pero requiere permisos de administrador de vSphere.

  5. Lista de versiones de Tanzu Kubernetes disponibles:
    kubectl get tkr

    Este comando devuelve los TKr disponibles en este espacio de nombres de vSphere y su compatibilidad. Consulte Administrar las versiones de Kubernetes para clústeres de Servicio TKG.

  6. Utilice la información que recopiló para crear un archivo YAML de especificación de clúster de TKG con la configuración del escalador automático de clústeres requerida.
    • Utilice las anotaciones *-min-size y *-max-size para nodePools de trabajo. En este ejemplo, 3 es el mínimo y 5 es el número máximo de nodos de trabajo que se pueden escalar. De forma predeterminada, el clúster se creará con 3 nodos de trabajo.
    • Utilice la versión secundaria coincidente para el paquete de TKr y el escalador automático.
    • Los valores de metadata.name y metadata.namespace del clúster utilizados son coherentes con los valores predeterminados del paquete del escalador automático. Si cambia estos valores en la especificación del clúster, deberá modificarlos en autoscaler-data-values (consulte a continuación).
    #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. Aplique la especificación del clúster.
    kubectl apply -f cc-autoscaler.yaml
  8. Compruebe la creación del clúster.
    kubectl get cluster,vm
  9. Compruebe la versión del nodo del clúster.
    kubectl get node

Instalar el administrador de paquetes en el clúster de TKG

Una vez que se aprovisione el clúster de TKG, instale el administrador de paquetes en el clúster y configure el repositorio de paquetes.
  1. Inicie sesión en el clúster de TKG que aprovisionó.
    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. Instale la herramienta Carvel imgpkg.
    wget -O- https://carvel.dev/install.sh > install.sh
    sudo bash install.sh
  3. Ejecute imgpkg version para comprobar la instalación.
  4. Compruebe la versión del repositorio de paquetes.
    imgpkg tag list -i projects.registry.vmware.com/tkg/packages/standard/repo
  5. Instale el repositorio de paquetes. Actualice la versión del repositorio según corresponda.
    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. Compruebe el repositorio de paquetes.
    kubectl get packagerepository -A
    NAMESPACE    NAME             AGE     DESCRIPTION
    tkg-system   tanzu-standard   2m22s   Reconcile succeeded
  7. Compruebe la existencia del paquete del escalador automático de clústeres.
    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
    ...

Instalar el paquete del escalador automático

Ahora puede instalar el paquete del escalador automático de clústeres. El escalador automático de clústeres se instalará como una implementación en el espacio de nombres kube-system.
  1. Cree el archivo de configuración autoscaler.yaml.
    • Para personalizar el escalador automático, cambie la sección autoscaler-data-values de la especificación por los valores adecuados para su entorno.
    #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. Instale el paquete del escalador automático de clústeres.
    kubectl apply -f autoscaler.yaml
  3. Compruebe la instalación del paquete del escalador automático.
    kubectl get pkgi -A | grep autoscaler
    Resultado esperado:
    tkg-system autoscaler cluster-autoscaler.tanzu.vmware.com 1.27.2+vmware.1-tkg.3 Reconcile succeeded 3m52s
  4. Compruebe la implementación del escalador automático.
    kubectl get pods -n kube-system | grep autoscaler
    cluster-autoscaler-798b65bd9f-bht8n 1/1 Running 0 2m

Probar el ajuste de escala automático de clústeres

Para probar el ajuste de escala automático de clústeres, implemente una aplicación, aumente el número de réplicas y compruebe que los nodos de trabajo adicionales se hayan escalado para controlar la carga.

Consulte Prueba del escalador automático de clústeres.

Actualizar un clúster de ajuste de escala automático

Para actualizar un clúster con ajuste de escala automático, ponga en pausa el paquete del escalador automático.

Consulte Actualizar clúster de escalado automático mediante Kubectl.