Actualiza nodos de forma automática

En esta página, se muestra cómo configurar la reparación automática de nodos en Google Kubernetes Engine (GKE).

Descripción general

Las actualizaciones automáticas de nodos te ayudarán a mantener los nodos de tu clúster actualizados a la versión más reciente del plano de control del clúster cuando se actualiza el plano de control por ti. Cuando creas un clúster o un grupo de nodos nuevo con Google Cloud Console o el comando de gcloud, se habilita la actualización automática de nodos de forma predeterminada.

Para obtener más información sobre las actualizaciones de clústeres y nodos, consulta la sección sobre cómo actualizar un clúster.

Las actualizaciones automáticas de nodo proporcionan varios beneficios:

  • Reducción de la sobrecarga de administración: No tienes que realizar un seguimiento y actualizar los nodos de forma manual cuando el plano de control se actualiza en tu nombre.
  • Mejor seguridad: En ocasiones, se lanzan objetos binarios nuevos para corregir problemas de seguridad. Con las actualizaciones automáticas, GKE asegura automáticamente que las actualizaciones de seguridad se apliquen y permanezcan siempre al día.
  • Facilidad de uso: Proporciona una manera simple de mantener actualizados los nodos con las funciones más recientes de Kubernetes.

Los grupos de nodos con actualizaciones automáticas habilitadas se programan para actualizaciones cuando cumplen los criterios de selección (que figuran en las notas de la versión). Los lanzamientos se realizan en etapas durante varias semanas para garantizar la estabilidad del clúster y de la flota. Cuando se realiza la actualización, los nodos se desvían y se vuelven a crear para que coincidan con la versión actual del plano de control. Las modificaciones en el disco de arranque de la VM de un nodo no se mantienen en las recreaciones de nodos. Para conservar las modificaciones después de volver a crear el nodo, usa un DaemonSet.

La actualización automática de nodos no está disponible para clústeres Alfa. Si usas un clúster con grupos de nodos de Windows Server, consulta la sección sobre cómo actualizar grupos de nodos de Windows Server antes de habilitar la actualización automática de nodos.

Verifica el estado de la actualización automática para un grupo de nodos existente

Puedes verificar si la actualización automática está habilitada o no para un grupo de nodos mediante la consola de Google Cloud o el comando de gcloud.

gcloud

Para verificar el estado de la actualización automática de un grupo de nodos, ejecuta el siguiente comando:

gcloud container node-pools describe NODE_POOL_NAME \
  --cluster CLUSTER_NAME \
  --zone COMPUTE_ZONE

Reemplaza lo siguiente:

  • NODE_POOL_NAME: el nombre del grupo de nodos
  • CLUSTER_NAME: Es el nombre del clúster que contiene el grupo de nodos.
  • COMPUTE_ZONE: es la zona de procesamiento del clúster.

Console

Para verificar el estado de la actualización automática de un grupo de nodos, realiza lo siguiente:

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

    Ir a Google Kubernetes Engine

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

  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.

  5. En la página Detalles del grupo de nodos, en Administración, observa el valor del campo Actualización automática.

Habilita las actualizaciones automáticas de nodo para grupos de nodos existentes

Cuando creas un clúster nuevo con la consola de Google Cloud o el comando de gcloud, la actualización automática de nodo se habilita de forma predeterminada.

Puedes habilitar la actualización automática de nodo si está inhabilitada en ese momento.

gcloud

Para habilitar las actualizaciones automáticas de un grupo de nodos existente, ejecuta el siguiente comando:

gcloud container node-pools update NODE_POOL_NAME \
    --cluster CLUSTER_NAME \
    --zone COMPUTE_ZONE \
    --enable-autoupgrade

Reemplaza lo siguiente:

  • NODE_POOL_NAME: el nombre del grupo de nodos
  • CLUSTER_NAME: Es el nombre del clúster que contiene el grupo de nodos.
  • COMPUTE_ZONE: es la zona de procesamiento del clúster.

Console

Para habilitar las actualizaciones automáticas de un grupo de nodos existente, realiza los siguientes pasos:

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

    Ir a Google Kubernetes Engine

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

  3. Haz clic en la pestaña Nodos.

  4. En Grupos de nodos, haz clic en el nombre del grupo de nodos que deseas modificar.

  5. En la página Detalles del grupo de nodos, haz clic en Editar.

  6. En Administración, selecciona la casilla de verificación Habilitar reparación automática.

  7. Haz clic en Guardar.

Para tener más control sobre cuándo se pueden actualizar los nodos de forma automática, considera configurar los períodos de mantenimiento y las exclusiones.

Verifica el estado de las actualizaciones de los nodos

Puedes verificar el estado de una actualización con gcloud container operations.

Visualiza una lista de cada operación en ejecución o completada en el clúster:

gcloud container operations list

A cada operación se le asigna un ID de operación y un tipo de operación, tiempos de comienzo y finalización, un clúster de destino y un estado. La lista es similar al siguiente ejemplo:

NAME                              TYPE                ZONE           TARGET              STATUS_MESSAGE  STATUS  START_TIME                      END_TIME
operation-1505407677851-8039e369  CREATE_CLUSTER      us-west1-a     my-cluster                          DONE    20xx-xx-xxT16:47:57.851933021Z  20xx-xx-xxT16:50:52.898305883Z
operation-1505500805136-e7c64af4  UPGRADE_CLUSTER     us-west1-a     my-cluster                          DONE    20xx-xx-xxT18:40:05.136739989Z  20xx-xx-xxT18:41:09.321483832Z
operation-1505500913918-5802c989  DELETE_CLUSTER      us-west1-a     my-cluster                          DONE    20xx-xx-xxT18:41:53.918825764Z  20xx-xx-xxT18:43:48.639506814Z

Para obtener más información sobre una operación en particular, especifica el ID de operación como se muestra en el siguiente comando:

gcloud container operations describe OPERATION_ID

Por ejemplo:

gcloud container operations describe operation-1507325726639-981f0ed6
endTime: '20xx-xx-xxT21:40:05.324124385Z'
name: operation-1507325726639-981f0ed6
operationType: UPGRADE_CLUSTER
selfLink: https://container.googleapis.com/v1/projects/.../kubernetes-engine/docs/zones/us-central1-a/operations/operation-1507325726639-981f0ed6
startTime: '20xx-xx-xxT21:35:26.639453776Z'
status: DONE
targetLink: https://container.googleapis.com/v1/projects/.../kubernetes-engine/docs/zones/us-central1-a/clusters/...
zone: us-central1-a

Verifica la configuración de actualización de grupos de nodos

Puedes ver los detalles de la estrategia de actualización de grupos de nodos que se usa para tus grupos de nodos mediante el comando gcloud container node-pools describe. En las actualizaciones azul-verde, el comando también muestra la fase actual de la actualización.

Ejecute el siguiente comando:

gcloud container node-pools describe NODE_POOL_NAME \
--cluster=CLUSTER_NAME

Reemplaza lo siguiente:

  • NODE_POOL_NAME: el nombre del grupo de nodos que se debe describir
  • CLUSTER_NAME: el nombre del clúster del grupo de nodos que deseas describir

Este comando generará la configuración de actualización actual. En el siguiente ejemplo, se muestra el resultado si usas la estrategia de actualización azul-verde.

upgradeSettings:
  blueGreenSettings:
    nodePoolSoakDuration: 1800s
    standardRolloutPolicy:
      batchNodeCount: 1
      batchSoakDuration: 10s
  strategy: BLUE_GREEN

Si usas la estrategia de actualización azul-verde, el resultado también incluye detalles sobre la configuración de actualización azul-verde y su fase intermedia actual. En el siguiente ejemplo, se muestra cómo podría ser este resultado:

updateInfo:
  blueGreenInfo:
    blueInstanceGroupUrls:
    - https://www.googleapis.com/compute/v1/projects/{PROJECT_ID}/zones/{LOCATION}/instanceGroupManagers/{BLUE_INSTANCE_GROUP_NAME}
    bluePoolDeletionStartTime: {BLUE_POOL_DELETION_TIME}
    greenInstanceGroupUrls:
    - https://www.googleapis.com/compute/v1/projects/{PROJECT_ID}/zones/{LOCATION}/instanceGroupManagers/{GREEN_INSTANCE_GROUP_NAME}
    greenPoolVersion: {GREEN_POOL_VERSION}
    phase: DRAINING_BLUE_POOL

Habilita las actualizaciones automáticas de nodo para grupos de nodos existentes

Aunque no se recomienda, puedes inhabilitar la actualización automática de nodo en un grupo de nodos existente si el clúster subyacente no está inscrito en un canal de versiones. Inhabilitar las actualizaciones automáticas de nodos no bloquea la actualización del plano de control de tu clúster.

Si lo haces, eres responsable de garantizar que los nodos del clúster ejecuten una versión compatible con la versión del clúster y que la versión cumpla con la Política de compatibilidad de versiones y del sesgo de versiones de Kubernetes. Los nodos que ejecutan versiones que alcanzaron su fecha de final del ciclo de vida se actualizan de forma automática, incluso cuando la actualización automática está inhabilitada, para garantizar la compatibilidad y la compatibilidad con el sesgo de versiones.

gcloud

Para inhabilitar las actualizaciones automáticas de un grupo de nodos existente, ejecuta el siguiente comando:

gcloud container node-pools update NODE_POOL_NAME \
    --cluster CLUSTER_NAME \
    --zone COMPUTE_ZONE \
    --no-enable-autoupgrade

Console

Para inhabilitar las actualizaciones automáticas de un grupo de nodos existente, realiza los siguientes pasos:

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

    Ir a Google Kubernetes Engine

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

  3. Haz clic en la pestaña Nodos.

  4. En Grupos de nodos, haz clic en el nombre del grupo de nodos que deseas modificar.

  5. En la página Detalles del grupo de nodos, haz clic en Editar.

  6. En Administración, desmarca la casilla de verificación Habilitar actualización automática.

  7. Haz clic en Guardar para modificar el clúster.

Migra cargas de trabajo a la versión anterior del nodo (mitigación temporal)

No puedes cambiar un grupo de nodos a una versión inferior. Sin embargo, para cambiar a una versión inferior del nodo después de actualizar el grupo de nodos, usa los siguientes lineamientos como mitigación temporal para migrar cargas de trabajo a una versión de nodo deseada.

  1. Comprueba si el rango de tu subred y el rango de IP del pod permiten que los nodos adicionales del clúster alojen todos los pods actualmente alojados por el grupo de nodos actual. Comprueba la cantidad máxima de pods y la cantidad máxima de nodos para un rango de subred.
  2. Comprueba si se admite la versión del nodo que se migrará.

  3. Verifica si los nodos tienen cargas de trabajo con PodDisruptionBudget que pueden ralentizar la migración de las cargas de trabajo.

  4. Crea otro grupo de nodos con la versión anterior con capacidad (cantidad de nodos) para alojar todos los pods alojados en el grupo de nodos actual.

  5. Desvía los nodos del grupo de nodos con la versión más reciente mediante kubectl drain <nodename>, un nodo a la vez. Confirma que los pods del nodo se hayan movido a un nodo del grupo de nodos nuevo (que ejecuta la versión anterior).

  6. Muy importante: Confirma que todos los pods se hayan migrado a nodos en el grupo de nodos que ejecuta la versión anterior.

  7. Borra el grupo de nodos que ejecuta la última versión del grupo de nodos si ya no la necesitas.

Crea un clúster o grupo de nodos con las actualizaciones automáticas de nodos habilitadas

gcloud

A fin de crear un clúster con actualizaciones automáticas habilitadas para el grupo de nodos predeterminado, especifica la marca --enable-autoupgrade en el comando gcloud container clusters create:

gcloud container clusters create CLUSTER_NAME \
    --zone COMPUTE_ZONE \
    --enable-autoupgrade

Para crear un grupo de nodos con la actualización automática habilitada, especifica la marca --enable-autoupgrade en el comando gcloud container node-pools create:

gcloud container node-pools create NODE_POOL_NAME \
    --cluster CLUSTER_NAME \
    --zone COMPUTE_ZONE \
    --enable-autoupgrade

Console

Los clústeres y los grupos de nodos creados con la consola tienen actualizaciones automáticas habilitadas de forma predeterminada. Consulta Crea un clúster o Agrega y administra grupos de nodos a fin de obtener instrucciones para crear clústeres y grupos de nodos.

Puedes inhabilitar las actualizaciones automáticas para los grupos de nodos nuevos. En la página de creación de clústeres, haz clic en el nombre del grupo de nodos que deseas modificar y, luego, borra Habilitar actualización automática.

Recibe notificaciones de actualización

GKE publica notificaciones de actualización en Pub/Sub, lo que te brinda un canal para recibir información de GKE sobre tus clústeres.

Para obtener más información, consulta Recibe notificaciones de actualización del clúster.

Cambia los parámetros de actualización de aumento

Para obtener más información sobre cómo cambiar los parámetros de actualización de aumento, consulta Configura las actualizaciones de aumento.

Ejerce control durante una actualización del grupo de nodos

Durante las actualizaciones automáticas y las actualizaciones iniciadas de forma manual del grupo de nodos, puedes realizar las siguientes acciones.

Cancela la actualización de un grupo de nodos

Puedes cancelar una actualización en cualquier momento. Para obtener más información sobre lo que sucede cuando cancelas una actualización de aumento, consulta Cancela una actualización de aumento. Para obtener más información sobre lo que sucede cuando cancelas una actualización azul-verde, consulta Cancela una actualización azul-verde.

  1. Obtén el ID de operación de la actualización:

    gcloud container operations list
    
  2. Cancela la actualización:

    gcloud container operations cancel OPERATION_ID
    

Consulta la documentación de gcloud container operations cancel.

Reanuda una actualización del grupo de nodos

Para reanudar una actualización, vuelve a iniciarla de forma manual y especifica la versión de destino de la actualización original.

Por ejemplo, si pausaste una actualización a la versión 1.23.1-gke.100 en curso, puedes reanudar esta actualización cancelada si vuelves a iniciar la misma actualización en el grupo de nodos para la versión 1.23.1-gke.100.

Para obtener más información sobre lo que sucede cuando reanudas una actualización, consulta Reanuda una actualización de aumento y actualización azul-verde.

Para reanudar una actualización, usa el siguiente comando:

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

Reemplaza lo siguiente:

  • NODE_POOL_NAME: El nombre del grupo de nodos para el que deseas reanudar la actualización del grupo de nodos.
  • CLUSTER_NAME: El nombre del clúster del grupo de nodos para el que deseas reanudar la actualización.
  • VERSION: Es la versión de destino de la actualización del grupo de nodos cancelada.

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

Revierte la actualización de un grupo de nodos

Puedes revertir un grupo de nodos para devolverlo a su estado original si se canceló o falló una actualización. No puedes revertir los grupos de nodos una vez que se actualizaron con éxito.

Para obtener más información sobre lo que sucede cuando se revierte una actualización de un grupo de nodos, consulta Revierte una actualización de aumento o Revierte una actualización azul-verde.

Para revertir una actualización, ejecuta el siguiente comando:

gcloud container node-pools rollback NODE_POOL_NAME \
  --cluster CLUSTER_NAME

Reemplaza lo siguiente:

  • NODE_POOL_NAME: el nombre del grupo de nodos en el que se revertirá la actualización del grupo de nodos.
  • CLUSTER_NAME: el nombre del clúster del grupo de nodos para el que se debe revertir la actualización.

Consulta la documentación de gcloud container node-pools rollback.

Completa una actualización del grupo de nodos

Si usas la estrategia de actualización azul-verde, puedes completar una actualización del grupo de nodos durante la fase de prueba y omitir el resto del tiempo de prueba.

Para obtener información sobre cómo funciona la actualización de un grupo de nodos, consulta Completa una actualización de grupo de nodos.

Para completar una actualización cuando usas la estrategia de actualización azul y verde, ejecuta el siguiente comando:

gcloud container node-pools complete-upgrade NODE_POOL_NAME \
  --cluster CLUSTER_NAME

Reemplaza lo siguiente:

  • NODE_POOL_NAME: El nombre del grupo de nodos para el que deseas completar la actualización.
  • CLUSTER_NAME: El nombre del clúster del grupo de nodos para el que deseas completar la actualización.

Consulta la documentación de gcloud container node-pools complete-upgrade.

¿Qué sigue?