Actualizar un grupo de nodos

Una vez que hayas creado un clúster, podrás modificar sus grupos de nodos. Solo se pueden actualizar determinados parámetros de un grupo de nodos, como su tamaño, su clave de cifrado y sus grupos de seguridad. En este documento se explica cómo realizar estas y otras actualizaciones habituales en un grupo de nodos.

Sin embargo, en este documento no se incluye una lista exhaustiva de los comandos de actualización. Si necesitas actualizar un parámetro que no se describe en este documento, consulta gcloud container aws node-pools update y la documentación de projects.locations.awsNodePools.patch.

Antes de empezar

Para actualizar un grupo de nodos, debes tener el siguiente permiso de Gestión de Identidades y Accesos: gkemulticloud.googleapis.com/awsNodePools.update.

Para obtener instrucciones sobre cómo gestionar los permisos, consulta Conceder roles de gestión de identidades y accesos a usuarios.

Actualizar un grupo de nodos

En las siguientes secciones se explica cómo hacer varios cambios en un grupo de nodos. Un grupo de nodos es un grupo de nodos de un clúster que tienen la misma configuración. Todos los nodos de un clúster deben pertenecer a un grupo de nodos.

Puedes actualizar varios parámetros de un grupo de nodos al mismo tiempo especificándolos todos en el mismo comando. Sin embargo, para que sea más claro, en este documento se muestra cómo actualizar un solo parámetro a la vez.

Cambiar la versión del grupo de nodos

En GKE en AWS, cambiar la versión de un grupo de nodos significa cambiar la versión de GKE que se ejecuta en los nodos de ese grupo.

Para cambiar la versión del grupo de nodos, especifica la nueva versión con la marca node-version en el siguiente comando:

gcloud container aws node-pools update NODE_POOL_NAME \
    --cluster CLUSTER_NAME \
    --location GOOGLE_CLOUD_LOCATION \
    --node-version NODE_POOL_VERSION

Haz los cambios siguientes:

Actualizar el tipo de instancia de un grupo de nodos

El tipo de instancia de un grupo de nodos es el tipo de instancia de AWS EC2 que se usa para crear los nodos de un grupo de nodos. Por ejemplo, el tipo de instancia m5.xlarge tiene 4 vCPUs, 16 GB de memoria y 32 GB de almacenamiento SSD.

Para cambiar el tipo de instancia de tu grupo de nodos, especifica el nuevo tipo de instancia con la marca instance-type en el siguiente comando:

gcloud container aws node-pools update NODE_POOL_NAME \
    --cluster=CLUSTER_NAME \
    --location=GOOGLE_CLOUD_LOCATION \
    --instance-type=INSTANCE_TYPE

Haz los cambios siguientes:

  • NODE_POOL_NAME: el nombre de tu grupo de nodos.
  • CLUSTER_NAME: el nombre de tu clúster.
  • GOOGLE_CLOUD_LOCATION: la Google Cloud región que gestiona tu clúster.
  • INSTANCE_TYPE: el nuevo tipo de instancia de máquina de AWS para este grupo de nodos. Por ejemplo, m5.xlarge.

Las actualizaciones del tipo de instancia del grupo de nodos no deben cambiar la arquitectura de CPU subyacente de la instancia de EC2. Por ejemplo, si tu grupo de nodos original usa instancias con CPUs x86, el tipo de instancia actualizado debe seguir usando CPUs x86 en lugar de otra arquitectura.

Para ver una lista completa de las instancias admitidas y sus arquitecturas subyacentes, consulta los tipos de instancias de AWS admitidos.

Rotar la clave de cifrado de un grupo de nodos

Para obtener información sobre cómo actualizar las claves de cifrado de KMS de tu grupo de nodos, consulta Rotación de claves.

Sustituir grupos de seguridad de un grupo de nodos

Para actualizar los grupos de seguridad asociados a un grupo de nodos, ejecuta el siguiente comando:

gcloud container aws node-pools update NODE_POOL_NAME \
    --cluster=CLUSTER_NAME \
    --location=GOOGLE_CLOUD_LOCATION \
    --security-group-ids=SECURITY_GROUP_IDS

Haz los cambios siguientes:

  • NODE_POOL_NAME: el nombre del grupo de nodos que se va a actualizar.
  • CLUSTER_NAME: el nombre de tu clúster.
  • GOOGLE_CLOUD_LOCATION: la Google Cloud región que gestiona tu clúster.
  • SECURITY_GROUP_IDS: lista separada por comas de grupos de seguridad que se adjuntarán al grupo de nodos.

En los clústeres que ejecutan la versión 1.25 de GKE o una posterior, la actualización se puede realizar de forma dinámica sin reiniciar los nodos. Este es el método recomendado para los clústeres que usan GKE 1.25 o versiones posteriores.

Para realizar actualizaciones dinámicas, el rol de agente de servicio de la API debe tener los siguientes permisos de AWS IAM:

  • ec2:ModifyInstanceAttribute
  • ec2:DescribeInstances

Estos permisos se asignan automáticamente al rol de agente de servicio de la API si eliges el rol de agente de servicio de la API predeterminado al crear el clúster.

En los clústeres que ejecutan versiones anteriores de GKE o versiones 1.25 o posteriores, pero el agente de servicio de la API no tiene los permisos para realizar una actualización dinámica, la actualización se realiza mediante una actualización gradual. Las actualizaciones continuas son más disruptivas que las dinámicas porque reinician los nodos, mientras que las dinámicas no lo hacen. Para obtener más información sobre las actualizaciones graduales, consulta Actualizaciones con compensación.

Eliminar grupos de seguridad de grupos de nodos

Para quitar todos los grupos de seguridad no predeterminados asociados a tu grupo de nodos, ejecuta el siguiente comando. Para obtener más información sobre los grupos de seguridad predeterminados, consulta Grupos de seguridad de grupos de nodos.

gcloud container aws node-pools update NODE_POOL_NAME \
    --cluster=CLUSTER_NAME \
    --location=GOOGLE_CLOUD_LOCATION \
    --clear-security-group-ids

Haz los cambios siguientes:

  • NODE_POOL_NAME: el nombre del grupo de nodos que se va a actualizar.
  • CLUSTER_NAME: el nombre de tu clúster.
  • GOOGLE_CLOUD_LOCATION: la Google Cloud región que gestiona tu clúster.

Cambiar el tamaño de un grupo de nodos

Para cambiar el tamaño de tu grupo de nodos (es decir, el número de nodos del grupo), asigna nuevos valores a las marcas min-nodes y max-nodes en el siguiente comando:

gcloud container aws node-pools update NODE_POOL_NAME \
    --cluster CLUSTER_NAME \
    --location GOOGLE_CLOUD_LOCATION \
    --min-nodes MIN_NODES \
    --max-nodes MAX_NODES

Haz los cambios siguientes:

  • NODE_POOL_NAME: el nombre del grupo de nodos que se va a actualizar.
  • CLUSTER_NAME: el nombre del clúster al que se va a adjuntar el grupo de nodos.
  • GOOGLE_CLOUD_LOCATION: la región Google Cloud admitida que gestiona tu clúster. Por ejemplo, us-west1.
  • MIN_NODES: número mínimo de nodos que puede contener el grupo de nodos. El valor puede ser 0 o superior.
  • MAX_NODES: número máximo de nodos que puede contener el grupo de nodos. El valor debe ser al menos 1 y superior o igual al valor de MIN_NODES.

Más información sobre cómo cambiar el tamaño de los grupos de nodos

Antes de cambiar el tamaño de un grupo de nodos, es importante evaluar las posibles repercusiones en tus cargas de trabajo.

Acciones de cambio de tamaño y sus consecuencias

Cuando se cambia el tamaño de los grupos de nodos, se activan diferentes acciones en función de la nueva configuración y del estado actual de los nodos. Es fundamental entender estas acciones y sus implicaciones:

  • Sin cambios: si el número de nodos actual ya coincide con el nuevo intervalo especificado, GKE en AWS no ajusta el número de nodos.
  • Aumentar el mínimo: si el nuevo número mínimo de nodos es superior al número actual, GKE on AWS añade nodos de forma incremental hasta alcanzar el tamaño mínimo recién definido.
  • Reducir el máximo: si cambias el número máximo de nodos a un valor inferior al actual, GKE on AWS realizará las siguientes acciones:
    • Inhabilita la herramienta de adaptación dinámica de clústeres.
    • Define el grupo de escalado automático del grupo de nodos con el tamaño mínimo especificado.
    • Selecciona nodos individuales para eliminarlos. Cada nodo se acordonará, se vaciará de sus tareas y, a continuación, se finalizará. Este procedimiento continúa hasta que se alcanza el tamaño máximo especificado.
    • Modifica el grupo de escalado automático del grupo de nodos para que se ajuste al nuevo tamaño máximo.
    • Vuelve a habilitar la herramienta de ajuste automático de escala del clúster una vez que se alcanza el tamaño máximo.

Para obtener más información sobre la herramienta de adaptación dinámica de clústeres, consulta Información sobre la herramienta de adaptación dinámica de clústeres.

Protección de cargas de trabajo durante el cambio de tamaño

Para asegurar la disponibilidad continua de las cargas de trabajo durante el cambio de tamaño del grupo de nodos, GKE en AWS proporciona las siguientes medidas de protección:

  • Durante el drenaje de un nodo, GKE on AWS respeta la configuración de PodDisruptionBudget hasta una hora. Los pods que queden en el nodo después de este periodo se eliminarán.

  • Cuando se reinician o se eliminan nodos, GKE en AWS se asegura de que se apaguen correctamente y espera hasta dos horas. Si los pods permanecen en el nodo después de este periodo, se elimina la instancia de máquina virtual subyacente.

Comprobar el estado de un grupo de nodos

Para verificar que la actualización se haya realizado correctamente, puedes comprobar el estado del nodo pool ejecutando el siguiente comando:

gcloud container aws node-pools describe NODE_POOL_NAME \
    --cluster CLUSTER_NAME \
    --location GOOGLE_CLOUD_LOCATION

Haz los cambios siguientes:

  • NODE_POOL_NAME: el nombre de tu grupo de nodos.
  • CLUSTER_NAME: el nombre de tu clúster.
  • GOOGLE_CLOUD_LOCATION: la Google Cloud región que gestiona tu clúster.

GKE on AWS intenta realizar las actualizaciones solicitadas en el grupo de nodos y, a continuación, realiza una comprobación del estado. Si falla alguno de los pasos de actualización, el estado del grupo de nodos se marcará como DEGRADED.

Cancelar una operación de actualización

Para cancelar una actualización de un grupo de nodos en curso, debes determinar el nombre de la operación en curso. Para enumerar las operaciones en curso y sus nombres respectivos, ejecuta el siguiente comando:

gcloud container aws operations list--filter="status=PENDING OR status=RUNNING"
    --location GOOGLE_CLOUD_LOCATION

Sustituye GOOGLE_CLOUD_LOCATION por la región admitida Google Cloud que gestiona tu clúster. Por ejemplo, us-west1.

Busca el OPERATION_NAME de la actualización que quieras cancelar en el resultado del comando. Para ver una lista de las operaciones, consulta gcloud container aws operations list.

Una vez que hayas identificado el OPERATION_NAME, puedes cancelar la operación con el siguiente comando:

gcloud container aws operations cancel OPERATION_NAME
    --location GOOGLE_CLOUD_LOCATION

Haz los cambios siguientes:

  • OPERATION_NAME: el nombre de la operación de actualización.
  • GOOGLE_CLOUD_LOCATION: la región Google Cloud admitida que gestiona tu clúster. Por ejemplo, us-west1.

Ten en cuenta que, si cancelas una actualización de un grupo de nodos en curso, no se revertirán las actualizaciones de nodos que ya se hayan completado. Esto puede provocar que el grupo de nodos se actualice parcialmente.