Puede ampliar un clúster de Tanzu Kubernetes horizontalmente cambiando el número de nodos o verticalmente, cambiando la clase de máquina virtual que aloja los nodos.

Operaciones de ampliación admitidas

En la tabla se enumeran las operaciones de ampliación admitidas para clústeres de Tanzu Kubernetes.
Tabla 1. Operaciones de ampliación admitidas para clústeres de Tanzu Kubernetes
Nodo Expansión horizontal Reducción horizontal Ampliación vertical Escala de volumen
Plano de control No No
Trabajador
Tenga en cuenta las siguientes consideraciones:
  • Al ampliar verticalmente un nodo de clúster, es posible que las cargas de trabajo ya no puedan ejecutarse en el nodo por falta de recursos disponibles. Por esta razón, puede que la ampliación horizontal sea el método preferido.
  • Las clases de máquina virtual no son inmutables. Si se escala horizontalmente un clúster de Tanzu Kubernetes después de editar una clase de máquina virtual utilizada por ese clúster, los nuevos nodos del clúster utilizan la definición de clase actualizada, pero los nodos del clúster existentes siguen usando la definición de clase inicial, lo que provoca un error de coincidencia. Consulte Clases de máquina virtual para clústeres de Tanzu Kubernetes.
  • Los volúmenes del nodo de trabajo se pueden cambiar después del aprovisionamiento, pero no los volúmenes de los nodos del plano de control.

Requisito previo para la ampliación: configurar la edición de Kubectl

Para escalar un clúster de Tanzu Kubernetes, actualice el manifiesto del clúster mediante el comando kubectl edit tanzukubernetescluster/CLUSTER-NAME. El comando kubectl edit abre el manifiesto del clúster en el editor de texto definido por las variables de entorno KUBE_EDITOR o EDITOR. Para obtener instrucciones sobre cómo configurar la variable de entorno, consulte Especificar un editor de texto predeterminado para Kubectl.

Al guardar los cambios del manifiesto, kubectl informa que las modificaciones se registraron correctamente, y el clúster se actualiza con los cambios.
kubectl edit tanzukubernetescluster/tkgs-cluster-1
tanzukubernetescluster.run.tanzu.vmware.com/tkgs-cluster-1 edited
Para cancelar, simplemente cierre el editor sin guardar.
kubectl edit tanzukubernetescluster/tkgs-cluster-1
Edit cancelled, no changes made.

Ampliar horizontalmente el plano de control

Para ampliar horizontalmente un clúster de Tanzu Kubernetes, aumente el número de nodos del plano de control de 1 a 3. El número de nodos del plano de control debe ser impar. No se puede realizar una ampliación vertical en el plano de control.
  1. Realice la autenticación con clúster supervisor.
    kubectl vsphere login --server=SVC-IP-ADDRESS --vsphere-username USERNAME
  2. Cambie el contexto al espacio de nombres de vSphere en el que se aprovisiona el clúster de Tanzu Kubernetes.
    kubectl config use-context tkgs-cluster-ns
  3. Enumere los clústeres de Kubernetes que se están ejecutando en el espacio de nombres.
    kubectl get tanzukubernetescluster -n tkgs-cluster-ns
  4. Obtenga la cantidad de nodos que se ejecutan en el clúster de destino.
    kubectl get tanzukubernetescluster tkgs-cluster-1
    Por ejemplo, el siguiente clúster tiene 1 nodo de plano de control y 3 nodos de trabajo.
    NAMESPACE             NAME             CONTROL PLANE   WORKER   TKR NAME                           AGE     READY
    tkgs-cluster-ns       test-cluster     1               3        v1.21.2---vmware.1-tkg.1.13da849   5d12h   True
    
  5. Cargue el manifiesto del clúster para editarlo ejecutando el comando kubectl edit.
    kubectl edit tanzukubernetescluster/tkgs-cluster-1

    El manifiesto del clúster se abrirá en el editor de texto que definan las variables de entorno KUBE_EDITOR o EDITOR.

  6. Busque el parámetro spec.topology.controlPlane.count y aumente el número de nodos de 1 a 3.
    ...
    controlPlane:
        replicas: 1
    ...
    
    ...
    ControlPlane:
        replicas: 3
    ...
    
  7. Para aplicar los cambios, guarde el archivo en el editor de texto. Para cancelar, cierre el editor sin guardar.

    Cuando guarde el archivo, kubectl aplicará los cambios al clúster. En segundo plano, el servicio de máquina virtual del clúster supervisor aprovisiona el nuevo nodo de trabajo.

  8. Compruebe que se agreguen los nodos nuevos.
    kubectl get tanzukubernetescluster tkgs-cluster-1
    El plano de control que se amplió horizontalmente ahora tiene 3 nodos.
    NAMESPACE             NAME             CONTROL PLANE   WORKER   TKR NAME                           AGE     READY
    tkgs-cluster-ns       test-cluster     3               3        v1.21.2---vmware.1-tkg.1.13da849   5d12h   True
    

Escalar horizontalmente los nodos de trabajo

Para escalar horizontalmente un clúster de Tanzu Kubernetes, aumente el número de nodos de trabajo mediante kubectl.

  1. Realice la autenticación con clúster supervisor.
    kubectl vsphere login --server=SVC-IP-ADDRESS --vsphere-username USERNAME
  2. Cambie el contexto al espacio de nombres de vSphere en el que se aprovisiona el clúster de Tanzu Kubernetes.
    kubectl config use-context tkgs-cluster-ns
  3. Enumere los clústeres de Kubernetes que se están ejecutando en el espacio de nombres.
    kubectl get tanzukubernetescluster -n tkgs-cluster-ns
  4. Obtenga la cantidad de nodos que se ejecutan en el clúster de destino.
    kubectl get tanzukubernetescluster tkgs-cluster-1
    Por ejemplo, el siguiente clúster tiene 3 nodo de plano de control y 3 nodos de trabajo.
    NAMESPACE             NAME             CONTROL PLANE   WORKER   TKR NAME                           AGE     READY
    tkgs-cluster-ns       test-cluster     3               3        v1.21.2---vmware.1-tkg.1.13da849   5d12h   True
    
  5. Cargue el manifiesto del clúster para editarlo ejecutando el comando kubectl edit.
    kubectl edit tanzukubernetescluster/tkgs-cluster-1

    El manifiesto del clúster se abrirá en el editor de texto que definan las variables de entorno KUBE_EDITOR o EDITOR.

  6. Busque el parámetro spec.topology.workers.count y aumente el número de nodos.
    ...
    workers:
        replicas: 3
    ...
    
    ...
    workers:
        replicas: 4
    ...
    
  7. Para aplicar los cambios, guarde el archivo en el editor de texto. Para cancelar, cierre el editor sin guardar.

    Cuando guarde el archivo, kubectl aplicará los cambios al clúster. En segundo plano, el servicio de máquina virtual del clúster supervisor aprovisiona el nuevo nodo de trabajo.

  8. Compruebe que se haya agregado el nuevo nodo de trabajo.
    kubectl get tanzukubernetescluster tkgs-cluster-1
    Después de ampliar, el clúster tiene 4 nodos de trabajo.
    NAMESPACE             NAME             CONTROL PLANE   WORKER   TKR NAME                           AGE     READY
    tkgs-cluster-ns       test-cluster     3               4        v1.21.2---vmware.1-tkg.1.13da849   5d12h   True
    

Reducir los nodos de trabajo

Para reducir un clúster de Tanzu Kubernetes, reduzca el número de nodos de trabajo. No se admite la reducción en el plano de control.

  1. Realice la autenticación con clúster supervisor.
    kubectl vsphere login --server=SVC-IP-ADDRESS --vsphere-username USERNAME
  2. Cambie el contexto al espacio de nombres de vSphere en el que se aprovisiona el clúster de Tanzu Kubernetes.
    kubectl config use-context tkgs-cluster-ns
  3. Enumere los clústeres de Kubernetes que se están ejecutando en el espacio de nombres.
    kubectl get tanzukubernetescluster -n tkgs-cluster-ns
  4. Obtenga la cantidad de nodos que se ejecutan en el clúster de destino.
    kubectl get tanzukubernetescluster tkgs-cluster-1
    Por ejemplo, el siguiente clúster tiene 3 nodo de plano de control y 4 nodos de trabajo.
    NAMESPACE             NAME             CONTROL PLANE   WORKER   TKR NAME                           AGE     READY
    tkgs-cluster-ns       test-cluster     3               4        v1.21.2---vmware.1-tkg.1.13da849   5d12h   True
    
  5. Cargue el manifiesto del clúster para editarlo ejecutando el comando kubectl edit.
    kubectl edit tanzukubernetescluster/tkgs-cluster-1

    El manifiesto del clúster se abrirá en el editor de texto que definan las variables de entorno KUBE_EDITOR o EDITOR.

  6. Busque el parámetro spec.topology.workers.count y reduzca el número de nodos.
    ...
    workers:
        replicas: 4
    ...
    
    ...
    workers:
        replicas: 2
    ...
    
  7. Para aplicar los cambios, guarde el archivo en el editor de texto. Para cancelar, cierre el editor sin guardar.

    Cuando guarde el archivo, kubectl aplicará los cambios al clúster. En segundo plano, el servicio de máquina virtual del clúster supervisor aprovisiona el nuevo nodo de trabajo.

  8. Compruebe que se hayan agregado los nodos de trabajo.
    kubectl get tanzukubernetescluster tkgs-cluster-1
    Después de reducir, el clúster tiene 2 nodos de trabajo.
    NAMESPACE             NAME             CONTROL PLANE   WORKER   TKR NAME                           AGE     READY
    tkgs-cluster-ns       test-cluster     3               2        v1.21.2---vmware.1-tkg.1.13da849   5d12h   True
    

Ampliar un clúster verticalmente

Puede ampliar verticalmente un clúster de Tanzu Kubernetes si cambia la clase de máquina virtual que se utiliza para alojar los nodos del clúster. El ajuste de ampliación vertical es compatible con los nodos de plano de control y de trabajo.

servicio Tanzu Kubernetes Grid admite el escalado vertical de nodos del clúster a través del mecanismo de actualización gradual que está integrado en el servicio. Si cambia la definición de VirtualMachineClass, el servicio implementa gradualmente los nodos nuevos con esa nueva clase y reduce la velocidad de los nodos antiguos. Consulte Actualizar clústeres de Tanzu Kubernetes.

  1. Realice la autenticación con clúster supervisor.
    kubectl vsphere login --server=SVC-IP-ADDRESS --vsphere-username USERNAME
  2. Cambie el contexto al espacio de nombres de vSphere en el que se aprovisiona el clúster de Tanzu Kubernetes.
    kubectl config use-context tkgs-cluster-ns
  3. Enumere los clústeres de Kubernetes que se están ejecutando en el espacio de nombres.
    kubectl get tanzukubernetescluster -n tkgs-cluster-ns
  4. Describa el clúster de Tanzu Kubernetes de destino y compruebe la clase de máquina virtual.
    kubectl describe tanzukubernetescluster tkgs-cluster-2

    Por ejemplo, el siguiente clúster utiliza la clase de máquina virtual best-effort-medium.

    Spec:
      ...
      Topology:
        Control Plane:
          Class:          best-effort-medium
          ...
        nodePool-a1:
          Class:          best-effort-medium
          ...
    
  5. Enumere y describa las clases de máquinas virtuales disponibles.
    kubectl get virtualmachineclassbinding
    kubectl describe virtualmachineclassbinding
    Nota: La clase de máquina virtual que desea utilizar debe estar enlazada al espacio de nombres de vSphere. Consulte Clases de máquina virtual para clústeres de Tanzu Kubernetes.
  6. Abra para editar el manifiesto del clúster de destino.
    kubectl edit tanzukubernetescluster/tkgs-cluster-2

    El manifiesto del clúster se abrirá en el editor de texto que definan las variables de entorno KUBE_EDITOR o EDITOR.

  7. Edite el manifiesto cambiando la clase de máquina virtual.
    Por ejemplo, edite el manifiesto del clúster para usar la clase de máquina virtual guaranteed-large para el plano de control y los nodos de trabajo.
    spec:
      topology:
        controlPlane:
          class: guaranteed-large
          ...
        nodePool-a1:
          class: guaranteed-large
          ...
    
  8. Para aplicar los cambios, guarde el archivo en el editor de texto. Para cancelar, cierre el editor sin guardar.

    Cuando guarde el archivo, kubectl aplicará los cambios al clúster. En segundo plano, servicio Tanzu Kubernetes Grid aprovisiona los nuevos nodos y elimina los anteriores. Si desea ver una descripción del proceso de actualización gradual, consulte Acerca de las actualizaciones de clústeres de servicio Tanzu Kubernetes Grid.

  9. Compruebe que el clúster se haya actualizado.
    kubectl get tanzukubernetescluster
    NAMESPACE             NAME             CONTROL PLANE   WORKER   TKR NAME                           AGE     READY
    tkgs-cluster-ns       test-cluster     3               3        v1.21.2---vmware.1-tkg.1.13da849   5d12h   True
    

Escalar volúmenes de nodos

En la especificación de clúster de Tanzu Kubernetes para los nodos, tiene la opción de declarar uno o varios volúmenes persistentes. La declaración de un volumen de nodo es útil para los componentes de alta rotación, como la base de datos ectd en el plano de control y el tiempo de ejecución del contenedor en los nodos de trabajo. A continuación se proporciona un extracto de la especificación del clúster con ambos volúmenes de nodo declarados como referencia. (Un ejemplo completo de especificación de clúster está disponible aquí).

Si desea agregar o cambiar uno o más volúmenes de nodos después de la creación del clúster, tenga en cuenta las siguientes consideraciones:
Nodo de volumen Descripción
Se permiten cambios en el volumen del nodo de trabajo.
Después de aprovisionar un clúster de Tanzu Kubernetes, puede agregar o actualizar un volumen de nodo de trabajo. Cuando se inicia una actualización gradual, el clúster se actualiza con el volumen nuevo o cambiado.
Advertencia: Si escala el nodo de trabajo con un volumen nuevo o modificado, los datos del volumen actual se eliminan durante la actualización gradual.
No se permiten cambios en el volumen del nodo del plano de control. Después de aprovisionar un clúster de Tanzu Kubernetes, no se puede agregar ni actualizar un volumen de nodo de plano de control. La API de clúster de Kubernetes (CAPI) prohíbe los cambios posteriores a la creación en spec.toplogy.controlPlane.volumes. Si intenta agregar o cambiar un volumen del plano de control después de la creación del clúster, se rechaza la solicitud y se recibe el mensaje de error "No se permiten las actualizaciones de los campos inmutables".
spec:
  topology:
    controlPlane:
      replicas: 3
      vmClass: guaranteed-medium
      storageClass: vwt-storage-policy
      volumes:
        - name: etcd
          mountPath: /var/lib/etcd
          capacity:
            storage: 4Gi
      tkr:  
        reference:
          name: v1.21.2---vmware.1-tkg.1.ee25d55
    nodePools:
    - name: worker-nodepool-a1
      replicas: 3
      vmClass: guaranteed-large
      storageClass: vwt-storage-policy
      volumes:
        - name: containerd
          mountPath: /var/lib/containerd
          capacity:
            storage: 16Gi