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
Nodo | Expansión horizontal | Reducción horizontal | Ampliación vertical | Escala de volumen |
---|---|---|---|---|
Plano de control | Sí | No | Sí | No |
Trabajador | Sí | Sí | Sí | Sí |
- 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.
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
kubectl edit tanzukubernetescluster/tkgs-cluster-1 Edit cancelled, no changes made.
Ampliar horizontalmente el plano de control
- Realice la autenticación con clúster supervisor.
kubectl vsphere login --server=SVC-IP-ADDRESS --vsphere-username USERNAME
- 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
- Enumere los clústeres de Kubernetes que se están ejecutando en el espacio de nombres.
kubectl get tanzukubernetescluster -n tkgs-cluster-ns
- 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
- 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.
- 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 ...
- 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.
- 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.
- Realice la autenticación con clúster supervisor.
kubectl vsphere login --server=SVC-IP-ADDRESS --vsphere-username USERNAME
- 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
- Enumere los clústeres de Kubernetes que se están ejecutando en el espacio de nombres.
kubectl get tanzukubernetescluster -n tkgs-cluster-ns
- 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
- 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.
- Busque el parámetro
spec.topology.workers.count
y aumente el número de nodos.... workers: replicas: 3 ...
... workers: replicas: 4 ...
- 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.
- 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.
- Realice la autenticación con clúster supervisor.
kubectl vsphere login --server=SVC-IP-ADDRESS --vsphere-username USERNAME
- 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
- Enumere los clústeres de Kubernetes que se están ejecutando en el espacio de nombres.
kubectl get tanzukubernetescluster -n tkgs-cluster-ns
- 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
- 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.
- Busque el parámetro
spec.topology.workers.count
y reduzca el número de nodos.... workers: replicas: 4 ...
... workers: replicas: 2 ...
- 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.
- 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.
- Realice la autenticación con clúster supervisor.
kubectl vsphere login --server=SVC-IP-ADDRESS --vsphere-username USERNAME
- 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
- Enumere los clústeres de Kubernetes que se están ejecutando en el espacio de nombres.
kubectl get tanzukubernetescluster -n tkgs-cluster-ns
- 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 ...
- 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. - 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.
- 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 ...
- 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.
- 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í).
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