Agrega y administra grupos de nodos


En esta página, se muestra cómo agregar y realizar operaciones en grupos de nodos a través de la ejecución de los clústeres Standard de Google Kubernetes Engine (GKE). Para obtener información sobre cómo funcionan los grupos de nodos, consulta Información sobre grupos de nodos.

Los clústeres pueden realizar operaciones, como el aprovisionamiento automático de nodos, en varios grupos de nodos en paralelo. Puedes crear, actualizar o borrar un grupo de nodos de forma manual mientras se crea, actualiza o borra otro grupo de nodos.

Estas instrucciones no se aplican a los clústeres de Autopilot, en los que GKE administra los nodos y no hay grupos de nodos que administres. Para obtener más información, consulta la Descripción general de Autopilot.

Antes de comenzar

Antes de comenzar, asegúrate de haber realizado las siguientes tareas:

  • Habilita la API de Google Kubernetes Engine.
  • Habilitar la API de Google Kubernetes Engine
  • Si deseas usar Google Cloud CLI para esta tarea, instala y, luego, inicializa gcloud CLI. Si ya instalaste gcloud CLI, ejecuta gcloud components update para obtener la versión más reciente.

Agrega un grupo de nodos a un clúster Standard

Puedes agregar un grupo de nodos nuevo a un clúster de GKE Standard a través de gcloud CLI, la consola de Google Cloud o Terraform. GKE también es compatible con el aprovisionamiento automático de nodos, que administra de forma automática los grupos de nodos de tu clúster según los requisitos de escalamiento.

Como práctica recomendada en ambos casos, te recomendamos que crees y uses una cuenta de servicio de Identity and Access Management (IAM) con privilegios mínimos para que la usen tus grupos de nodos en lugar de la Cuenta de servicio predeterminada de Compute Engine. Para obtener instrucciones sobre cómo crear una cuenta de servicio con privilegios mínimos, consulta Endurece la seguridad del clúster.

gcloud

Para crear un grupo de nodos, ejecuta el comando gcloud container node-pools create:

gcloud container node-pools create POOL_NAME \
    --cluster CLUSTER_NAME \
    --service-account SERVICE_ACCOUNT

Reemplaza lo siguiente:

  • POOL_NAME: el nombre del grupo de nodos nuevo
  • CLUSTER_NAME: Es el nombre del clúster existente.
  • SERVICE_ACCOUNT: Es el nombre de la cuenta de servicio de IAM que usarán los nodos. Si se omite, el grupo de nodos usa la cuenta de servicio predeterminada de Compute Engine.
  • Para aprovisionar nodos a través de direcciones IP privadas, agrega la marca --enable-private-nodes. Puedes usar esta marca en clústeres públicos que usan Private Service Connect. Para verificar si tu clúster usa Private Service Connect, consulta Clústeres públicos con Private Service Connect.

Para obtener una lista completa de las marcas opcionales que puedes especificar, consulta la documentación de gcloud container node-pools create.

El resultado es similar a este:

Creating node pool POOL_NAME...done.
Created [https://container.googleapis.com/v1/projects/PROJECT_ID/zones/us-central1/clusters/CLUSTER_NAME/nodePools/POOL_NAME].
NAME: POOL_NAME
MACHINE_TYPE: e2-medium
DISK_SIZE_GB: 100
NODE_VERSION: 1.21.5-gke.1302

En este resultado, verás detalles sobre el grupo de nodos, como el tipo de máquina y la versión de GKE que se ejecuta en los nodos.

Puede suceder que el grupo de nodos se cree de forma correcta, pero el comando de gcloud agote el tiempo de espera en lugar de informar sobre el estado del servidor. Para comprobar el estado de todos los grupos de nodos, incluidos aquellos que aún no están aprovisionados del todo, usa el siguiente comando:

gcloud container node-pools list --cluster CLUSTER_NAME

Console

Para agregar un grupo de nodos a un clúster Standard existente, realiza los siguientes pasos:

  1. Ve a la página de Google Kubernetes Engine en la consola de Google Cloud.

    Ir a Google Kubernetes Engine

  2. En la lista de clústeres, haz clic en el nombre del clúster Standard que deseas modificar.

  3. Haz clic en Agregar grupo de nodos.

  4. Configura tu grupo de nodos.

  5. En el menú de navegación, haz clic en Seguridad.

  6. En el menú desplegable Cuenta de servicio, selecciona la cuenta de servicio de IAM que usará el grupo de nodos. De forma predeterminada, el grupo de nodos usa la cuenta de servicio predeterminada de Compute Engine.

  7. Haz clic en Crear para agregar el grupo de nodos.

Terraform

Para agregar un grupo de nodos a un clúster Standard existente con Terraform, consulta el siguiente ejemplo:

resource "google_container_node_pool" "default" {
  name    = "gke-standard-regional-node-pool"
  cluster = google_container_cluster.default.name

  node_config {
    service_account = google_service_account.default.email
  }
}

Si deseas obtener más información sobre el uso de Terraform, consulta Compatibilidad con Terraform para GKE.

Visualiza grupos de nodos en un clúster Standard

gcloud

Para enumerar todos los grupos de nodos de un clúster Standard, ejecuta el comando gcloud container node-pools list:

gcloud container node-pools list --cluster CLUSTER_NAME

Para visualizar detalles sobre un grupo de nodos específico, ejecuta el comando gcloud container node-pools describe:

gcloud container node-pools describe POOL_NAME \
    --cluster CLUSTER_NAME

Reemplaza lo siguiente:

  • CLUSTER_NAME: el nombre del clúster
  • POOL_NAME: el nombre del grupo de nodos que se debe ver

Console

Para ver los grupos de nodos de un clúster Standard, realiza los siguientes pasos:

  1. Ve a la página de Google Kubernetes Engine en la consola de Google Cloud.

    Ir a Google Kubernetes Engine

  2. En la lista de clústeres, haz clic en el nombre del clúster Standard.

  3. Haz clic en la pestaña Nodos.

  4. En Grupos de nodos, haz clic en el nombre del grupo de nodos que quieres ver.

Escalar un grupo de nodos

Puedes aumentar o reducir la escala de tus grupos de nodos para optimizar el rendimiento y los costos. Con los grupos de nodos de GKE Standard, puedes hacer lo siguiente: escalar un grupo de nodos de forma horizontal a través del cambio de la cantidad de nodos en el grupo de nodos o escalar verticalmente un grupo de nodos a través del cambio de la configuración del atributo de la máquina de los nodos.

Cambia el recuento de nodos para escalar horizontalmente

gcloud

Para cambiar el tamaño del grupo de nodos de un clúster, ejecuta el siguiente comando gcloud container clusters resize:

gcloud container clusters resize CLUSTER_NAME \
    --node-pool POOL_NAME \
    --num-nodes NUM_NODES

Reemplaza lo siguiente:

  • CLUSTER_NAME: el nombre del clúster al que se cambiará el tamaño
  • POOL_NAME: el nombre del grupo de nodos al que se cambiará el tamaño
  • NUM_NODES: la cantidad de nodos en el grupo en un clúster zonal Si usas clústeres multizonales o regionales, NUM_NODES es la cantidad de nodos de cada zona en la que se encuentra el grupo de nodos.

Repite este comando para cada grupo de nodos. Si tu clúster tiene un solo grupo de nodos, omite la marca --node-pool.

Console

Para cambiar el tamaño de los grupos de nodos de un clúster, realiza los siguientes pasos:

  1. Ve a la página de Google Kubernetes Engine en la consola de Google Cloud.

    Ir a Google Kubernetes Engine

  2. En la lista de clústeres, haz clic en el nombre del clúster Standard que deseas modificar.

  3. Haz clic en la pestaña Nodos.

  4. En la sección Grupos de nodos, haz clic en el nombre del grupo de nodos al que quieres cambiarle el tamaño.

  5. Haz clic en Cambiar de tamaño.

  6. En el campo Cantidad de nodos, ingresa la cantidad de nodos que quieres incluir en el grupo de nodos y, luego, haz clic en Cambiar tamaño.

  7. Repite este paso para cada grupo de nodos según sea necesario.

Cambia los atributos de la máquina de los nodos para escalar verticalmente

Puedes modificar el tipo de máquina configurado, el tipo y el tamaño del disco del grupo de nodos.

Cuando editas uno o más de estos atributos de máquina, GKE actualiza los nodos a la nueva configuración mediante la estrategia de actualización configurada para el grupo de nodos. Si configuras la estrategia de actualización azul-verde, puedes migrar las cargas de trabajo de los nodos originales a los nuevos mientras puedes revertir los nodos originales si la migración falla. Inspecciona la configuración de actualización del grupo de nodos para asegurarte de que la estrategia configurada sea la forma en la que deseas que se actualicen los nodos.

Actualiza al menos uno de los atributos de máquina destacados en el siguiente comando:

gcloud container node-pools update POOL_NAME \
    --cluster CLUSTER_NAME \
    --machine-type MACHINE_TYPE \
    --disk-type DISK_TYPE \
    --disk-size DISK_SIZE

Omite las marcas para los atributos de máquina que no deseas cambiar. Sin embargo, debes usar al menos una marca de atributo de máquina, si es que el comando falla.

Reemplaza lo siguiente:

  • POOL_NAME: el nombre del grupo de nodos al que se cambiará el tamaño
  • CLUSTER_NAME: el nombre del clúster al que se cambiará el tamaño
  • MACHINE_TYPE: el tipo de máquina que se usará para los nodos. Para obtener más información, consulta gcloud container node-pools update.
  • DISK_TYPE: el tipo de disco de arranque de la VM del nodo debe ser pd-standard, pd-ssd o pd-balanced.
  • DISK_SIZE: Es el tamaño de los discos de arranque de VM de los nodos en GB. El valor predeterminado es 100 GB.

Actualiza un grupo de nodos

De forma predeterminada, los nodos de un clúster tienen habilitada la actualización automática y se recomienda no inhabilitarla . Las actualizaciones automáticas de nodos garantizan que el plano de control y la versión de los nodos del clúster permanezcan sincronizados y cumplan con la política de sesgo de versiones de Kubernetes, que garantiza que los planos de control sean compatibles con los nodos de hasta dos versiones secundarias anteriores a la del plano de control. Por ejemplo, los planos de control de Kubernetes 1.29 son compatibles con los nodos de Kubernetes 1.27.

Con las actualizaciones del grupo de nodos de GKE, puedes elegir entre dos estrategias de actualización configurables, llamadas actualizaciones de aumento y actualizaciones azul-verde.

Elige una estrategia y usa los parámetros para ajustar la estrategia a fin de que se adapte mejor a las necesidades de tu entorno del clúster.

Mientras se actualiza un nodo, GKE deja de programar pods nuevos en él y, en cambio, intenta programar sus pods en ejecución en otros nodos. Esto es similar a otros eventos que recrean el nodo, como la habilitación o inhabilitación de una función en el grupo de nodos.

La actualización se completará cuando se vuelvan a crear todos los nodos y el clúster se encuentre en el estado deseado. Cuando un nodo recién actualizado se registra con el plano de control, GKE marca el nodo como programable.

Las instancias de nodo nuevas ejecutan la versión deseada de Kubernetes y también los elementos siguientes:

Actualiza un grupo de nodos de forma manual

Puedes actualizar la versión de un grupo de nodos de forma manual para que coincida con la versión del plano de control o con una versión inferior que aún esté disponible y que sea compatible con el plano de control. Puedes actualizar varios grupos de nodos en paralelo de forma manual, mientras que GKE actualiza de manera automática solo un grupo de nodos a la vez.

Cuando actualizas de forma manual un grupo de nodos, GKE quita las etiquetas que agregaste a los nodos individuales mediante kubectl. Para evitar esto, aplica etiquetas a los grupos de nodos en su lugar.

Puedes actualizar tus grupos de nodos de forma manual a una versión compatible con el plano de control mediante la consola de Google Cloud o Google Cloud CLI.

gcloud

Las siguientes variables se usan en los comandos de esta sección:

  • CLUSTER_NAME: el nombre del clúster del grupo de nodos que se actualizará.
  • NODE_POOL_NAME: el nombre del grupo de nodos que se actualizará.
  • VERSION: La versión de Kubernetes a la que se actualizan los nodos. Por ejemplo, --cluster-version=1.7.2 o cluster-version=latest.

Actualiza un grupo de nodos:

gcloud container clusters upgrade CLUSTER_NAME \
  --node-pool=NODE_POOL_NAME

Si deseas especificar una versión diferente de GKE en los nodos, usa la marca opcional --cluster-version:

gcloud container clusters upgrade CLUSTER_NAME \
  --node-pool=NODE_POOL_NAME \
  --cluster-version VERSION

Para obtener más información sobre cómo especificar versiones, consulta Control de versiones.

Para obtener más información, consulta la documentación gcloud container clusters upgrade.

Consola

Si deseas actualizar un grupo de nodos mediante la consola de Google Cloud, sigue estos pasos:

  1. Ve a la página de Google Kubernetes Engine en la consola de Google Cloud:

    Ir a Google Kubernetes Engine

  2. Junto al clúster que deseas editar, haz clic en  Acciones y, luego, en  Editar.

  3. En la página Detalles del clúster, haz clic en la pestaña Nodos.

  4. En la sección Grupos de nodos, haz clic en el nombre del grupo de nodos que deseas actualizar.

  5. Haz clic en  Editar.

  6. Haz clic en Cambiar, en Versión del nodo.

  7. Selecciona la versión deseada en la lista desplegable Versión del nodo y, luego, haz clic en Cambiar.

Implementa un Pod en un grupo de nodos específico

Puedes implementar un Pod de forma explícita en un grupo de nodos específico mediante un nodeSelector en el manifiesto del Pod. nodeSelector programa Pods en nodos con una etiqueta coincidente.

Todos los grupos de nodos de GKE tienen etiquetas con el siguiente formato: cloud.google.com/gke-nodepool: POOL_NAME. Agrega esta etiqueta al campo nodeSelector en el Pod, como se muestra en el siguiente ejemplo:

apiVersion: v1
kind: Pod
metadata:
  name: nginx
  labels:
    env: test
spec:
  containers:
  - name: nginx
    image: nginx
    imagePullPolicy: IfNotPresent
  nodeSelector:
    cloud.google.com/gke-nodepool: POOL_NAME

Para obtener más información, consulta Asigna Pods a nodos.

Como alternativa al selector de nodos, puedes usar la afinidad de nodos. Usa la afinidad de nodos si quieres una regla menos estricta en la que el Pod intenta cumplir con la restricción, pero aún está programado, incluso si la restricción no puede satisfacerse. Para obtener más información, consulta Afinidad de nodos. También puedes especificar las solicitudes de recursos para los contenedores.

Cambia un grupo de nodos a una versión inferior

Puedes cambiar un grupo de nodos a una versión inferior, por ejemplo, para mitigar una actualización incorrecta del grupo de nodos. Revisa las limitaciones antes de cambiar a una versión inferior de un grupo de nodos.

  1. Configura una exclusión de mantenimiento para el clúster a fin de evitar que GKE actualice el grupo de nodos de forma automática después de cambiar a una versión inferior.
  2. Si deseas cambiar a una versión inferior de un grupo de nodos, especifica una versión anterior mientras sigues las instrucciones para actualizar un grupo de nodos de forma manual.

Borra un grupo de nodos

Si borras un grupo de nodos, se borran los nodos y todas las cargas de trabajo en ejecución, sin respetar la configuración de PodDisruptionBudget. Para obtener más información sobre cómo esto afecta tus cargas de trabajo, incluidas las interacciones con selectores de nodos, consulta Borra grupos de nodos.

gcloud

Para borrar un grupo de nodos, ejecuta el comando gcloud container node-pools delete:

gcloud container node-pools delete POOL_NAME \
    --cluster CLUSTER_NAME

Console

Para borrar un grupo de nodos, realiza los siguientes pasos:

  1. Ve a la página de Google Kubernetes Engine en la consola de Google Cloud.

    Ir a Google Kubernetes Engine

  2. En la lista de clústeres, haz clic en el nombre del clúster Standard que deseas modificar.

  3. Haz clic en la pestaña Nodos.

  4. En la sección Grupos de nodos, haz clic en junto al grupo de nodos que deseas borrar.

  5. Cuando se te solicite confirmar, haz clic en Borrar.

Solucionar problemas

Para obtener información sobre la solución de problemas, consulta Soluciona problemas de grupos de nodos estándar y Soluciona problemas de registro de nodos.

¿Qué sigue?