Actualiza nodos de forma automática


En esta página, se muestra cómo configurar la actualizació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 la consola de Google Cloud 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 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 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 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 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.

Ejecuta 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

Inhabilita las actualizaciones automáticas de nodos

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.

Consideraciones para antes de inhabilitar las actualizaciones automáticas de nodos

Si inhabilitas las actualizaciones automáticas de nodo para un grupo de nodos, GKE no actualiza la versión de los nodos. Inhabilitar las actualizaciones automáticas de nodos no impide que GKE actualice el plano de control de tu clúster.

La inhabilitación evita las actualizaciones de versiones, pero no todas las tareas de mantenimiento

Inhabilitar las actualizaciones automáticas de nodos solo evita que GKE actualice la versión de los nodos, pero no evita que GKE inicie otras tareas de mantenimiento. Por ejemplo, incluso con las actualizaciones automáticas de nodo inhabilitadas, la activación de la Rotación de direcciones IP ,habilitación de la política de red oMigración de PSC en un clúster vuelve a crear todos los nodos en la misma versión que el plano de control, sin importar la versión seleccionada para el grupo de nodos. Para controlar el tiempo de mantenimiento, usa los períodos de mantenimiento y exclusiones.

La inhabilitación implica la responsabilidad de la compatibilidad de los nodos del plano de control

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. A partir de la versión 1.19 de GKE, GKE actualiza los nodos que ejecutan una versión no compatible después de que la versión alcance el final del ciclo de vida para garantizar el estado del clúster y la alineación con la política de sesgo de la versión de código abierto. Es posible que los nodos que ejecutan versiones no compatibles no se actualicen de inmediato cuando finalice la asistencia de la versión, y los tiempos reales pueden variar a discreción de Google.

La inhabilitación no detiene las operaciones en curso

La inhabilitación de las actualizaciones automáticas de nodo no detiene ni cancela las actualizaciones en curso a los nodos de los grupos de nodos. Para cancelar o detener las actualizaciones en curso, sigue a la sección sobre cómo cancelar una actualización de nodo. Cancelar una actualización de nodo puede ser útil en situaciones en las que encuentras cargas de trabajo en los nodos actualizados y deseas evitar más interrupciones.

Si la actualización se completa por completo para todo el grupo de nodos, la actualización no se puede revertir ni cancelar. Para cambiar a una versión inferior del grupo de nodos, consulta Cambia a una versión inferior de grupos de nodos.

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

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

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 de Google Cloud tienen habilitadas las actualizaciones automáticas 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 cambiar los nodos actualizados a su estado original antes de que comience la actualización del grupo de nodos.

Usa el comando rollback si se canceló una actualización en curso, o si la actualización falló o está incompleta debido a un tiempo de espera de período de mantenimiento. Como alternativa, si quieres especificar la versión, sigue las instrucciones para cambiar a una versión inferior del grupo de nodos.

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?