Actualizar la versión de los nodos automáticamente


En esta página se muestra cómo configurar las actualizaciones automáticas de nodos en Google Kubernetes Engine (GKE).

Información general

Las actualizaciones automáticas de nodos te ayudan a mantener los nodos de tu clúster al día con la versión del plano de control del clúster cuando el plano de control se actualiza en tu nombre. Cuando creas un clúster o un grupo de nodos con la Google Cloud consola o el comando gcloud, la actualización automática de nodos está habilitada de forma predeterminada.

Consulta más información sobre las actualizaciones de clústeres y nodos.

Las actualizaciones automáticas de nodos ofrecen varias ventajas:

  • Menor sobrecarga de gestión: no tienes que monitorizar y actualizar manualmente tus nodos cuando se actualiza el plano de control en tu nombre.
  • Mayor seguridad: a veces se lanzan nuevos archivos binarios para solucionar un problema de seguridad. Con las actualizaciones automáticas, GKE se asegura automáticamente de que las actualizaciones de seguridad se apliquen y se mantengan al día.
  • Facilidad de uso: ofrece una forma sencilla de mantener tus nodos al día con las funciones más recientes de Kubernetes.

Los grupos de nodos con la actualización automática habilitada se programan para actualizarse cuando cumplen los criterios de selección (anunciados en las notas de la versión). Los lanzamientos se realizan por fases a lo largo de varias semanas para asegurar la estabilidad de los clústeres y las flotas. Cuando se realiza la actualización, los nodos se vacían y se vuelven a crear para que coincidan con la versión actual del plano de control. Las modificaciones realizadas en el disco de arranque de una VM de un nodo no se mantienen al volver a crear los nodos. Para conservar las modificaciones al volver a crear los nodos, utiliza un DaemonSet.

La actualización automática de nodos no está disponible en los clústeres alfa. Si usas un clúster con grupos de nodos de Windows Server, consulta el artículo Actualizar grupos de nodos de Windows Server antes de habilitar la actualización automática de nodos.

Antes de empezar

Antes de empezar, asegúrate de que has realizado las siguientes tareas:

  • Habilita la API de Google Kubernetes Engine.
  • Habilitar la API de Google Kubernetes Engine
  • Si quieres usar Google Cloud CLI para esta tarea, instálala y, a continuación, inicialízala. Si ya has instalado la gcloud CLI, obtén la versión más reciente ejecutando gcloud components update.
  • Asegúrate de que tienes un clúster Standard. Cuando creas un clúster con la Google Cloud consola o el comando de la CLI de Google Cloud, la actualización automática de nodos está habilitada de forma predeterminada. Para crear un clúster estándar, consulta Crear un clúster regional.

Comprobar el estado de la actualización automática de un grupo de nodos

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

gcloud

Para comprobar 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 \
  --location CONTROL_PLANE_LOCATION

Haz los cambios siguientes:

  • NODE_POOL_NAME: el nombre del grupo de nodos.
  • CLUSTER_NAME: el nombre del clúster que contiene el grupo de nodos.
  • CONTROL_PLANE_LOCATION: la ubicación de Compute Engine del plano de control de tu clúster. Proporciona una región para los clústeres regionales o una zona para los clústeres zonales.

Busca el campo autoUpgrade en el resultado para ver si las actualizaciones automáticas están habilitadas o inhabilitadas en el grupo de nodos.

management:
  autoUpgrade: true

Consola

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

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

    Ir a Google Kubernetes Engine

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

  3. Haz clic en la pestaña Nodos.

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

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

Habilitar las actualizaciones automáticas de nodos en un grupo de nodos

Cuando creas un clúster con la Google Cloud consola o el comando gcloud, la actualización automática de nodos está habilitada de forma predeterminada.

Puedes habilitar la actualización automática de nodos si está inhabilitada.

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 \
    --location CONTROL_PLANE_LOCATION \
    --enable-autoupgrade

Haz los cambios siguientes:

  • NODE_POOL_NAME: el nombre del grupo de nodos.
  • CLUSTER_NAME: el nombre del clúster que contiene el grupo de nodos.
  • CONTROL_PLANE_LOCATION: la ubicación de Compute Engine del plano de control de tu clúster. Proporciona una región para los clústeres regionales o una zona para los clústeres zonales.

Consola

Para habilitar las actualizaciones automáticas para un grupo de nodos existente, sigue estos pasos:

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

    Ir a Google Kubernetes Engine

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

  3. Haz clic en la pestaña Nodos.

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

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

  6. En Gestión, selecciona la casilla Habilitar actualización automática.

  7. Haz clic en Guardar.

Si quieres tener más control sobre cuándo se pueden actualizar automáticamente los nodos, puedes configurar ventanas de mantenimiento y exclusiones.

Comprobar el estado de las actualizaciones de nodos

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

Consulta una lista de todas las operaciones en curso y completadas del clúster de los últimos 12 días si hay menos de 5000 operaciones, o las últimas 5000 operaciones:

gcloud container operations list \
    --location=CONTROL_PLANE_LOCATION

A cada operación se le asigna un tipo y un ID de operación, así como también las horas de inicio y finalización, el clúster de destino y el estado. La lista se parecerá a la del 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 específica, indica su ID tal como se muestra en el siguiente comando:

gcloud container operations describe OPERATION_ID \
    --location=CONTROL_PLANE_LOCATION

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

Si la actualización se ha cancelado o ha fallado y se ha completado parcialmente, puedes reanudarla o restaurar la versión anterior.

Comprobar la configuración de actualización del grupo de nodos

Puedes ver los detalles de la estrategia de actualización de nodos que se está usando en tus grupos de nodos con el comando gcloud container node-pools describe. En el caso de las actualizaciones azul-verde, el comando también devuelve la fase actual de la actualización.

Ejecuta el siguiente comando:

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

Haz los cambios siguientes:

  • NODE_POOL_NAME: el nombre del grupo de nodos que se va a describir.
  • CLUSTER_NAME: el nombre del clúster del grupo de nodos cuya información se va a mostrar.
  • CONTROL_PLANE_LOCATION: la ubicación (región o zona) del plano de control, como us-central1 o us-central1-a.

Este comando mostrará los ajustes de actualización actuales. En el siguiente ejemplo se muestra el resultado si utiliza la estrategia de actualización azul-verde.

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

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

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

Inhabilitar las actualizaciones automáticas de nodos

Aunque no es recomendable, puedes inhabilitar la actualización automática de nodos en un grupo de nodos si el clúster subyacente no está registrado en un canal de lanzamiento.

Consideraciones antes de inhabilitar las actualizaciones automáticas de nodos

Si inhabilitas las actualizaciones automáticas de nodos en un grupo de nodos, GKE no actualizará la versión de los nodos. Si inhabilitas las actualizaciones automáticas de nodos, no se impedirá que GKE actualice el plano de control de tu clúster.

Si se inhabilita, no se actualizará la versión, pero no se detendrán todas las tareas de mantenimiento

Si inhabilitas las actualizaciones automáticas de nodos, solo se impedirá que GKE actualice la versión de los nodos, pero no que inicie otras tareas de mantenimiento. Por ejemplo, aunque las actualizaciones automáticas de nodos estén inhabilitadas, si se activa la rotación de direcciones IP, se habilita la política de red o se realiza una migración de PSC en un clúster, se volverán a crear todos los nodos con la misma versión que el plano de control, independientemente de la versión seleccionada para el grupo de nodos. Para controlar los tiempos de mantenimiento, usa las ventanas de mantenimiento y las exclusiones.

Inhabilitar significa que es responsabilidad de la compatibilidad de los nodos del plano de control

Si inhabilitas la actualización automática de nodos en un grupo de nodos, serás el responsable de asegurarte de que los nodos del clúster ejecuten una versión compatible con la versión del plano de control del clúster, de acuerdo con la política de diferencia de versiones de GKE. Si inhabilitas las actualizaciones automáticas de los nodos, solo evitarás que se actualicen los grupos de nodos hasta el final del periodo de asistencia estándar. GKE actualiza los nodos que ejecutan una versión no admitida después de que la versión haya llegado al final del periodo de asistencia para asegurar el buen estado del clúster.

Para obtener información sobre el calendario del fin de la asistencia, consulta el calendario estimado de los canales de lanzamiento. Es posible que los nodos que ejecuten versiones no admitidas no se actualicen inmediatamente cuando finalice el periodo de asistencia de la versión, y los plazos reales pueden variar a discreción de Google.

Inhabilitar no detiene las operaciones en curso

Inhabilitar las actualizaciones automáticas de nodos no detiene ni cancela ninguna actualización en curso de los nodos de los grupos de nodos. Para cancelar o detener las actualizaciones en curso, consulta Cancelar una actualización de nodo. Cancelar una actualización de nodos puede ser útil en situaciones en las que las cargas de trabajo fallen en los nodos actualizados y quieras evitar más interrupciones.

Si la actualización se ha completado en todo el grupo de nodos, no se podrá revertir ni cancelar. Para cambiar a una versión anterior del grupo de nodos, consulta Cambiar a una versión anterior de grupos de nodos.

Inhabilitar las actualizaciones automáticas de nodos en un grupo de nodos

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 \
    --location CONTROL_PLANE_LOCATION \
    --no-enable-autoupgrade

Consola

Para inhabilitar las actualizaciones automáticas de un grupo de nodos existente, sigue estos pasos:

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

    Ir a Google Kubernetes Engine

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

  3. Haz clic en la pestaña Nodos.

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

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

  6. En Gestión, desmarque la casilla Habilitar actualización automática.

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

Crear un grupo de nodos con las actualizaciones automáticas de nodos habilitadas

gcloud

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 \
    --location CONTROL_PLANE_LOCATION \
    --enable-autoupgrade

Consola

Los clústeres y grupos de nodos creados con la Google Cloud consola tienen las actualizaciones automáticas habilitadas de forma predeterminada. Consulta las instrucciones para crear clústeres y grupos de nodos en los artículos Crear un clúster y Añadir y gestionar grupos de nodos.

Puedes inhabilitar las actualizaciones automáticas en los grupos de nodos nuevos. En la página de creación del clúster, haz clic en el nombre del grupo de nodos que quieras modificar y, a continuación, desmarca Habilitar actualización automática.

Recibir notificaciones de actualización

GKE publica notificaciones de actualizaciones en Pub/Sub, lo que significa que GKE te enviará información sobre tus clústeres a través de este canal.

Para obtener más información, consulta Recibir notificaciones de actualización de clústeres.

Cambiar los parámetros de las actualizaciones con compensación

Para obtener más información sobre cómo cambiar los parámetros de sobreaprovisionamiento para actualizaciones, consulte Configurar el sobreaprovisionamiento para actualizaciones.

Controlar el ejercicio durante una actualización de un grupo de nodos

Durante las actualizaciones automáticas y las actualizaciones de grupos de nodos iniciadas manualmente, puedes realizar las siguientes acciones.

Cancelar la actualización de un grupo de nodos

La actualización se puede cancelar en cualquier momento. Para obtener más información sobre lo que ocurre cuando cancelas un sobreaprovisionamiento para actualizaciones, consulta Cancelar un sobreaprovisionamiento para actualizaciones. Para obtener más información sobre lo que ocurre cuando cancelas una actualización azul-verde, consulta Cancelar una actualización azul-verde.

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

    gcloud container operations list \
          --location=CONTROL_PLANE_LOCATION
    
  2. Para cancelar la actualización, sigue estos pasos:

    gcloud container operations cancel OPERATION_ID \
          --location=CONTROL_PLANE_LOCATION
    

Consulta la documentación de gcloud container operations cancel.

Reanudar la actualización de un grupo de nodos

Puedes reanudar una actualización iniciándola manualmente de nuevo y especificando la versión de destino de la actualización original.

Por ejemplo, si una actualización ha fallado o has pausado una actualización en curso, puedes reanudarla volviendo a iniciar la misma actualización en el grupo de nodos y especificando la versión de destino de la operación de actualización inicial.

Para obtener más información sobre lo que ocurre cuando reanudas una actualización con sobreaprovisionamiento, consulta Reanudar una actualización con sobreaprovisionamiento 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 \
  --location=CONTROL_PLANE_LOCATION \
  --cluster-version VERSION

Haz los cambios siguientes:

  • NODE_POOL_NAME: el nombre del grupo de nodos para el que quieres reanudar la actualización.
  • CLUSTER_NAME: el nombre del clúster del grupo de nodos para el que quieres reanudar la actualización.
  • CONTROL_PLANE_LOCATION: la ubicación (región o zona) del plano de control, como us-central1 o us-central1-a.
  • VERSION: 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.

Revertir la actualización de un grupo de nodos

Puedes restaurar un grupo de nodos para volver a la versión anterior de los nodos actualizados, es decir, al estado en el que se encontraban antes de que empezara la actualización del grupo.

Usa el comando rollback si se ha cancelado una actualización en curso, si la actualización ha fallado o si está incompleta porque se ha agotado el tiempo de espera de una ventana de mantenimiento. Si quieres especificar la versión, sigue las instrucciones para cambiar a una versión anterior del grupo de nodos.

Para obtener más información sobre lo que ocurre cuando reviertes una actualización de un grupo de nodos, consulta Revertir una actualización con sobreaprovisionamiento o Revertir una actualización azul-verde.

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

gcloud container node-pools rollback NODE_POOL_NAME \
    --cluster CLUSTER_NAME \
    --location=CONTROL_PLANE_LOCATION

Haz los cambios siguientes:

  • NODE_POOL_NAME: nombre del grupo de nodos cuya actualización se va a revertir.
  • CLUSTER_NAME: el nombre del clúster del grupo de nodos para el que se va a revertir la actualización.
  • CONTROL_PLANE_LOCATION: la ubicación (región o zona) del plano de control, como us-central1 o us-central1-a.

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

Completar una actualización de un grupo de nodos

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

Para saber cómo funciona la finalización de una actualización de un grupo de nodos, consulta Finalizar una actualización de un grupo de nodos.

Para completar una actualización con la estrategia de actualización azul-verde, ejecuta el siguiente comando:

gcloud container node-pools complete-upgrade NODE_POOL_NAME \
    --cluster CLUSTER_NAME \
    --location=CONTROL_PLANE_LOCATION

Haz los cambios siguientes:

  • NODE_POOL_NAME: el nombre del grupo de nodos para el que quieres completar la actualización.
  • CLUSTER_NAME: el nombre del clúster del grupo de nodos para el que quieras completar la actualización.
  • CONTROL_PLANE_LOCATION: la ubicación (región o zona) del plano de control, como us-central1 o us-central1-a.

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

Siguientes pasos