Cómo actualizar automáticamente los nodos

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

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 (principal) 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 Google Cloud Console 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

En el ejemplo anterior, se ilustra lo siguiente:

  • node-pool-name es 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 del clúster.

Console

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

  1. Ve al menú de Google Kubernetes Engine en Cloud Console.

    Ir al menú Google Kubernetes Engine

  2. Haz clic en el botón Editar del clúster, que tiene forma de lápiz.

  3. En la sección Grupos de nodos, selecciona el grupo de nodos que deseas examinar.

  4. En la sección Administración, consulta 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 Google Cloud Console 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

En el ejemplo anterior, se ilustra lo siguiente:

  • node-pool-name es 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 del clúster.

Console

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

  1. Ve al menú de Google Kubernetes Engine en Cloud Console.

    Ir al menú Google Kubernetes Engine

  2. Haz clic en el botón Editar del clúster, que tiene forma de lápiz.

  3. En la sección Grupos de nodos, haz clic en el nombre del grupo de nodos que deseas modificar y, luego, en Editar.

  4. Selecciona Habilitar actualización automática.

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

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.

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

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. Si lo haces, eres responsable de asegurarte de que los nodos del clúster ejecuten una versión compatible con la versión del clúster.

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 al menú de Google Kubernetes Engine en Cloud Console.

    Ir al menú Google Kubernetes Engine

  2. Haz clic en el botón Editar del clúster, que tiene forma de lápiz.

  3. En la sección Grupos de nodos, haz clic en el nombre del grupo de nodos que deseas modificar y, luego, en Editar.

  4. Borra Habilitar actualización automática.

  5. 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, usa lo siguiente:

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

Cambia los parámetros de actualización de aumento

Las actualizaciones de aumento te permiten cambiar la cantidad de nodos que GKE actualiza a la vez y la cantidad de interrupciones que una actualización genera en tus cargas de trabajo.

Las marcas max-surge-upgrade y max-unavailable-upgrade se definen para cada grupo de nodos. Para obtener más información sobre cómo elegir los parámetros adecuados, consulta la sección sobre cómo determinar la configuración de aumento óptima.

Puedes cambiar esta configuración cuando crees o actualices un clúster o un grupo de nodos.

Las siguientes variables se usan en los comandos que se mencionan a continuación:

  • cluster-name es el nombre del clúster para el grupo de nodos.
  • compute-zone es la zona del clúster.
  • node-pool-name es el nombre del grupo de nodos.
  • number-nodes es la cantidad de nodos en el grupo de nodos de cada una de las zonas del clúster.
  • surge-nodes es la cantidad de nodos adicionales (aumento) que se crearán en cada actualización del grupo de nodos.
  • unavailable-nodes es la cantidad de nodos que pueden no estar disponibles al mismo tiempo en cada actualización del grupo de nodos.

Crea un clúster con diferentes parámetros de aumento

A fin de crear un clúster con una configuración específica para actualizaciones de aumento, usa las marcas max-surge-upgrade y max-unavailable-upgrade.

gcloud container clusters create cluster-name \
  --max-surge-upgrade=surge-nodes --max-unavailable-upgrade=unavailable-nodes

Crea un clúster con las actualizaciones de aumento inhabilitadas

Para crear un clúster sin actualizaciones de aumento, establece el valor de la marca max-surge-upgrade en 0.

gcloud container clusters create cluster-name \
  --max-surge-upgrade=0 --max-unavailable-upgrade=1

Crea un grupo de nodos con diferentes parámetros de aumento

A fin de crear un grupo de nodos en un clúster existente con una configuración específica para actualizaciones de aumento, usa las marcas max-surge-upgrade y max-unavailable-upgrade.

gcloud container node-pools create node-pool-name \
  --num-nodes=number-nodes --cluster=cluster-name \
  --max-surge-upgrade=surge-nodes --max-unavailable-upgrade=unavailable-nodes

Activa o desactiva la actualización de aumento para un grupo de nodos existente

Para actualizar la configuración de actualización de un grupo de nodos existente, usa las marcas max-surge-upgrade y max-unavailable-upgrade. Si estableces max-surge-upgrade en un valor mayor a 0, GKE crea nodos de aumento. Si estableces max-surge-upgrade en 0, GKE no creará nodos de aumento.

gcloud beta container node-pools update node-pool-name \
  --cluster=cluster-name \
  --max-surge-upgrade=surge-nodes --max-unavailable-upgrade=unavailable-nodes

Comprueba si las actualizaciones de aumento están habilitadas en un grupo de nodos

A fin de ver si las actualizaciones de aumento están habilitadas en un grupo de nodos, usa gcloud para describir los parámetros del clúster:

gcloud container node-pools describe node-pool-name \
--cluster=cluster-name

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 la sección sobre cómo recibir notificaciones de actualización del clúster.

¿Qué sigue?