Consulte estas instrucciones para instalar y configurar el paquete del escalador automático de clústeres mediante kubectl.
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.
Configurar espacio de nombres de vSphere
Complete las siguientes tareas de requisitos previos para el aprovisionamiento del clúster de TKG.
- Instale o actualice el entorno a vSphere 8 U3 y TKr 1.27.x para vSphere 8.
- 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.
- 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.
- 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/
- Ejecute
kubectl
ykubectl 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.
- Autentíquese con Supervisor mediante kubectl.
kubectl vsphere login --server=SUPERVISOR-CONTROL-PLANE-IP-ADDRESS-or-FQDN --vsphere-username USERNAME
- Cambie el contexto al espacio de nombres de vSphere de destino que alojará el clúster.
kubectl config use-context tkgs-cluster-namespace
- 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.
- 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. - 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.
- 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
ymetadata.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 enautoscaler-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
- Utilice las anotaciones
- Aplique la especificación del clúster.
kubectl apply -f cc-autoscaler.yaml
- Compruebe la creación del clúster.
kubectl get cluster,vm
- Compruebe la versión del nodo del clúster.
kubectl get node
Instalar el administrador de paquetes en el clúster de TKG
- 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
- Instale la herramienta Carvel imgpkg.
wget -O- https://carvel.dev/install.sh > install.sh sudo bash install.sh
- Ejecute
imgpkg version
para comprobar la instalación. - Compruebe la versión del repositorio de paquetes.
imgpkg tag list -i projects.registry.vmware.com/tkg/packages/standard/repo
- 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
- Compruebe el repositorio de paquetes.
kubectl get packagerepository -A NAMESPACE NAME AGE DESCRIPTION tkg-system tanzu-standard 2m22s Reconcile succeeded
- 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
kube-system
.
- 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
- Para personalizar el escalador automático, cambie la sección
- Instale el paquete del escalador automático de clústeres.
kubectl apply -f autoscaler.yaml
- 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
- 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.
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.