Crea y administra grupos de nodos

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:

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 gcloud CLI:

  1. Accede con tu Cuenta de Google

    gcloud auth login
    
  2. 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:

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:

  1. 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 o nodePools[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
  2. 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: Incluye vsphere.datastore y vsphere.tags.
  • pool-3: Incluye taints y labels.
  • pool-4: Incluye osImageType y bootDiskSizeGB.
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

  1. En la consola, ve a la página de descripción general de los clústeres de Google Kubernetes Engine.

    Ir a los clústeres de GKE

  2. Selecciona el proyecto de Google Cloud en el que se encuentra el clúster de usuario.

  3. En la lista de clústeres, haz clic en el nombre del clúster y, luego, en Ver detalles en el panel Detalles.

  4. Haz clic en Agregar grupo de nodos.

  5. Configura el grupo de nodos:

    1. Ingresa el nombre del grupo de nodos.
    2. Es la cantidad de vCPUs para cada nodo del grupo (mínimo 4 por trabajador del clúster de usuario).
    3. 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).
    4. En el campo Nodos, ingresa la cantidad de nodos en el grupo (mínimo 3).
    5. Selecciona el tipo de imagen de SO: Ubuntu Containerd o COS.

    6. Ingresa laTamaño de disco de arranque en gibibytes (GiB) (el valor predeterminado es de 40 GiB).

  6. En la sección Metadatos del grupo de nodos (opcional), si deseas agregar etiquetas y taints de Kubernetes, haz lo siguiente:

    1. Haz clic en + Add Kubernetes Labels. Ingresa la Clave y el Valor de la etiqueta. Repite la acción según sea necesario.
    2. Haz clic en + Agregar taint. Ingresa la Clave, el Valor y el Efecto para el taint. Repite la acción según sea necesario.
  7. Haz clic en Crear.

  8. 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: El tipo de imagen de SO que se ejecutará en las VM del grupo de nodos. Establece uno de los siguientes valores: ubuntu_containerd o cos.

    • BOOT_DISK_SIZE: El tamaño del disco de arranque en gigabytes (GiB) para cada nodo del grupo. El mínimo es 40 GiB.

    • vCPUs: 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) para cada nodo del grupo. El mínimo es de 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,...: Es 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 o 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, GKE en VMware 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, GKE en VMware 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

  1. Modifica los valores de los campos que deseas cambiar en la sección nodePools del archivo de configuración del clúster de usuario.

  2. 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.

  1. En la consola, ve a la página de descripción general de los clústeres de Google Kubernetes Engine.

    Ir a los clústeres de GKE

  2. Selecciona el proyecto de Google Cloud en el que se encuentra el clúster de usuario.

  3. En la lista de clústeres, haz clic en el nombre del clúster y, luego, en Ver detalles en el panel Detalles.

  4. Haz clic en la pestaña Nodos.

  5. Haz clic en el nombre del grupo de nodos que deseas modificar.

  6. Haz clic en Editar junto al campo que deseas modificar y, luego, en Listo.

  7. Haz clic en para volver a la página anterior.

  8. 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

  1. De manera opcional, enumera los grupos de nodos para obtener el nombre del grupo de nodos que quieres actualizar:

    gcloud container vmware node-pools list \
      --cluster=USER_CLUSTER_NAME \
      --project=FLEET_HOST_PROJECT_ID \
      --location=LOCATION
    
  2. 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

  1. En la consola, ve a la página de descripción general de los clústeres de Google Kubernetes Engine.

    Ir a los clústeres de GKE

  2. Selecciona el proyecto de Google Cloud en el que se encuentra el clúster de usuario.

  3. En la lista de clústeres, haz clic en el nombre del clúster y, luego, en Ver detalles en el panel Detalles.

  4. Haz clic en la pestaña Nodos.

  5. 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

  1. Asegúrate de que no haya cargas de trabajo en ejecución en los nodos afectados.

  2. Quita su definición de la sección nodePools del archivo de configuración del clúster de usuario.

  3. 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

  1. Asegúrate de que no haya cargas de trabajo en ejecución en los nodos afectados.

  2. En la consola, ve a la página de descripción general de los clústeres de Google Kubernetes Engine.

    Ir a los clústeres de GKE

  3. Selecciona el proyecto de Google Cloud en el que se encuentra el clúster de usuario.

  4. En la lista de clústeres, haz clic en el nombre del clúster y, luego, en Ver detalles en el panel Detalles.

  5. Haz clic en la pestaña Nodos.

  6. Haz clic en el nombre del grupo de nodos que deseas borrar.

  7. Haz clic en Borrar.

  8. Haz clic en para volver a la página anterior.

  9. 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

  1. De manera opcional, puedes enumerar 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
    
  2. 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:

    1. Ejecuta kubectl get nodes para obtener el estado de los nodos.
    2. Si deseas obtener un nodo que no esté listo, ejecuta kubectl describe node NODE_NAME para obtener más detalles.