Actualiza un clúster

En esta página, se explica cómo actualizar la versión de Kubernetes que ejecuta tu clúster de Google Kubernetes Engine y cómo pasar a una versión anterior.

Consulta Control de versiones y actualizaciones a fin de obtener más información sobre la disponibilidad de las versiones de Kubernetes para tu instancia principal y tus nodos del clúster. Para obtener más información sobre los clústeres, consulta Arquitectura del clúster.

Antes de comenzar

Sigue estos pasos a fin de prepararte para esta tarea:

  • Asegúrate de haber habilitado la API de Google Kubernetes Engine.
  • Habilitar la API de Google Kubernetes Engine
  • Asegúrate de haber instalado el SDK de Cloud.
  • Establece tu ID del proyecto predeterminado:
    gcloud config set project [PROJECT_ID]
  • Si trabajas con clústeres zonales, establece tu zona de procesamiento predeterminada:
    gcloud config set compute/zone [COMPUTE_ZONE]
  • Si trabajas con clústeres regionales, establece tu región de procesamiento predeterminada:
    gcloud config set compute/region [COMPUTE_REGION]
  • Actualiza gcloud a la versión más reciente:
    gcloud components update

Sobre la actualización de clústeres

La instancia principal y los nodos de un clúster se actualizan por separado.

Versiones compatibles

Para buscar la instancia principal de Kubernetes y las versiones de nodos compatibles con actualizaciones y versiones anteriores, ejecuta el comando siguiente:

gcloud container get-server-config

Pasa los clústeres a una versión anterior

No se recomienda pasar un clúster a una versión anterior. Los nodos pueden pasarse a una versión del parche anterior a la versión de la instancia principal. No puedes pasar un clúster de una versión secundaria a otra. Por ejemplo, si un clúster ejecuta GKE 1.11.5, puedes pasar a la versión 1.11.4 si todavía está disponible, pero no puedes pasar a la versión 1.10.9. Esto último genera un error como el siguiente:

ERROR: (gcloud.container.clusters.upgrade) ResponseError: code=400,
message=Master cannot be upgraded to "1.10.9-gke.7": specified version is not
newer than the current version.

Para pasar un clúster a una versión anterior del parche, debes actualizar la versión de la instancia principal del clúster con la herramienta de línea de comandos de gcloud.

Las versiones de GKE se actualizan según el programa de Versiones compatibles. Las actualizaciones tardan algunos días en llegar a todas las zonas. Puedes comprobar qué versiones están disponibles en una zona o región con gcloud container get-server-config.

No es posible pasar un grupo de nodos a una versión anterior. En su lugar, debes crear un grupo de nodos nuevo en la versión deseada y migrar tus cargas de trabajo a él. Si habilitas la actualización automática de nodos en el grupo de nodos, estos se actualizan para que coincidan con la versión de la instancia principal.

Guarda tus datos en discos persistentes

Antes de actualizar un grupo de nodos, debes asegurarte de que todos los datos que quieres conservar estén almacenados en un pod con volúmenes persistentes que usen discos persistentes. En lugar de borrarse, los discos persistentes se desactivan durante las actualizaciones y sus datos se “transfieren” entre los pods.

Los discos persistentes tienen las siguientes restricciones:

  • Los nodos en los que se ejecutan los pods deben ser VM de Compute Engine.
  • Esas VM deben estar en la misma zona y proyecto de Compute Engine que el disco persistente.

Para obtener más información sobre cómo agregar un disco persistente a una instancia de nodo existente, consulta la sección sobre cómo agregar o cambiar el tamaño de los discos persistentes.

Actualiza la instancia principal

En las secciones siguientes, puedes reemplazar la palabra “actualizar” por “pasar a una versión anterior”. Antes de pasar un cluster o un grupo de nodos a una versión anterior, asegúrate de comprender las advertencias de pasar los clústeres a una versión anterior.

Actualiza la instancia principal de forma automática

Google actualiza las instancias principales del clúster de forma automática. Para tener más control sobre las actualizaciones que tu clúster recibe, puedes inscribirlo en un canal de versiones.

Para obtener más información sobre cómo administrar la versión de GKE de tu clúster, consulta Control de versiones y actualizaciones.

Puedes iniciar una actualización manual en cualquier momento cuando haya una versión nueva disponible.

Actualiza la instancia principal de forma manual

Cuando inicias la actualización de la instancia principal del clúster, no podrás modificar la configuración del clúster durante varios minutos, hasta que se pueda acceder al plano de control de nuevo. Si necesitas evitar el tiempo de inactividad durante las actualizaciones de la instancia principal, considera usar un clúster regional.

Puedes actualizar tus instancias principales de forma manual con GCP Console o con la herramienta de línea de comandos de gcloud. Una vez que actualizaste la instancia principal de tu clúster, puedes actualizar los nodos a la misma versión. Si está habilitada la actualización automática de nodos, Google actualiza tus nodos una vez que actualizas el plano de control.

No es posible (ni necesario) actualizar un clúster inscrito en un canal de versiones de forma manual.

gcloud

Si quieres actualizar la versión de la instancia principal de tu clúster, primero ejecuta el siguiente comando a fin de ver las versiones disponibles:

gcloud container get-server-config

Para actualizar a la última versión, ejecuta el comando siguiente:

gcloud container clusters upgrade [CLUSTER_NAME] --master

Si deseas actualizar a una versión específica que no es la predeterminada, ejecuta el comando siguiente:

gcloud container clusters upgrade [CLUSTER_NAME] --master --cluster-version [CLUSTER_VERSION]

Consulta la documentación de gcloud container clusters upgrade.

Console

Para actualizar la instancia principal de tu clúster de forma manual, sigue estos pasos:

  1. Dirígete al menú de Google Kubernetes Engine en Google Cloud Platform Console.

    Ir al menú de Google Kubernetes Engine

  2. Selecciona el clúster que desees.

  3. Haz clic en el vínculo Actualización disponible junto a Versión de la instancia principal.

  4. Selecciona la versión deseada y, luego, haz clic en Cambiar.

  5. Haz clic en la flecha en la parte superior de la pantalla para volver a la página de descripción general del clúster.

Actualiza los nodos

Cuando actualizas los nodos del clúster, GKE deja de programar pods nuevos en el nodo que se está actualizando e intenta reprogramarlos en nodos diferentes. Los nodos de reemplazo se vuelven a crear con el mismo nombre que sus antecesores, al igual que cualquier otro evento que recrea un nodo.

No es posible (ni necesario) actualizar un nodo cuyo clúster está inscrito en un canal de versiones de forma manual. Cuando usas canales de versiones, el clúster y sus nodos usan la misma versión, excepto durante un breve intervalo de tiempo entre la actualización automática del clúster y sus nodos.

Para obtener más información sobre qué sucederá durante la terminación de nodos en general, consulta el tema sobre Pods.

La actualización se completará cuando se vuelvan a crear todos los nodos y el clúster se encuentre en el estado deseado. Cuando un nodo recién actualizado se registra con la instancia principal, GKE marca los nodos como programables.

Las instancias de nodo nuevas ejecutan la versión deseada de Kubernetes y también los elementos siguientes:

Actualización automática de nodos

La actualización automática de nodos se habilita de forma predeterminada para los clústeres nuevos. Cuando se habilita la actualización automática de nodos, Google se asegura de que la versión de GKE en tus nodos se mantenga actualizada con la versión que se ejecuta en la instancia principal.

Para habilitar las actualizaciones automáticas de nodos, consulta la documentación de Actualizaciones automáticas de nodos. Los canales de versiones proporcionan un mayor control sobre las actualizaciones automáticas que recibe cada clúster.

Actualiza un nodo de forma manual

Solo puedes actualizar una versión del grupo de nodos para que coincida con la versión de la instancia principal o con una versión anterior que todavía esté disponible y sea compatible con la instancia principal. Kubernetes garantiza que las instancias principales son compatibles con nodos de hasta dos versiones secundarias anteriores. Por ejemplo, las instancias principales de Kubernetes 1.13 son compatibles con los nodos de Kubernetes 1.11.

No se puede pasar un grupo de nodos a una versión anterior. Para hacerlo, se debe crear un grupo de nodos nuevo con la versión anterior y migrar las cargas de trabajo al grupo de nodos nuevo.

Puedes actualizar tus nodos a una versión compatible con la instancia principal de forma manual con Google Cloud Platform Console o la herramienta de línea de comandos de gcloud.

No es posible (ni necesario) actualizar un nodo cuyo clúster está inscrito en un canal de versiones de forma manual. Cuando usas canales de versiones, el clúster y sus nodos usan la misma versión, excepto durante un breve intervalo de tiempo entre la actualización automática del clúster y sus nodos.

gcloud

El siguiente comando actualiza tus nodos a la versión que ejecuta tu instancia principal:

gcloud container clusters upgrade [CLUSTER_NAME] --node-pool=[NODE-POOL-NAME]

donde [CLUSTER_NAME] es el nombre del clúster que se va a actualizar.

Si deseas especificar una versión diferente de GKE en los nodos, usa la marca opcional --cluster-version:

gcloud container clusters upgrade [CLUSTER_NAME] --node-pool=[NODE-POOL-NAME] --cluster-version [CLUSTER_VERSION]

donde [CLUSTER_VERSION] es la versión de Kubernetes a la que se actualizan los nodos. Por ejemplo, --cluster-version=1.7.2 o cluster-version=latest.

Para obtener más información sobre cómo especificar versiones, consulta la documentación de Control de versiones y actualizaciones.

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

Console

Si deseas actualizar un grupo de nodos mediante GCP Console, sigue estos pasos:

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

    Ir al menú de 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, amplía la flecha de expansión del grupo de nodos que quieres actualizar.

  4. Haz clic en el vínculo Cambiar junto a la Versión del nodo.

  5. Selecciona la versión deseada y, luego, haz clic en Cambiar.

  6. Haz clic en Guardar.

Verifica el estado de actualización de nodos

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

Para obtener una lista de cada operación en ejecución o completada en el clúster, ejecuta el comando siguiente:

gcloud beta 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 en el siguiente comando:

gcloud beta container operations describe [OPERATION_ID]

Por ejemplo:

gcloud beta 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

Cancela la actualización de un nodo

Puedes cancelar una actualización en cualquier momento. Esto es lo que sucede cuando cancelas una actualización:

  • Los nodos que comenzaron la actualización la completan.
  • Los nodos que no comenzaron la actualización no se actualizan.
  • Los nodos que ya completaron con éxito la actualización no se ven afectados y no se revierten.

Primero, obtén el ID de operación de la actualización con el comando siguiente:

gcloud container operations list

Luego, para cancelar la actualización, ejecuta el comando siguiente:

gcloud beta container operations cancel [OPERATION_ID]

Consulta la documentación de gcloud container operations cancel.

Revierte la actualización de un nodo

Puedes revertir los grupos de nodos que no pudieron actualizarse, o cuyas actualizaciones fueron canceladas, a su versión anterior de Kubernetes. No puedes revertir los grupos de nodos una vez que se actualizaron con éxito. Los nodos que no comenzaron la actualización no se ven afectados.

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

gcloud container node-pools rollback [POOL_NAME] --cluster [CLUSTER_NAME]

donde:

  • [POOL_NAME] es el nombre del grupo de nodos que se va a revertir.
  • [CLUSTER_NAME] es el nombre del clúster en el que se debe revertir el grupo de nodos.
  • [COMPUTE_ZONE] es la zona de procesamiento de tu proyecto.

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

Pasos siguientes

¿Te ha resultado útil esta página? Enviar comentarios:

Enviar comentarios sobre...

Documentación de Kubernetes Engine