Cuando creas un clúster de usuario, debes configurar al menos un grupo de nodos, que es un grupo de nodos que tienen la misma configuración. Después de crear el clúster, puedes agregar nuevos grupos de nodos, actualizar la configuración de los grupos de nodos y borrarlos.
Elige una herramienta para administrar los grupos de nodos
La forma en que creas, actualizas y borras grupos de nodos depende de si la API de GKE On-Prem administra el clúster. La API de GKE On-Prem administra un clúster de usuario si se cumple una de las siguientes condiciones:
El clúster se creó en la consola de Google Cloud o con Google Cloud CLI (gcloud CLI), que configura automáticamente la API de GKE On-Prem para administrar el clúster.
El clúster se creó con
gkectl
, pero se configuró para que lo administre la API de GKE On-Prem.
Si la API de GKE On-Prem administra un clúster de usuario, puedes usar la consola o gcloud CLI para administrar los grupos de nodos. Si la API de GKE On-Prem no administra el clúster de usuario, usa gkectl
en la estación de trabajo de administrador para administrar los grupos de nodos.
Si planeas usar gcloud CLI, haz lo siguiente en una computadora que tenga instalada la CLI de gcloud:
Accede con tu Cuenta de Google.
gcloud auth login
Actualiza los componentes, como se indica a continuación:
gcloud components update
Agregue un grupo de nodos
Si la API de GKE On-Prem administra el clúster, puedes usar la consola o gcloud CLI para agregar un grupo de nodos. Sin embargo, debes usar gkectl
en tu estación de trabajo de administrador para establecer la siguiente configuración del grupo de nodos:
- Windows para el tipo de imagen de SO
- Almacén de datos de vSphere
Etiquetas de vSphere Si deseas adjuntar etiquetas a todas las VM en un grupo de nodos, tu cuenta de usuario de vCenter debe tener estos privilegios de etiquetado de vSphere:
- vSphere Tagging.Assign o Unassign vSphere Tag
- vSphere Tagging.Assign o Unassign vSphere Tag on Object (vSphere 7)
Antes de agregar otro grupo de nodos, verifica que haya suficientes direcciones IP disponibles en el clúster.
gkectl
Haz lo siguiente en la estación de trabajo de administrador:
En el archivo de configuración del clúster de usuario, completa la sección
nodePools
.Debes especificar los siguientes campos:
nodePools.[i].name
nodePools[i].cpus
nodePools.[i].memoryMB
nodePools.[i].replicas
Los siguientes campos son opcionales: Si no incluyes
nodePools[i].bootDiskSizeGB
onodePools[i].osImageType
, se usan los valores predeterminados.nodePools[i].labels
nodePools[i].taints
nodePools[i].bootDiskSizeGB
nodePools[i].osImageType
nodePools[i].vsphere.datastore
nodePools[i].vsphere.tags
Ejecuta el siguiente comando:
gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG
Reemplaza lo siguiente:
ADMIN_CLUSTER_KUBECONFIG
es la ruta de acceso del archivo kubeconfig del clúster de administrador.USER_CLUSTER_CONFIG
por la ruta de acceso del archivo de configuración del clúster de usuario.
Configuración de ejemplo
En la siguiente configuración de ejemplo, hay cuatro grupos de nodos, cada uno con atributos diferentes:
pool-1
: Solo se especifican los atributos mínimos obligatorios.pool-2
: Incluyevsphere.datastore
yvsphere.tags
.pool-3
: Incluyetaints
ylabels
.pool-4
: IncluyeosImageType
ybootDiskSizeGB
.
nodePools:
- name: pool-1
cpus: 4
memoryMB: 8192
replicas: 5
- name: pool-2
cpus: 8
memoryMB: 16384
replicas: 3
vsphere:
datastore: my_datastore
tags:
- category: "purpose"
name: "testing"
- name: pool-3
cpus: 4
memoryMB: 8192
replicas: 5
taints:
- key: "example-key"
effect: NoSchedule
labels:
environment: production
app: nginx
- name: pool-4
cpus: 4
memoryMB: 8192
replicas: 5
osImageType: cos
bootDiskSizeGB: 40
Console
En la consola, ve a la página Descripción general de los clústeres de Google Kubernetes Engine.
Selecciona el proyecto de Google Cloud en el que se encuentra el clúster de usuario.
En la lista de clústeres, haz clic en el nombre del clúster y, luego, en Ver detalles en el panel Detalles.
Haz clic en
Agregar grupo de nodos.Configura el grupo de nodos:
- Ingresa el nombre del grupo de nodos.
- Es la cantidad de vCPUs para cada nodo del grupo (mínimo 4 por trabajador del clúster de usuario).
- Ingresa el tamaño de memoria en mebibytes (MiB) para cada nodo en el grupo (mínimo 8,192 MiB por nodo trabajador del clúster de usuario y debe ser un múltiplo de 4).
- En el campo Nodos, ingresa la cantidad de nodos en el grupo (mínimo 3).
Selecciona el Tipo de imagen de SO: Ubuntu Containerd o COS.
Ingresa laTamaño de disco de arranque en gibibytes (GiB) (el valor predeterminado es de 40 GiB).
En la sección Metadatos del grupo de nodos (opcional), si quieres agregar etiquetas y taints de Kubernetes, haz lo siguiente:
- Haz clic en + Add Kubernetes Labels. Ingresa la Clave y el Valor de la etiqueta. Repite la acción según sea necesario.
- Haz clic en + Agregar taint. Ingresa la Clave, el Valor y el Efecto para el taint. Repite la acción según sea necesario.
Haz clic en Crear.
La consola de Google Cloud muestra el Estado del clúster: cambios en progreso. Haz clic en Mostrar detalles para ver la condición de estado del recurso y los mensajes de estado.
gcloud CLI
Ejecuta el siguiente comando para crear un grupo de nodos:
gcloud container vmware node-pools create NODE_POOL_NAME \ --cluster=USER_CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID \ --location=LOCATION \ --image-type=IMAGE_TYPE \ --boot-disk-size=BOOT_DISK_SIZE \ --cpus=vCPUS \ --memory=MEMORY \ --replicas=NODES
Reemplaza lo siguiente:
NODE_POOL_NAME
: Es un nombre que elijas para el grupo de nodos. El nombre debe cumplir con los siguientes requisitos:- Contener 40 caracteres como máximo.
- Contener solo caracteres alfanuméricos en minúscula o un guiones (
-
). - Comenzar con un carácter alfabético
- Terminar con un carácter alfanumérico
USER_CLUSTER_NAME
: Es el nombre del clúster de usuario en el que se creará el grupo de nodos.
FLEET_HOST_PROJECT_ID
: El ID del proyecto en el que está registrado el clúster.LOCATION
: Es la ubicación de Google Cloud asociada con el clúster de usuario.IMAGE_TYPE
: Es el tipo de imagen de SO que se ejecutará en las VM del grupo de nodos. Establécela en una de las siguientes opciones:ubuntu_containerd
ocos
.BOOT_DISK_SIZE
: Es el tamaño del disco de arranque en gigabytes (GiB) para cada nodo del grupo. El mínimo es 40 GiB.vCPUs
: Es la cantidad de CPU virtuales para cada nodo en el grupo de nodos. El mínimo es 4.MEMORY
: Es el tamaño de la memoria en mebibytes (MiB) de cada nodo del grupo. El mínimo es 8,192 MiB por nodo trabajador del clúster de usuario y el valor debe ser un múltiplo de 4.NODES
: la cantidad de nodos en el grupo de nodos. El mínimo es 3.
Por ejemplo:
gcloud container vmware node-pools create default-pool \ --cluster=user-cluster-1 \ --location=us-west1 \ --image-type=ubuntu_containerd \ --boot-disk-size=40 \ --cpus=8 \ --memory=8192 \ --replicas=5
De manera opcional, puedes especificar lo siguiente:
--enable-load-balancer
: Solo es relevante para el balanceador de cargas de MetalLB. Si se especifica, permite que la bocina de MetalLB se ejecute en los nodos del grupo. Se debe habilitar al menos un grupo de nodos para el balanceador de cargas de MetalLB.--image=IMAGE
: Es el nombre de la imagen de SO en vCenter.--node-labels=KEY=VALUE,...
: Una lista separada por comas de etiquetas de Kubernetes (pares clave-valor) aplicadas a cada nodo del grupo.--node-taints=KEY=VALUE:EFFECT,...
Una lista separada por comas de taints de Kubernetes aplicados a cada nodo del grupo. Los taints son pares clave-valor asociados con un efecto. Los taints se usan con tolerancias para la programación de Pods. Especifica una de las siguientes opciones para EFFECT:NoSchedule
,PreferNoSchedule
,NoExecute
.
Por ejemplo:
gcloud container vmware node-pools create default-pool \ --cluster=user-cluster-1 \ --location=us-west1 \ --image-type=ubuntu_containerd \ --boot-disk-size=40 \ --cpus=8 \ --memory=8192 \ --replicas=5 \ --node-taints=key1=val1:NoSchedule,key2=val2:NoExecute
Para obtener más información sobre otras marcas opcionales, consulta la referencia de gcloud.
Actualizar un grupo de nodos
Cuando aumentas la cantidad de réplicas, Google Distributed Cloud agrega la cantidad necesaria de nodos al clúster de usuario y, cuando disminuyes la cantidad de réplicas, se quitan los nodos. Cambiar la cantidad de réplicas para un grupo de nodos no interrumpe las cargas de trabajo. Asegúrate de tener direcciones IP disponibles si aumentas la cantidad de réplicas.
Si actualizas cualquier otro campo del grupo de nodos, se activa una actualización progresiva en el clúster. En una actualización progresiva, Google Distributed Cloud crea un nodo nuevo y, luego, borra uno antiguo. Este proceso se repite hasta que todos los nodos antiguos se hayan reemplazado por nodos nuevos. Este proceso no genera tiempo de inactividad, pero el clúster debe tener una dirección IP adicional disponible para usar durante la actualización.
Supongamos que un grupo de nodos tendrá N nodos al final de una actualización. Luego, debes tener al menos N + 1 direcciones IP disponibles para los nodos de ese grupo. Esto significa que, si cambias el tamaño de un clúster cuando agregas nodos a uno o más grupos, debes tener al menos una dirección IP más que la cantidad total de nodos que estarán en todos los grupos de nodos de clústeres al final del cambio de tamaño. Para obtener más información, consulta Verifica que haya suficientes direcciones IP disponibles.
Para actualizar un grupo de nodos en un clúster de usuario, haz lo siguiente:
gkectl
Modifica los valores de los campos que deseas cambiar en la sección
nodePools
del archivo de configuración del clúster de usuario.Actualiza el clúster:
gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG
Reemplaza lo siguiente:
ADMIN_CLUSTER_KUBECONFIG
es la ruta de acceso del archivo kubeconfig del clúster de administrador.USER_CLUSTER_CONFIG
por la ruta de acceso del archivo de configuración del clúster de usuario.
Actualiza la osImageType
que usa un grupo de nodos
Si deseas actualizar un grupo de nodos para usar un osImageType
diferente, debes usar la línea de comandos. Para cambiar el osImageType
que usa un grupo de nodos, actualiza el archivo de configuración del grupo de nodos, como se muestra en el siguiente ejemplo, y ejecuta gkectl update cluster
.
nodePools: - name: np-1 cpus: 4 memoryMB: 8192 replicas: 3 osImageType: ubuntu_containerd
Console
Solo puedes actualizar los siguientes campos con la consola:
- Cantidad de réplicas
- Memoria
- Cantidad de CPU virtuales
Para actualizar otros campos, usa gcloud CLI o gkectl
.
En la consola, ve a la página Descripción general de los clústeres de Google Kubernetes Engine.
Selecciona el proyecto de Google Cloud en el que se encuentra el clúster de usuario.
En la lista de clústeres, haz clic en el nombre del clúster y, luego, en Ver detalles en el panel Detalles.
Haz clic en la pestaña Nodos.
Haz clic en el nombre del grupo de nodos que deseas modificar.
Haz clic en
Editar junto al campo que deseas modificar y, luego, en Listo.Haz clic en
para volver a la página anterior.En la consola de Google Cloud, se muestra el Estado del clúster: cambios en progreso. Haz clic en Mostrar detalles para ver la condición de estado del recurso y los mensajes de estado.
gcloud CLI
De manera opcional, enumera los grupos de nodos para obtener el nombre del grupo de nodos que deseas actualizar:
gcloud container vmware node-pools list \ --cluster=USER_CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID \ --location=LOCATION
Ejecuta el siguiente comando para actualizar el grupo de nodos:
gcloud container vmware node-pools update NODE_POOL_NAME \ --cluster=USER_CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID \ --location=LOCATION \ --ATTRIBUTE_TO_UPDATE \ ...
Reemplaza lo siguiente:
NODE_POOL_NAME
: Es el nombre del grupo de nodos que se actualizará.USER_CLUSTER_NAME
: Es el nombre del clúster de usuario que contiene el grupo de nodos.LOCATION
: Es la ubicación de Google Cloud asociada con el clúster de usuario.ATTRIBUTE_TO_UPDATE
: Una o más marcas para actualizar los atributos del grupo de nodos. Por ejemplo, para cambiar la cantidad de CPU virtuales y nodos en el grupo, ejecuta el siguiente comando.
gcloud container vmware node-pools update default-pool \ --cluster=user-cluster-1 \ --project=example-project-12345 --location=us-west1 \ --cpus=10 \ --replicas=6
Para obtener información sobre los atributos del grupo de nodos que puedes actualizar, consulta la referencia de gcloud.
Verifica tus cambios
Para verificar que tus grupos de nodos se hayan creado o actualizado según lo previsto, inspecciona los nodos del clúster:
gkectl
Ejecuta el siguiente comando:
kubectl --kubeconfig USER_CLUSTER_KUBECONFIG get nodes -o wide
Si necesitas revertir los cambios, edita el archivo de configuración del clúster y ejecuta gkectl update cluster
.
Console
En la consola, ve a la página Descripción general de los clústeres de Google Kubernetes Engine.
Selecciona el proyecto de Google Cloud en el que se encuentra el clúster de usuario.
En la lista de clústeres, haz clic en el nombre del clúster y, luego, en Ver detalles en el panel Detalles.
Haz clic en la pestaña Nodos.
Haz clic en el nombre del grupo de nodos que deseas ver.
gcloud CLI
Ejecuta el siguiente comando:
gcloud container vmware node-pools describe NODE_POOL_NAME \ --cluster=USER_CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID \ --location=LOCATION
Borra un grupo de nodos
Aunque puedes borrar grupos de nodos, tu clúster de usuarios debe tener al menos un grupo de nodos. Si borras un grupo de nodos hará que se quiten los nodos del grupo de inmediato, sin importar si estos ejecutan cargas de trabajo.
Para borrar un grupo de nodos de un clúster de usuario, haz lo siguiente:
gkectl
Asegúrate de que no haya cargas de trabajo en ejecución en los nodos afectados.
Quita su definición de la sección
nodePools
del archivo de configuración del clúster de usuario.Actualiza el clúster:
gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG
Reemplaza lo siguiente:
[ADMIN_CLUSTER_KUBECONFIG]
es la ruta de acceso del archivo kubeconfig del clúster de administrador.[USER_CLUSTER_CONFIG]
por la ruta de acceso del archivo de configuración del clúster de usuario.
Console
Asegúrate de que no haya cargas de trabajo en ejecución en los nodos afectados.
En la consola, ve a la página Descripción general de los clústeres de Google Kubernetes Engine.
Selecciona el proyecto de Google Cloud en el que se encuentra el clúster de usuario.
En la lista de clústeres, haz clic en el nombre del clúster y, luego, en Ver detalles en el panel Detalles.
Haz clic en la pestaña Nodos.
Haz clic en el nombre del grupo de nodos que deseas borrar.
Haz clic en
Borrar.Haz clic en
para volver a la página anterior.En la consola de Google Cloud, se muestra el Estado del clúster: cambios en progreso. Haz clic en Mostrar detalles para ver la condición de estado del recurso y los mensajes de estado.
gcloud CLI
De manera opcional, enumera los grupos de nodos para obtener el nombre del grupo de nodos que quieres borrar:
gcloud container vmware node-pools list \ --cluster=USER_CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID \ --location=LOCATION
Ejecuta el siguiente comando para borrar el grupo de nodos:
gcloud container vmware node-pools delete NODE_POOL_NAME \ --cluster=USER_CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID \ --location=LOCATION
Reemplaza lo siguiente:
NODE_POOL_NAME
: Es el nombre del grupo de nodos que se borrará.USER_CLUSTER_NAME
: Es el nombre del clúster de usuario que contiene el grupo de nodos.LOCATION
: Es la ubicación de Google Cloud asociada con el clúster de usuario.
Soluciona problemas
En general, el comando
gkectl update cluster
proporciona información específica cuando falla. Si el comando se ejecutó de forma correcta y no ves los nodos, puedes solucionar el problema con la guía Diagnostica problemas de clústeres.Es posible que haya recursos de clúster insuficientes, como la falta de direcciones IP disponibles durante la creación o actualización del grupo de nodos. Consulta el tema Cambia el tamaño de un clúster de usuario para obtener detalles sobre cómo verificar que las direcciones IP estén disponibles.
También puedes consultar la guía general de Solución de problemas.
No pasará de
Creating node MachineDeployment(s) in user cluster…
.La creación o la actualización de los grupos de nodos en el clúster de usuario puede tomar un tiempo. Sin embargo, si el tiempo de espera es demasiado largo y sospechas que algo falló, puedes ejecutar los siguientes comandos:
- Ejecuta
kubectl get nodes
para obtener el estado de los nodos. - Si deseas obtener un nodo que no esté listo, ejecuta
kubectl describe node NODE_NAME
para obtener más detalles.
- Ejecuta