Actualiza de forma manual un clúster o un grupo de nodos

De forma predeterminada, Google actualiza de forma automática los clústeres y grupos de nodos de Google Kubernetes Engine. En esta página, se explica cómo solicitar de forma manual una actualización o una versión inferior de un clúster de GKE o sus nodos. Puedes obtener más información sobre cómo funcionan las actualizaciones automáticas y manuales del clúster. También puedes controlar cuándo pueden o no ocurrir las actualizaciones automáticas mediante la configuración de períodos de mantenimiento y exclusiones.

Las versiones nuevas de GKE se anuncian con regularidad. Consulta Control de versiones y actualizaciones para conocer las versiones disponibles. 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 que habilitaste la API de Google Kubernetes Engine.
  • Habilitar la API de Google Kubernetes Engine
  • Asegúrate de que instalaste 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
  • 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.

    Las siguientes restricciones aplican a los discos persistentes:

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

    Sobre la actualización de clústeres

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

    Limitaciones

    Los clústeres inscritos en canales de versiones y sus nodos no pueden actualizarse ni cambiarse a una versión inferior de forma manual. Siempre se actualizan cuando hay una versión nueva disponible en el canal de versiones en el que están inscritos.

    Los clústeres Alfa no se pueden actualizar.

    Versiones compatibles

    Las notas de la versión anuncian cuándo están disponibles versiones nuevas y cuándo las versiones anteriores dejan de estarlo. En cualquier momento, puedes enumerar todas las versiones de clústeres y nodos compatibles mediante este comando:

    gcloud container get-server-config
    

    Limitaciones del cambio a una versión inferior

    No se recomienda pasar un clúster a una versión inferior. Los nodos se pueden cambiar a una versión de parche anterior a la versión del clúster. No puedes cambiar 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.9": specified version is not
    newer than the current version.
    

    Actualiza el clúster

    Google actualiza clústeres y nodos de forma automática. Para tener más control sobre las actualizaciones automáticas que reciben tu clúster y sus nodos, 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 de forma manual la instancia principal

    Cuando se inicia la actualización de un clúster, no se puede modificar la configuración de este 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 tu clúster de forma manual con Cloud Console o la herramienta de línea de comandos de gcloud. Después de actualizar el clúster, puedes actualizar sus nodos. De forma predeterminada, los nodos que se crearon con Google Cloud Console tienen habilitada la actualización automática, por lo que esto ocurre de forma automática.

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

      Ir al menú 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.

    Cambia los clústeres a una versión inferior

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

    Inhabilita las actualizaciones automáticas de clústeres

    No se pueden inhabilitar las actualizaciones de un clúster. Aunque no se recomienda, puedes inhabilitar la actualización automática de los nodos.

    Actualiza los nodos

    De forma predeterminada, los nodos de un clúster tienen habilitada la actualización automática y se recomienda no inhabilitarla.

    Cuando se actualiza un grupo de nodos, GKE actualiza un nodo a la vez.

    Mientras se actualiza un nodo, GKE deja de programar pods nuevos en él y, en cambio, intenta programar sus pods en ejecución en otros nodos. El nodo se vuelve a crear en la versión nueva, pero con el mismo nombre que antes. Esto es similar a otros eventos que recrean el nodo, como la habilitación o inhabilitación de una función en el grupo de nodos.

    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.

    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 el nodo como programable.

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

    Actualiza un nodo de forma manual

    Puedes actualizar la versión de un grupo de nodos de forma manual para que coincida con la versión de la instancia principal o con una versión inferior que aún esté disponible y que sea compatible con la instancia principal. La política de compatibilidad de versiones y del sesgo de versiones de Kubernetes garantiza que las instancias principales sean compatibles con nodos de hasta dos versiones secundarias inferiores a la de la instancia principal. Por ejemplo, las instancias principales de Kubernetes 1.13 son compatibles con los nodos de Kubernetes 1.11.

    Puedes actualizar tus nodos de forma manual a una versión compatible con la instancia principal. Para esto, usa Google Cloud 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 Cloud Console, sigue estos pasos:

    1. Dirígete 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, 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.

    Cambia nodos a versiones inferiores

    No es posible cambiar un grupo de nodos a una versión inferior. En su lugar, debes crear un grupo de nodos nuevo en la versión deseada y migrar tus cargas de trabajo a él. Los nodos que tienen la actualización automática habilitada se actualizan para que coincidan con la versión de la instancia principal.

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

    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.

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

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

    Si deseas crear un clúster con una configuración diferente para las actualizaciones de aumento, usa las marcas max-surge-upgrade y max-unavailable-upgrade.

    gcloud beta container clusters create [CLUSTER_NAME] \
      --max-surge-upgrade=[SURGE_NODES] --max-unavailable-upgrade=[UNAVAILABLE_NODES]

    Cómo crear un clúster con las actualizaciones de aumento inhabilitadas

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

    gcloud beta container clusters create [CLUSTER_NAME] \
      --max-surge-upgrade=0 --max-unavailable-upgrade=1

    Cómo crear un grupo de nodos con diferentes parámetros de aumento

    A fin de crear un grupo de nodos en un clúster existente con diferentes parámetros de configuración para actualizaciones de aumento, usa las marcas max-surge-upgrade y max-unavailable-upgrade.

    gcloud beta container node-pools create [NODE_POOL_NAME] \
      --num-nodes=[NUMBER_NODES] --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 beta container node-pools describe [NODE_POOL_NAME] \
    --cluster=[CLUSTER_NAME]

    Próximos pasos