Actualizar un grupo de nodos

Después de crear un clúster, puedes modificar sus grupos de nodos. Solo se pueden actualizar ciertos parámetros de un grupo de nodos, como su tamaño, clave de encriptación y grupos de seguridad. En este documento, se explica cómo realizar estas y otras actualizaciones comunes a un grupo de nodos.

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

Antes de comenzar

Para actualizar un grupo de nodos, debes tener el permiso gkemulticloud.googleapis.com/awsNodePools.update de Identity and Access Management.

Si deseas obtener instrucciones para administrar permisos, consulta Otorga roles de IAM a los usuarios.

Actualizar un grupo de nodos

En las siguientes secciones, se explica cómo realizar varias actualizaciones en un grupo de nodos. Un grupo de nodos es un conjunto de nodos dentro 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 si los especificas en el mismo comando. Sin embargo, para mayor claridad, en este documento se muestra cómo actualizar un solo parámetro a la vez.

Cambia la versión del grupo de nodos

En GKE en AWS, cambiar una 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 versión nueva mediante 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

Reemplaza lo siguiente:

Actualiza el tipo de instancia del 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 en un grupo. Por ejemplo, el tipo de instancia m5.xlarge tiene 4 CPU virtuales, 16 GB de memoria y 32 GB de almacenamiento SSD.

Para cambiar el tipo de instancia del grupo de nodos, especifica el tipo de instancia nuevo 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

Reemplaza lo siguiente:

  • NODE_POOL_NAME: es el nombre de tu grupo de nodos.
  • CLUSTER_NAME: es el nombre de tu clúster.
  • GOOGLE_CLOUD_LOCATION: Es la región de Google Cloud que administra tu clúster.
  • INSTANCE_TYPE: el tipo de instancia de máquina de AWS deseado 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 la CPU subyacente de la instancia de EC2. Por ejemplo, si tu grupo de nodos original usa instancias con CPU x86, el tipo de instancia actualizado deberá seguir usando CPU x86, en lugar de otra arquitectura.

Para obtener una lista completa de las instancias compatibles y sus arquitecturas subyacentes, consulta los tipos de instancias de AWS compatibles.

Rota la clave de encriptación de un grupo de nodos

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

Reemplaza los grupos de seguridad del grupo de nodos

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

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

Reemplaza lo siguiente:

  • NODE_POOL_NAME: el nombre del grupo de nodos que se actualizará.
  • CLUSTER_NAME: es el nombre de tu clúster.
  • GOOGLE_CLOUD_LOCATION: Es la región de Google Cloud que administra tu clúster.
  • SECURITY_GROUP_IDS: es una lista de grupos de seguridad separados por comas que se adjuntarán al grupo de nodos.

Para los clústeres que ejecutan la versión 1.25 de GKE o una versión posterior, la actualización se puede realizar de forma dinámica sin reiniciar los nodos. Este es el enfoque recomendado para los clústeres que usan GKE v1.25 o posterior.

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

  • ec2:ModifyInstanceAttribute
  • ec2:DescribeInstances

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

Para los clústeres que ejecutan versiones anteriores de GKE, o los clústeres que ejecutan las 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 progresiva. Las actualizaciones progresivas son más disruptivas que las dinámicas, ya que estas reinician los nodos, mientras que las dinámicas no. Para obtener más información sobre las actualizaciones progresivas, consulta Actualizaciones de aumento.

Quita grupos de seguridad del grupo de nodos

Puedes quitar todos los grupos de seguridad no predeterminados adjuntos al grupo de nodos mediante la ejecución del siguiente comando. Para obtener más información sobre los grupos de seguridad predeterminados, consulta Grupos de seguridad del grupo de nodos.

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

Reemplaza lo siguiente:

  • NODE_POOL_NAME: el nombre del grupo de nodos que se actualizará.
  • CLUSTER_NAME: es el nombre de tu clúster.
  • GOOGLE_CLOUD_LOCATION: Es la región de Google Cloud que administra tu clúster.

Modifica el tamaño de un grupo de nodos

Para cambiar el tamaño de tu grupo de nodos (es decir, la cantidad de nodos en el grupo de nodos), asigna valores nuevos 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

Reemplaza lo siguiente:

  • NODE_POOL_NAME: el nombre del grupo de nodos que se actualizará.
  • CLUSTER_NAME: el nombre del clúster al que se conectará el grupo de nodos
  • GOOGLE_CLOUD_LOCATION: La región de Google Cloud compatible con la que se administra tu clúster Por ejemplo, us-west1.
  • MIN_NODES: la cantidad mínima de nodos que puede contener el grupo de nodos El valor puede ser 0 o mayor
  • MAX_NODES: la cantidad máxima de nodos que puede contener el grupo de nodos El valor debe ser al menos 1 y mayor o igual que el valor de MIN_NODES.

Más detalles 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.

Cambiar el tamaño de las acciones y sus consecuencias

Cuando cambias el tamaño de los grupos de nodos, se activan diferentes acciones según la configuración nueva y el estado actual de los nodos. Es fundamental comprender estas acciones y sus implicaciones:

  • Sin cambios: Si el recuento de nodos actual ya se alinea con el rango especificado nuevo, GKE en AWS no realiza ajustes en la cantidad de nodos.
  • Aumenta el mínimo: Si la nueva cantidad mínima de nodos se establece más arriba que la cantidad existente, GKE en AWS agrega nodos de forma incremental hasta que se alcanza el tamaño mínimo recién definido.
  • Disminuye el recuento máximo: Si cambias el recuento máximo de nodos a un valor inferior al recuento existente, GKE en AWS realiza las siguientes acciones:
    • Inhabilita el escalador automático del clúster.
    • Establece el grupo de ajuste de escala automático para el grupo de nodos en el tamaño mínimo especificado.
    • Selecciona nodos individuales para su eliminación. Cada nodo se acordona, se desvía de sus tareas y, luego, se finaliza. Este procedimiento continúa hasta que se alcanza el tamaño máximo especificado.
    • Se modifica el grupo de ajuste de escala automático del grupo de nodos para que se alinee con el nuevo tamaño máximo.
    • Vuelve a habilitar el escalador automático del clúster una vez que se alcanza el tamaño máximo.

Para obtener más información sobre el escalador automático del clúster, consulta Acerca del escalador automático del clúster.

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

Para garantizar la disponibilidad continua de las cargas de trabajo durante el cambio de tamaño del grupo de nodos, GKE en AWS proporciona las siguientes protecciones:

  • Durante un vaciado de nodos, GKE en AWS respeta la configuración de PodDisruptionBudget durante una hora. Los pods que permanecen en el nodo después de este período se borran.

  • Cuando los nodos se configuran para reiniciarse o quitarse, GKE en AWS garantiza un cierre correcto y espera hasta dos horas. Si los Pods permanecen en el nodo después de este período, se borra la instancia de máquina virtual subyacente.

Verifica el estado del grupo de nodos

Para verificar que la actualización se haya realizado correctamente, puedes verificar el estado del grupo de nodos mediante la ejecución del siguiente comando:

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

Reemplaza lo siguiente:

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

GKE en AWS intenta realizar las actualizaciones solicitadas en el grupo de nodos y, luego, realiza una verificación de estado. Si alguno de los pasos de la actualización falla, se marca el estado del grupo de nodos como DEGRADED.

Cancela una operación de actualización

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

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

Reemplaza GOOGLE_CLOUD_LOCATION por la región de Google Cloud compatible con la que se administra tu clúster. Por ejemplo, us-west1.

Busca el OPERATION_NAME de la actualización que deseas cancelar en el resultado del comando. Para obtener una lista de 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

Reemplaza lo siguiente:

  • OPERATION_NAME: el nombre de la operación de actualización.
  • GOOGLE_CLOUD_LOCATION: La región de Google Cloud compatible con la que se administra tu clúster. Por ejemplo, us-west1.

Ten en cuenta que cancelar una actualización de grupo de nodos en curso no revierte las actualizaciones de nodos que ya se completaron. Esto puede generar un grupo de nodos parcialmente actualizado.