Actualizar un clúster

Actualizar tu estación de trabajo de administrador, los clústeres de usuario y los clústeres de administrador para Google Distributed Cloud (solo software) para VMware te permite adoptar versiones de Kubernetes, parches de seguridad y funciones de la plataforma compatibles. En este documento, se explica cómo actualizar el plano de control y los grupos de nodos de un clúster de usuario juntos. Para actualizarlos por separado, consulta Actualiza grupos de nodos.

Antes de comenzar, revisa la Descripción general de la actualización para seleccionar la herramienta y el orden de actualización, las Reglas de versión de actualización para conocer el sesgo de versión específico de la versión y los requisitos del SO, y las Prácticas recomendadas para la actualización para obtener listas de tareas previas a la actualización.

Antes de comenzar

  • Asegúrate de tener una copia de seguridad actual de los clústeres de administrador y de usuario antes de comenzar la actualización. Para obtener más información, consulta Crea una copia de seguridad del clúster de usuario y administrador.

  • Diagnostica tu clúster antes de actualizarlo. Ejecuta gkectl diagnose cluster para asegurarte de que el clúster de administrador esté en buen estado y resuelve cualquier problema antes de comenzar la actualización.

  • Asegúrate de que gkectl y los clústeres estén en la versión adecuado para una actualización y de haber descargado el paquete adecuado. La desviación de versión entre los clústeres de administrador y de usuario depende de la versión de Google Distributed Cloud. Para asegurarte de poder actualizar tu clúster de administrador, consulta las reglas de versión de tu versión.

  • Asegúrate de que el campo bundlepath del archivo de configuración del clúster de administrador coincida con la ruta de acceso del paquete al que deseas actualizar.

    Si realizas algún otro cambio en los campos del archivo de configuración del clúster de administrador, estos cambios se ignoran durante la actualización. Para que esos cambios se apliquen, primero debes actualizar el clúster y, luego, ejecutar un clúster de actualización con los cambios en el archivo de configuración para realizar otros cambios en el clúster.

Revisa tus reglas de firewall

En la versión 1.29 y posteriores, las verificaciones previas del servidor están habilitadas de forma predeterminada. Las verificaciones previas del servidor requieren reglas de firewall adicionales. En Reglas de firewall para clústeres de administrador, busca "Verificaciones previas" y asegúrate de que todas las reglas de firewall necesarias estén configuradas.

Con las comprobaciones previas del servidor, cuando actualizas un clúster de usuario mediante gkectl, las comprobaciones previas se ejecutan en el clúster de administrador en lugar de localmente en la estación de trabajo de administrador. Las verificaciones previas del servidor también se ejecutan en el clúster de administrador cuando usas la consola de Google Cloud , Google Cloud CLI o Terraform para actualizar un clúster.

Cuando actualizas un clúster de administrador, Google Distributed Cloud implementa un clúster de Kubernetes en Docker (tipo) para alojar de forma temporal los controladores de Kubernetes necesarios para actualizar el clúster de administrador. Este clúster transitorio se denomina clúster de arranque. Las comprobaciones previas del servidor se ejecutan en el clúster de arranque cuando actualizas un clúster de administrador.

Habilitar stackdriver

Si creaste el clúster de usuario con gkectl, antes de actualizarlo, asegúrate de que la sección stackdriver del archivo de configuración del clúster de usuario esté completa, lo que habilita stackdriver (necesario para el registro y la supervisión). Si stackdriver no está habilitado, completa la sección stackdriver en el archivo de configuración del clúster de usuario y actualiza el clúster antes de actualizarlo.

Si creaste el clúster con Terraform, la consola de Google Cloud o gcloud CLI, stackdriver se habilita de forma automática.

Habilitar Dataplane V2

A partir de la versión 1.31, Dataplane V2 debe estar habilitado en todos los clústeres de usuario. Antes de actualizar un clúster de usuario a la versión 1.31, sigue estos pasos. Si tienes inquietudes sobre quitar temporalmente la especificación NetworkPolicy, comunícate con el equipo de Atención al cliente de Google.

Configura enableDataplaneV2 como true en el archivo de configuración del clúster de usuario.

Si tu clúster usa un NetworkPolicy, quita temporalmente su especificación del clúster de la siguiente manera:

  1. Verifica si se aplica algún NetworkPolicy que no sea del sistema a tu clúster:

    kubectl --kubeconfig USER_CLUSTER_KUBECONFIG \
        get networkpolicy -A -o wide \
        --field-selector metadata.namespace!=kube-system
    

    Reemplaza USER_CLUSTER_KUBECONFIG por la ruta de acceso del archivo kubeconfig del clúster de usuario.

    Si solo existen políticas kube-system predeterminadas, el comando devuelve No resources found.

  2. Si el comando anterior muestra algún objeto NetworkPolicy, guarda cada especificación de NetworkPolicy en un archivo para que puedas volver a aplicar la especificación después de actualizar el clúster:

    kubectl --kubeconfig USER_CLUSTER_KUBECONFIG get networkpolicy NETWORK_POLICY_NAME -n NETWORK_POLICY_NAMESPACE -o yaml > NETWORK_POLICY_NAME.yaml
    

    Reemplaza lo siguiente:

    • NETWORK_POLICY_NAME: Es el nombre del NetworkPolicy que guardarás.
    • NETWORK_POLICY_NAMESPACE: Es el espacio de nombres de NetworkPolicy.
  3. Borra la NetworkPolicy con el siguiente comando:

    kubectl --kubeconfig USER_CLUSTER_KUBECONFIG delete networkpolicy NETWORK_POLICY_NAME -n NETWORK_POLICY_NAMESPACE
    
  4. Continúa con la actualización.

  5. Una vez que se complete la actualización, si quitaste alguna especificación de NetworkPolicy que no sea del sistema, vuelve a aplicarla con este comando:

    kubectl --kubeconfig USER_CLUSTER_KUBECONFIG apply -f NETWORK_POLICY_NAME.yaml
    

Requisitos de la API de Google y de IAM

Para actualizar un clúster a la versión 1.28 y versiones posteriores, debes habilitar kubernetesmetadata.googleapis.com y otorgar el rol de IAM kubernetesmetadata.publisher a la cuenta de servicio de supervisión y registro. Estos cambios son necesarios para usar Cloud Monitoring.

  1. Habilitar kubernetesmetadata.googleapis.com:

    gcloud services enable --project PROJECT_ID  \
        kubernetesmetadata.googleapis.com
    

    Reemplaza PROJECT_ID por el ID del proyecto host de la flota del que el clúster de usuario es miembro. Este es el proyecto que especificaste cuando se creó el clúster. Si creaste el clúster con gkectl, este es el ID del proyecto en el campo gkeConnect.projectID del archivo de configuración del clúster.

  2. Si tu organización configuró una lista de entidades permitidas que permite que el tráfico de las APIs de Google y otras direcciones pasen a través de tu servidor proxy, agrega lo kubernetesmetadata.googleapis.com a la lista de entidades permitidas:

  3. Otorga el rol kubernetesmetadata.publisher a la cuenta de servicio de registro y supervisión:

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member "serviceAccount:SERVICE_ACCOUNT_EMAIL" \
        --role "roles/kubernetesmetadata.publisher"
    

    Reemplaza SERVICE_ACCOUNT_EMAIL por la dirección de correo electrónico de tu cuenta de servicio de registro y supervisión.

Funciones heredadas bloqueadas en las actualizaciones

Las siguientes funciones heredadas se bloquean durante la actualización del clúster a la versión 1.32:

  • Dataplane V1 (Calico)
  • Configuración del balanceador de cargas BIG-IP de F5 integrado
  • Clúster de administrador sin alta disponibilidad
  • Clúster de usuario de Kubeception
  • Balanceador de cargas de Seesaw

Debes migrar tus clústeres a las funciones recomendadas antes de actualizar a la versión 1.32.

Requisitos de IAM para actualizar clústeres de usuario

Omite esta sección si planeas usar gkectl para la actualización del clúster de usuario.

Si quieres usar la consola de Google Cloud , Google Cloud CLI o Terraform para actualizar un clúster de usuario y no eres propietario del proyecto, debes tener el rol de Identity and Access Management roles/gkeonprem.admin en el proyecto de Google Cloud en el que se creó el clúster. Para obtener más detalles sobre los permisos incluidos en este rol, consulta Roles de GKE on-prem en la documentación de IAM.

Para usar la consola y actualizar el clúster, como mínimo, también necesitas lo siguiente:

  • roles/container.viewer. Este rol permite que los usuarios vean la página de clústeres de GKE y otros recursos de contenedores en la consola. Para obtener más información sobre los permisos incluidos en este rol o sobre cómo otorgar un rol con permisos de lectura y escritura, consulta Roles de Kubernetes Engine en la documentación de IAM.

  • roles/gkehub.viewer: Este rol permite que los usuarios vean los clústeres en la consola. Si deseas obtener detalles sobre los permisos incluidos en este rol o para otorgar un rol con permisos de lectura y escritura, consulta Roles de GKE Hub en la documentación de IAM.

Limitaciones con los clústeres avanzados

Ten en cuenta las siguientes limitaciones si tienes clústeres avanzados habilitados:

  • Cuando actualices clústeres de la versión 1.32 a la 1.33, debes usar gkectl. Los clientes de la API de GKE On-Prem (la consola, gcloud CLI y Terraform) no son compatibles con esta ruta de actualización específica, pero sí con las actualizaciones a partir de la versión 1.33.

  • Para los clústeres avanzados en la versión 1.31 de la versión preliminar o cuando conviertes un clúster de administrador no avanzado en un clúster de administrador avanzado, debes ejecutar una actualización síncrona. En la versión 1.32 y posteriores, puedes usar la marca --async con los comandos gkectl upgrade admin y gkectl upgrade cluster para los clústeres avanzados existentes.

Realiza cambios en la configuración antes o después de una actualización

Si necesitas realizar cambios en la configuración de tus clústeres, haz la actualización del clúster antes o después de la actualización. El único cambio en la configuración del clúster para una actualización debe ser la versión. Según la versión y el tipo de clúster, otros cambios de configuración se ignoran de forma silenciosa o hacen que la actualización falle. Para obtener más información, consulta Quita cambios no admitidos para desbloquear la actualización.

Verifica las versiones disponibles para las actualizaciones de clústeres

Ejecuta el siguiente comando para ver qué versiones están disponibles para la actualización:

gkectl version --kubeconfig ADMIN_CLUSTER_KUBECONFIG

Reemplaza ADMIN_CLUSTER_KUBECONFIG por la ruta de acceso al archivo kubeconfig del clúster de administrador.

En el resultado, se muestra la versión actual y las versiones disponibles para la actualización.

Si planeas usar la consola, gcloud CLI o Terraform para la actualización, la versión tardará entre 7 y 14 días después de un lanzamiento en estar disponible en la API de GKE On-Prem en todas las regiones de Google Cloud . En la consola, solo se enumeran las versiones disponibles para la actualización del clúster de usuario. Los pasos para actualizar un clúster de usuario con gcloud CLI o Terraform incluyen un paso para ejecutar gcloud container vmware clusters query-version-config y obtener las versiones disponibles para la actualización.

Actualiza tu estación de trabajo de administrador

La forma en que actualizas la estación de trabajo de administrador depende de cómo la creaste: gkeadm o administrada por el usuario.

gkeadm

Ubica los archivos necesarios

Antes de crear la estación de trabajo de administrador, completaste un archivo de configuración de la estación de trabajo de administrador que generó gkeadm create config. El nombre predeterminado para este archivo es admin-ws-config.yaml.

Además, tu estación de trabajo tiene un archivo de información. El nombre predeterminado de este archivo es el mismo que el nombre de la estación de trabajo del administrador.

Localiza el archivo de configuración de la estación de trabajo del administrador y el archivo de información. Los necesitas para realizar los pasos de la actualización. Si estos archivos se encuentran en tu directorio actual y tienen sus nombres predeterminados, no tendrás que especificarlos cuando ejecutes los comandos de actualización. Si estos archivos están en otro directorio o si cambiaste los nombres de archivo, debes especificarlos con las marcas --config y --info-file.

Si falta tu archivo de información de salida, puedes volver a crearlo. Consulta Vuelve a crear un archivo de información si falta.

Actualizar

Actualiza la estación de trabajo de administrador:

  1. Verifica el campo adminWorkstation.diskGB en el archivo de configuración de la estación de trabajo de administrador y asegúrate de que el tamaño especificado sea de al menos 100, por ejemplo:

    adminWorkstation:
      diskGB: 100
    

    Cuando actualizas a la versión 1.28 y posteriores, se requieren 100 GB, y la actualización del clúster falla si la estación de trabajo de administrador no tiene suficiente espacio en el disco.

  2. Desde tu servidor de salto, descarga gkeadm:

    gkeadm upgrade gkeadm --target-version TARGET_VERSION
    

    Reemplaza TARGET_VERSION por la versión a la que actualizarás. Debes especificar un número de versión completo con el formato X.Y.Z-gke.N. Para obtener una lista de las versiones de Google Distributed Cloud, consulta Control de versiones.

  3. Actualiza tu estación de trabajo de administrador:

    gkeadm upgrade admin-workstation --config AW_CONFIG_FILE \
      --info-file INFO_FILE
    

Reemplaza lo siguiente:

  • AW_CONFIG_FILE es la ruta del archivo de configuración de la estación de trabajo del administrador. Puedes omitir esta marca si el archivo se encuentra en el directorio actual y tiene el nombre admin-ws-config.yaml.

  • INFO_FILE es la ruta del archivo de información. Puedes omitir esta marca si el archivo se encuentra en tu directorio actual. El nombre predeterminado de este archivo es el mismo que el nombre de la estación de trabajo del administrador.

Administrada por el usuario

En tu estación de trabajo de administrador, navega al directorio en el que deseas instalar una versión nueva de gkectl.

  1. Descarga gkectl.

     gcloud storage cp gs://gke-on-prem-release/gkectl/TARGET_VERSION/gkectl ./
     chmod +x gkectl
     

    Reemplaza TARGET_VERSION por la versión a la que actualizarás. Debes especificar un número de versión completo con el formato X.Y.Z-gke.N. Para obtener una lista de las versiones de Google Distributed Cloud, consulta Control de versiones.

  2. Descarga el paquete de Google Distributed Cloud. Asegúrate de que la versión coincida con la que usaste para descargar gkectl:

     gcloud storage cp gs://gke-on-prem-release/gke-onprem-bundle/TARGET_VERSION/gke-onprem-vsphere-TARGET_VERSION.tgz ./
     

Actualiza el clúster de administrador

Los pasos para actualizar el clúster de administrador varían un poco según la versión secundaria a la que actualices (la versión de destino):

1.31 y versiones posteriores

Si la versión de destino es 1.31 o posterior, antes de actualizar los clústeres de usuario a la siguiente versión secundaria, debes actualizar el clúster de administrador. En la versión 1.31 y posteriores, la versión del clúster de administrador, incluida la versión del parche, debe ser mayor o igual que la versión del clúster de usuario. Por ejemplo, si un clúster de administrador está en la versión 1.31.1, la versión más alta a la que se puede actualizar el clúster de usuario es la 1.31.1.

Ejecuta el siguiente comando en tu estación de trabajo de administrador para importar imágenes de SO a vSphere:

gkectl prepare \
    --bundle-path /var/lib/gke/bundles/gke-onprem-vsphere-TARGET_VERSION.tgz \
    --kubeconfig ADMIN_CLUSTER_KUBECONFIG

Reemplaza ADMIN_CLUSTER_KUBECONFIG por la ruta de acceso al archivo kubeconfig del clúster de administrador.

1.30 y versiones más bajas

Si la versión de destino es la 1.30 o una anterior, debes actualizar todos los clústeres de usuario antes de actualizar el clúster de administrador. La versión secundaria del clúster de administrador debe ser menor o igual que la versión secundaria del clúster de usuario. La versión del parche no importa. Por ejemplo, si un clúster de usuario tiene la versión 1.30.1, el clúster de administrador se puede actualizar a una versión de parche superior, como 1.30.3.

Realiza la actualización

gkectl

Sigue los pasos que se indican en esta sección en la estación de trabajo del administrador. Existen dos variantes del comando gkectl upgrade admin:

  • Asíncrona:
    Con la variación asíncrona, el comando inicia la actualización y, luego, la completa. No es necesario que mires el resultado del comando durante todo el proceso de actualización. En su lugar, puedes verificar periódicamente el progreso de la actualización ejecutando gkectl list admin y gkectl describe admin. Para usar la variación asíncrona, incluye la marca --async en el comando.

    Requisitos para la actualización asíncrona:

    • Solo se admite para clústeres de administrador con alta disponibilidad con la versión 1.29 o posterior.
    • Todos los clústeres de usuario deben tener habilitado Controlplane V2.
    • Versión 1.31: No se admite en clústeres avanzados.
    • Versión 1.32 y posteriores: Disponible en clústeres avanzados.
  • Síncrona:
    Con la variación síncrona, el resultado del comando gkectl upgrade admin muestra mensajes de estado en la estación de trabajo del administrador a medida que avanza la actualización.

Actualización asíncrona

  1. En tu estación de trabajo de administrador, diagnostica el clúster antes de actualizarlo:

    gkectl diagnose cluster \
       --kubeconfig ADMIN_CLUSTER_KUBECONFIG
    

    Si el comando informa algún error o advertencia, consulta Diagnostica problemas del clúster y resuélvelos antes de continuar.

  2. Inicia una actualización asíncrona:

    gkectl upgrade admin \
       --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
       --config ADMIN_CLUSTER_CONFIG_FILE \
       --async
    

    Reemplaza lo siguiente:

    • ADMIN_CLUSTER_KUBECONFIG: Es la ruta de acceso al archivo kubeconfig del clúster de administrador.

    • ADMIN_CLUSTER_CONFIG_FILE: la ruta al archivo de configuración del clúster de administrador.

    El comando anterior se completa y puedes seguir usando tu estación de trabajo de administrador mientras la actualización está en curso.

  3. Para ver el estado de la actualización, haz lo siguiente:

    gkectl list admin --kubeconfig ADMIN_CLUSTER_KUBECONFIG
    

    En el resultado, se muestra un valor para el clúster STATE. Si el clúster aún se está actualizando, el valor de STATE es UPGRADING. Por ejemplo:

    NAME              STATE         AGE    VERSION
    gke-admin-test    UPGRADING     9h     1.36.100-gke.144
    

    Los valores posibles para STATE son RUNNING, UPGRADING, RECONCILING, ERROR y UNKNOWN.

  4. Para obtener más detalles sobre el progreso de la actualización y los eventos del clúster, haz lo siguiente:

    gkectl describe admin --kubeconfig ADMIN_CLUSTER_KUBECONFIG
    

    En el resultado, se muestra el recurso personalizado OnPremAdminCluster para el clúster de administrador especificado, que incluye el estado y las condiciones del clúster.

    Haz clic para ver el resultado de ejemplo
    Status:
     Cluster State:  RUNNING
     Conditions:
       Last Transition Time:    2026-08-10T20:22:58Z
       Message:                 Operator NodePool is ready
       Observed Generation:     2
       Reason:                  OperatorNodePoolReady
       Status:                  True
       Type:                    ControlPlaneReady
       Last Transition Time:    2026-08-10T20:22:59Z
       Message:                 Cluster is running
       Observed Generation:     2
       Reason:                  ClusterRunning
       Status:                  True
       Type:                    Ready
       Last Transition Time:    2026-08-10T20:23:00Z
       Message:
       Observed Generation:     2
       Reason:                  Reconciling
       Status:                  False
       Type:                    OperatorClusterKubeProxyCleanedUp
       Last Transition Time:    2026-08-10T20:22:58Z
       Message:
       Observed Generation:     2
       Reason:                  PreflightCheckPassed
       Status:                  True
       Type:                    OperatorClusterPreflightCheckSuccessful
       Last Transition Time:    2026-08-10T15:56:50Z
       Message:
       Observed Generation:     2
       Reason:                  ProvisioningStarted
       Status:                  True
       Type:                    OperatorClusterProvisioningStarted
       Last Transition Time:    2026-08-10T15:56:50Z
       Message:
       Observed Generation:     2
       Reason:                  RemoteTrackerSetupComplete
       Status:                  True
       Type:                    OperatorClusterRemoteTrackerSetupSuccessful
       Last Transition Time:    2026-08-10T15:56:50Z
       Message:
       Observed Generation:     2
       Reason:                  Reconciling
       Status:                  False
       Type:                    OperatorClusterStalled
       Last Transition Time:    2026-08-10T15:56:50Z
       Message:
       Observed Generation:     2
       Reason:                  NotPresent
       Status:                  False
       Type:                    OperatorClusterWaitingOnPendingClusterID
       Last Transition Time:    2026-08-10T20:22:59Z
       Message:                 Operator Cluster is ready
       Observed Generation:     2
       Reason:                  OperatorClusterReady
       Status:                  True
       Type:                    OperatorClusterReady
       Last Transition Time:    2026-08-10T15:56:50Z
       Message:                 Component provisioner job is completed
       Observed Generation:     2
       Reason:                  ComponentProvisionerJobCompleted
       Status:                  True
       Type:                    ComponentProvisionerSystemProfileInstalled
       Last Transition Time:    2026-08-10T15:58:20Z
       Message:                 Component provisioner job is completed
       Observed Generation:     2
       Reason:                  ComponentProvisionerJobCompleted
       Status:                  True
       Type:                    ComponentProvisionerAdminProfileInstalled
     Gke On Prem Version:       1.36.0-gke.527
     Last Gke On Prem Version:  1.35.300-gke.87
     Management Conditions:
       Last Transition Time:  2026-08-10T15:58:20Z
       Message:               Component provisioner job is completed
       Observed Generation:   2
       Reason:                ComponentProvisionerJobCompleted
       Status:                True
       Type:                  ManagementProfilesReady
       Last Transition Time:  2026-08-10T15:56:29Z
       Message:               Component provisioner job is completed
       Observed Generation:   2
       Reason:                ComponentProvisionerJobCompleted
       Status:                True
       Type:                  ComponentProvisionerSystemManagementProfileInstalled
       Last Transition Time:  2026-08-10T15:58:20Z
       Message:               Component provisioner job is completed
       Observed Generation:   2
       Reason:                ComponentProvisionerJobCompleted
       Status:                True
       Type:                  ComponentProvisionerManagementProfileInstalled
     Operator Cluster Status:
       Control Plane Node Pool Status:
         Anthos Bare Metal Version:  1.36.0-gke.527
         Anthos Bare Metal Versions:
           1.36.0-gke.527:  3
         Conditions:
           Last Transition Time:  2026-08-10T20:18:20Z
           Observed Generation:   11
           Reason:                PreflightCheckPassed
           Status:                True
           Type:                  PreflightCheckSuccessful
           Last Transition Time:  2026-08-10T20:22:58Z
           Observed Generation:   11
           Reason:                NodepoolReady
           Status:                True
           Type:                  Ready
           Last Transition Time:  2026-08-10T20:22:22Z
           Observed Generation:   11
           Reason:                ReconciliationCompleted
           Status:                False
           Type:                  Reconciling
         Gke Versions:
           v1.36.0-gke.2800:        3
         Last Reconciliation Time:  2026-08-10T20:25:07Z
         Maintenance Nodes:         0
         Managed Fields:
           Label Keys:
             kubernetes.googleapis.com/cluster-name
             node.kubernetes.io/control-plane
             node.kubernetes.io/master
           Node Label Keys:
             vsphere://abcdef-1:
               onprem.gke.io/failure-domain-name
               vmware.cluster.gke.io/machine-name
             vsphere://abcdef-2:
               onprem.gke.io/failure-domain-name
               vmware.cluster.gke.io/machine-name
             vsphere://abcdef-3:
               onprem.gke.io/failure-domain-name
               vmware.cluster.gke.io/machine-name
           Taints:
             Effect:         PreferNoSchedule
             Key:            node-role.kubernetes.io/control-plane
         Ready Nodes:        3
         Ready Timestamp:    2026-08-10T15:54:01Z
         Reconciling Nodes:  0
         Stalled Nodes:      0
         Unknown Nodes:      0
       Data Plane Load Balancer Status:
         Conditions:
           Last Transition Time:  2026-08-10T15:39:16Z
           Observed Generation:   1
           Reason:                ReconciliationCompleted
           Status:                False
           Type:                  Reconciling
         Node Pool Location:      control-plane-nodepool
       External Manifests Conditions:
         Last Transition Time:  2026-08-10T15:56:32Z
         Observed Generation:   2
         Reason:                ReconciliationCompleted
         Status:                False
         Type:                  Reconciling
       Gke Connect Conditions:
         Last Transition Time:  2026-08-10T20:13:39Z
         Observed Generation:   2
         Reason:                AnthosBareMetalVersion
         Status:                True
         Type:                  1.36.0-gke.527
         Last Transition Time:  2026-08-10T20:13:39Z
         Observed Generation:   2
         Reason:                ReconciliationCompleted
         Status:                False
         Type:                  Reconciling
       Gke Connect Dependent System Service Conditions:
         Last Transition Time:  2026-08-10T15:56:32Z
         Observed Generation:   2
         Reason:                ReconciliationCompleted
         Status:                False
         Type:                  Reconciling
       Gke Hub Registration Status:
         Membership:
           Description:  description
           Name:         name
       Gke Versions:
         v1.36.0-gke.2800:  3
       Kernel Version Conditions:
         Last Transition Time:  2026-08-10T15:39:23Z
         Reason:                kernelVersionCheckPassed
         Status:                True
         Type:                  kernelVersionCheckSuccessful
       System Service Conditions:
         Last Transition Time:  2026-08-10T20:12:26Z
         Observed Generation:   2
         Reason:                ReconciliationCompleted
         Status:                False
         Type:                  Reconciling
    

  5. Cuando se complete la actualización, gkectl list admin mostrará un STATE de RUNNING:

    NAME              STATE         AGE    VERSION
    gke-admin-test    RUNNING       9h     1.36.100-gke.144
    

    Además, cuando se completa la actualización, gkectl describe admin muestra un campo Last GKE On Prem Version en Status. Por ejemplo:

    Status:
      Cluster State:  RUNNING
      Last GKE On Prem Version:  1.36.0-gke.1
    

Soluciona problemas de la actualización asíncrona

Para una actualización asíncrona, la duración del tiempo de espera se basa en la cantidad de nodos del clúster. Si la actualización tarda más que la duración del tiempo de espera, el estado del clúster cambia de UPGRADING a ERROR, con un evento que indica que se agotó el tiempo de espera de la operación de actualización. Ten en cuenta que el estado ERROR aquí significa que la actualización tarda más de lo esperado, pero no se finalizó. El controlador continúa con la conciliación y vuelve a intentar la operación. Cuando se bloquea o falla una actualización, puedes ejecutar gkectl diagnose para verificar problemas comunes del clúster. Según el resultado, puedes decidir si deseas realizar una corrección manual o comunicarte con el equipo de asistencia deGoogle Cloud para obtener más ayuda.

Actualización síncrona

  1. En tu estación de trabajo de administrador, diagnostica el clúster antes de actualizarlo:

    gkectl diagnose cluster \
       --kubeconfig ADMIN_CLUSTER_KUBECONFIG
    

    Si el comando informa algún error o advertencia, consulta Diagnostica problemas del clúster y resuélvelos antes de continuar.

  2. Actualiza el clúster de administrador:

    gkectl upgrade admin \
       --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
       --config ADMIN_CLUSTER_CONFIG_FILE
    

    Reemplaza lo siguiente:

    • ADMIN_CLUSTER_KUBECONFIG es la ruta al archivo kubeconfig del clúster de administrador.

    • ADMIN_CLUSTER_CONFIG_FILE: la ruta al archivo de configuración del clúster de administrador.

    El comando gkectl upgrade ejecuta comprobaciones preliminares. Si las comprobaciones previas fallan, el comando se bloquea. Debes corregir las fallas o usar la marca --skip-preflight-check-blocking con el comando para desbloquearlo.

  3. Si actualizas a la versión 1.14.0 o posterior, se genera un archivo kubeconfig nuevo para el clúster de administrador que reemplaza cualquier archivo existente. Para ver los detalles del clúster en el archivo, ejecuta el siguiente comando:

    kubectl config view --kubeconfig ADMIN_CLUSTER_KUBECONFIG

gcloud CLI

Actualiza el clúster de administrador con gcloud CLI.

  1. Actualiza la versión de la plataforma a la versión de destino:

    gcloud container vmware admin-clusters update ADMIN_CLUSTER_NAME \
        --location=REGION \
        --required-platform-version=VERSION \
        --async
    

    Reemplaza lo siguiente:

    • ADMIN_CLUSTER_NAME: Es el nombre de tu clúster de administrador.
    • REGION: Es la región de Google Cloud en la que se administra el clúster de administrador.
    • VERSION: Es la versión de destino a la que deseas actualizar.

    Este comando devuelve un ID de operación. Puedes supervisar el progreso con gcloud container vmware operations describe.

  2. Después de completar la actualización de la versión de la plataforma, actualiza la versión del clúster de administrador:

    gcloud container vmware admin-clusters update ADMIN_CLUSTER_NAME \
        --location=REGION \
        --version=VERSION \
        --async
    

    En este paso, se completa la actualización del clúster de administrador a la versión de destino.

Actualiza un clúster de usuario

Puedes usar gkectl, la consola, gcloud CLI o Terraform para actualizar un clúster de usuarios. Para obtener información sobre cómo decidir qué herramienta usar, consulta Elige una herramienta para actualizar clústeres.

Console

La actualización de un clúster de usuario requiere algunos cambios en el clúster de administrador. La consola hace lo siguiente de forma automática:

  • Inscribe el clúster de administrador en la API de GKE On-Prem si aún no está inscrito.

  • Descarga e implementa un paquete de componentes en el clúster de administrador. La versión de los componentes coincide con la versión que especificas para la actualización. Estos componentes permiten que el clúster de administrador administre clústeres de usuario en esa versión.

Para actualizar un clúster de usuario, sigue estos pasos:

  1. En la consola, ve a la página Descripción general de los clústeres de Google Kubernetes Engine.

    Ir a los clústeres de GKE

  2. Selecciona el proyecto de Google Cloud y, luego, el clúster que deseas actualizar.

  3. En el panel Detalles, haz clic en Más detalles.

  4. En la sección Conceptos básicos del clúster, haz clic en Actualizar.

  5. En la lista Elige la versión de destino, selecciona la versión a la que deseas actualizar. La lista seleccionada solo contiene las versiones de parches más recientes.

  6. Haz clic en Actualizar.

Antes de que se actualice el clúster, se ejecutan las verificaciones previas para validar el estado del clúster y el de los nodos. Si las verificaciones previas se aprueban, se actualiza el clúster de usuario. La actualización tarda unos 30 minutos en completarse.

Para ver el estado de la actualización, haz clic en Mostrar detalles en la pestaña Detalles del clúster.

gcloud CLI

La actualización de un clúster de usuario requiere algunos cambios en el clúster de administrador. El comando gcloud container vmware clusters upgrade realiza automáticamente lo siguiente:

  • Inscribe el clúster de administrador en la API de GKE On-Prem si aún no está inscrito.

  • Descarga e implementa un paquete de componentes en el clúster de administrador. La versión de los componentes coincide con la versión que especificas para la actualización. Estos componentes permiten que el clúster de administrador administre clústeres de usuario en esa versión.

Para actualizar un clúster de usuario, sigue estos pasos:

  1. Actualiza los componentes de Google Cloud CLI:

    gcloud components update
    
  2. Obtén una lista de las versiones disponibles para actualizar:

    gcloud container vmware clusters query-version-config \
      --cluster=USER_CLUSTER_NAME \
      --project=PROJECT_ID \
      --location=REGION
    

    El resultado del comando es similar al siguiente:

    versions:
    - version: 1.16.3-gke.45
    - version: 1.16.2-gke.28
    - version: 1.16.1-gke.45
    - version: 1.16.0-gke.669
    - version: 1.15.6-gke.25
    - version: 1.15.5-gke.41
    
    An Anthos version must be made available on the admin cluster ahead of the user
    cluster creation or upgrade. Versions annotated with isInstalled=true are
    installed on the admin cluster for the purpose of user cluster creation or
    upgrade whereas other version are released and will be available for upgrade
    once dependencies are resolved.
    
    To install the version in the admin cluster, run:
    $ gcloud container vmware admin-clusters update my-admin-cluster --required-platform-version=VERSION
    

    Puedes ignorar el mensaje que aparece después de la lista de versiones. No importa si la versión a la que actualizas está instalada en el clúster de administrador. El comando upgrade descarga y, luego, implementa un paquete de los componentes que coincide con la versión que especificas en el comando upgrade.

  3. Actualiza el clúster.

    gcloud container vmware clusters upgrade USER_CLUSTER_NAME \
      --project=PROJECT_ID \
      --location=REGION \
      --version=VERSION
    

    Reemplaza VERSION por la versión de Google Distributed Cloud a la que deseas actualizar. Especifica una versión del resultado del comando anterior. Te recomendamos que actualices a la versión de parche más reciente.

    El resultado del comando es similar al siguiente:

    Waiting for operation [projects/example-project-12345/locations/us-west1/operations/operation-1679543737105-5f7893fd5bae9-942b3f97-75e59179] to complete.
    

    En el resultado de ejemplo, la cadena operation-1679543737105-5f7893fd5bae9-942b3f97-75e59179 es el OPERATION_ID de la operación de larga duración. Para averiguar el estado de la operación, ejecuta el siguiente comando en otra ventana de terminal:

    gcloud container vmware operations describe OPERATION_ID \
      --project=PROJECT_ID \
      --location=REGION
    

gkectl

Prepárate para actualizar un clúster de usuario

Ejecuta los siguientes pasos en tu estación de trabajo de administrador:

  1. Verifica si el clúster de usuario está en buen estado antes de comenzar el intento de actualización inicial. Consulta Diagnostica problemas de clústeres. Ejecuta gkectl diagnose cluster en el clúster de usuario y resuelve cualquier problema.

  2. Realiza este paso solo si la TARGET_VERSION es 1.30 o anterior, o si actualizas el clúster de usuario a una versión diferente de la del clúster de administrador. Ejecuta gkectl prepare para importar imágenes de SO a vSphere:

    gkectl prepare \
      --bundle-path /var/lib/gke/bundles/gke-onprem-vsphere-TARGET_VERSION.tgz \
      --kubeconfig ADMIN_CLUSTER_KUBECONFIG
    
  3. Si tu clúster tiene un grupo de nodos de Windows, ejecuta gkectl prepare windows y actualiza el campo osImage para el grupo de nodos. Para obtener instrucciones detalladas, consulta Actualiza el clúster de usuario con los grupos de nodos de Windows.

  4. En el archivo de configuración del clúster de usuario, configura gkeOnPremVersion como la versión de destino de la actualización.

Ejecutar comprobaciones previas

Cuando actualices a la versión 1.29 y versiones posteriores, puedes ejecutar las verificaciones previas antes de actualizar un clúster de usuario:

gkectl upgrade cluster \
    --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
    --config USER_CLUSTER_CONFIG \
    --dry-run

Reemplaza USER_CLUSTER_CONFIG por la ruta de acceso al archivo de configuración del clúster de usuario.

Con la marca --dry-run, gkectl upgrade cluster ejecuta las verificaciones previas, pero no inicia el proceso de actualización. Aunque las versiones anteriores de Google Distributed Cloud ejecutan comprobaciones preliminares, no se pueden ejecutar por separado de la actualización. Cuando agregas la marca --dry-run, puedes detectar y corregir cualquier problema que las comprobaciones preliminares encuentren en tu clúster de usuario antes de la actualización.

Ejecuta gkectl upgrade cluster

Existen dos variantes del comando gkectl upgrade cluster:

  • Asíncrono: (recomendado)
    Con la variación asíncrona, el comando inicia la actualización y, luego, la completa. No es necesario que mires el resultado del comando durante todo el proceso de actualización. En su lugar, puedes verificar periódicamente el progreso de la actualización ejecutando gkectl list clusters y gkectl describe clusters. Para usar la variación asíncrona, incluye la marca --async en el comando.

    • Versión 1.31: No está disponible en clústeres avanzados.
    • Versión 1.32 y posteriores: Disponible en clústeres avanzados.
  • Síncrona:
    Con la variación síncrona, el resultado del comando gkectl upgrade cluster muestra mensajes de estado en la estación de trabajo del administrador a medida que avanza la actualización.

Actualización asíncrona

  1. Omite este paso si actualizas a una versión posterior a la 1.16.

    Si usas credenciales preparadas y un registro privado para el clúster de usuario, asegúrate de que la credencial del registro privado esté preparada antes de actualizar el clúster de usuario. Para obtener información sobre cómo preparar la credencial del registro privado, consulta Configura credenciales preparadas para clústeres de usuario.

  2. Diagnostica tu clúster para asegurarte de que esté en buen estado:

    gkectl diagnose cluster \
        --kubeconfig <var>ADMIN_CLUSTER_KUBECONFIG</var>
    

    Si el comando informa algún error o advertencia, consulta Diagnostica problemas del clúster y resuélvelos antes de continuar.

  3. En tu estación de trabajo de administrador, inicia una actualización asíncrona:

    gkectl upgrade cluster \
      --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
      --config USER_CLUSTER_CONFIG \
      --async
    

    El comando anterior se completa y puedes seguir usando tu estación de trabajo de administrador mientras la actualización está en curso.

  4. Para ver el estado de la actualización, haz lo siguiente:

    gkectl list clusters --kubeconfig ADMIN_CLUSTER_KUBECONFIG
    

    En el resultado, se muestra un valor para el clúster STATE. Si el clúster aún se está actualizando, el valor de STATE es UPGRADING. Por ejemplo:

    NAMESPACE             NAME    READY   STATE       AGE   VERSION
    my-uc-gkeonprem-mgmt  my-uc   False   UPGRADING   9h    1.36.0-gke.1
    

    Los valores posibles para STATE son UPGRADING, DELETING, UPDATING, RUNNING, RECONCILING, ERROR y UNKNOWN.

  5. Para obtener más detalles sobre el progreso de la actualización y los eventos del clúster, haz lo siguiente:

    gkectl describe clusters --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
      --cluster USER_CLUSTER_NAME -v 5
    

    En el resultado, se muestra el recurso personalizado OnPremUserCluster para el clúster de usuario especificado, que incluye el estado, las condiciones y los eventos del clúster.

    Haz clic para ver el resultado de ejemplo
    Status:
    Cluster State:  RUNNING
    Conditions:
    Last Transition Time:    2026-08-10T21:29:07Z
    Message:                 Cluster is running
    Observed Generation:     2
    Reason:                  ClusterRunning
    Status:                  True
    Type:                    Ready
    Last Transition Time:    2026-08-10T21:12:05Z
    Message:                 Operator NodePool is ready
    Observed Generation:     2
    Reason:                  OperatorNodePoolReady
    Status:                  True
    Type:                    ControlPlaneReady
    Last Transition Time:    2026-08-10T16:25:08Z
    Message:                 Component provisioner job is completed
    Observed Generation:     2
    Reason:                  ComponentProvisionerJobCompleted
    Status:                  True
    Type:                    ComponentProvisionerUserProfileInstalled
    Last Transition Time:    2026-08-10T21:29:07Z
    Message:                 Node pools are running
    Observed Generation:     2
    Reason:                  NodePoolsRunning
    Status:                  True
    Type:                    NodePoolsReady
    Last Transition Time:    2026-08-10T21:29:56Z
    Message:
    Observed Generation:     2
    Reason:                  Reconciling
    Status:                  False
    Type:                    OperatorClusterKubeProxyCleanedUp
    Last Transition Time:    2026-08-10T16:27:48Z
    Message:
    Observed Generation:     2
    Reason:                  PreflightCheckPassed
    Status:                  True
    Type:                    OperatorClusterPreflightCheckSuccessful
    Last Transition Time:    2026-08-10T16:27:48Z
    Message:
    Observed Generation:     2
    Reason:                  ProvisioningStarted
    Status:                  True
    Type:                    OperatorClusterProvisioningStarted
    Last Transition Time:    2026-08-10T16:27:48Z
    Message:
    Observed Generation:     2
    Reason:                  RemoteTrackerSetupComplete
    Status:                  True
    Type:                    OperatorClusterRemoteTrackerSetupSuccessful
    Last Transition Time:    2026-08-10T16:27:48Z
    Message:
    Observed Generation:     2
    Reason:                  Reconciling
    Status:                  False
    Type:                    OperatorClusterStalled
    Last Transition Time:    2026-08-10T16:27:48Z
    Message:
    Observed Generation:     2
    Reason:                  NotPresent
    Status:                  False
    Type:                    OperatorClusterWaitingOnPendingClusterID
    Last Transition Time:    2026-08-10T18:23:16Z
    Message:                 Operator Cluster is ready
    Observed Generation:     2
    Reason:                  OperatorClusterReady
    Status:                  True
    Type:                    OperatorClusterReady
    Gke On Prem Version:       1.36.0-gke.527
    Last Gke On Prem Version:  1.35.300-gke.87
    Operator Cluster Status:
    Control Plane Node Pool Status:
      Anthos Bare Metal Version:  1.36.0-gke.527
      Anthos Bare Metal Versions:
        1.36.0-gke.527:  3
      Conditions:
        Last Transition Time:  2026-08-10T21:07:22Z
        Observed Generation:   11
        Reason:                PreflightCheckPassed
        Status:                True
        Type:                  PreflightCheckSuccessful
        Last Transition Time:  2026-08-10T21:12:05Z
        Observed Generation:   11
        Reason:                NodepoolReady
        Status:                True
        Type:                  Ready
        Last Transition Time:  2026-08-10T21:11:24Z
        Observed Generation:   11
        Reason:                ReconciliationCompleted
        Status:                False
        Type:                  Reconciling
      Gke Versions:
        v1.36.0-gke.2800:        3
      Last Reconciliation Time:  2026-08-10T21:28:02Z
      Maintenance Nodes:         0
      Managed Fields:
        Label Keys:
          node.kubernetes.io/control-plane
          node.kubernetes.io/master
        Node Label Keys:
          vsphere://abcdef-1:
            onprem.gke.io/failure-domain-name
            vmware.cluster.gke.io/machine-name
          vsphere://abcdef-2:
            onprem.gke.io/failure-domain-name
            vmware.cluster.gke.io/machine-name
          vsphere://abcdef-3:
            onprem.gke.io/failure-domain-name
            vmware.cluster.gke.io/machine-name
      Ready Nodes:        3
      Ready Timestamp:    2026-08-10T16:24:02Z
      Reconciling Nodes:  0
      Stalled Nodes:      0
      Unknown Nodes:      0
    Data Plane Load Balancer Status:
      Conditions:
        Last Transition Time:  2026-08-10T16:08:47Z
        Observed Generation:   1
        Reason:                ReconciliationCompleted
        Status:                False
        Type:                  Reconciling
      Node Pool Location:      load-balancer-nodepool
    External Manifests Conditions:
      Last Transition Time:  2026-08-10T16:12:25Z
      Observed Generation:   2
      Reason:                ReconciliationCompleted
      Status:                False
      Type:                  Reconciling
    Gke Connect Conditions:
      Last Transition Time:  2026-08-10T21:11:33Z
      Observed Generation:   2
      Reason:                AnthosBareMetalVersion
      Status:                True
      Type:                  1.36.0-gke.527
      Last Transition Time:  2026-08-10T21:11:33Z
      Observed Generation:   2
      Reason:                ReconciliationCompleted
      Status:                False
      Type:                  Reconciling
    Gke Connect Dependent System Service Conditions:
      Last Transition Time:  2026-08-10T16:25:26Z
      Observed Generation:   2
      Reason:                ReconciliationCompleted
      Status:                False
      Type:                  Reconciling
    Gke Hub Registration Status:
      Membership:
        Description:  description
        Name:         name
    Gke Versions:
      v1.36.0-gke.2800:  6
    Kernel Version Conditions:
      Last Transition Time:  2026-08-10T16:08:53Z
      Reason:                kernelVersionCheckPassed
      Status:                True
      Type:                  kernelVersionCheckSuccessful
    System Service Conditions:
      Last Transition Time:  2026-08-10T21:04:39Z
      Observed Generation:   2
      Reason:                ReconciliationCompleted
      Status:                False
      Type:                  Reconciling
    Events:
    Type    Reason         Age   From                            Message


    Normal StatusChanged 58m onprem-user-cluster-controller OnPremUserCluster status changed:

    • New ClusterState condition: UPGRADING Normal ControlPlaneUpgradeStarted 58m onprem-user-cluster-controller Creating or updating operator NodePool: NodePool is not ready: Condition "Ready" status "False" is not "True", reason: "Reconciling", message: "", lastTransitionTime: 2026-08-10 20:43:53 +0000 UTC Normal StatusChanged 58m onprem-user-cluster-controller OnPremUserCluster status changed:
    • New Ready condition: False, CreateOrUpdateOperatorNodePool, Creating or updating operator NodePool: NodePool is not ready: Condition "Ready" status "False" is not "True", reason: "Reconciling", message: "", lastTransitionTime: 2026-08-10 20:43:53 +0000 UTC Normal ControlPlaneUpgradeStarted 58m onprem-user-cluster-controller Creating or updating operator NodePool: NodePool is not ready: Condition "Ready" status "False" is not "True", reason: "Reconciling", message: "", lastTransitionTime: 2026-08-10 20:43:54 +0000 UTC Normal StatusChanged 58m onprem-user-cluster-controller OnPremUserCluster status changed:
    • New Ready condition: False, CreateOrUpdateOperatorNodePool, Creating or updating operator NodePool: NodePool is not ready: Condition "Ready" status "False" is not "True", reason: "Reconciling", message: "", lastTransitionTime: 2026-08-10 20:43:54 +0000 UTC Normal ControlPlaneUpgradeStarted 58m onprem-user-cluster-controller Creating or updating operator NodePool: NodePool is not ready: Condition "Ready" status "False" is not "True", reason: "Reconciling", message: "", lastTransitionTime: 2026-08-10 20:44:38 +0000 UTC Normal StatusChanged 58m onprem-user-cluster-controller OnPremUserCluster status changed:
    • New Ready condition: False, CreateOrUpdateOperatorNodePool, Creating or updating operator NodePool: NodePool is not ready: Condition "Ready" status "False" is not "True", reason: "Reconciling", message: "", lastTransitionTime: 2026-08-10 20:44:38 +0000 UTC Normal StatusChanged 56m onprem-user-cluster-controller OnPremUserCluster status changed:
    • New Ready condition: False, CreateOrUpdateOperatorNodePool, Creating or updating operator NodePool: NodePool is not ready: Condition "Ready" status "False" is not "True", reason: "Reconciling", message: "", lastTransitionTime: 2026-08-10 20:46:33 +0000 UTC Normal StatusChanged 54m (x2 over 56m) onprem-user-cluster-controller OnPremUserCluster status changed:
    • New Ready condition: False, CreateOrUpdateOperatorNodePool, Creating or updating operator NodePool: NodePoolClaim is currently in the progress of rolling update: Condition "NodeRecreationUpdateInProgress" ready, reason: "NodeRecreationUpdateInProgress", message: "Cannot further mark old InventoryMachines for recreation due to MinReadyNodesRequired requirement. Current process: There are still old InventoryMachines: [my-uc-cp-99cc4wxzvx8ww829-2 my-uc-cp-99cc4wxzvx8ww829-1]; New ready count (0) does not match desired count (3)" Normal StatusChanged 53m onprem-user-cluster-controller OnPremUserCluster status changed:
    • New Ready condition: False, CreateOrUpdateOperatorNodePool, Creating or updating operator NodePool: NodePool is not ready: Condition "Ready" generation 7 hasn't been observed Normal StatusChanged 53m onprem-user-cluster-controller OnPremUserCluster status changed:
    • New Ready condition: False, CreateOrUpdateOperatorNodePool, Creating or updating operator NodePool: NodePool is not ready: Condition "Ready" status "False" is not "True", reason: "Reconciling", message: "", lastTransitionTime: 2026-08-10 20:48:58 +0000 UTC Normal StatusChanged 30m (x3 over 58m) onprem-user-cluster-controller OnPremUserCluster status changed:
    • New Ready condition: True, ClusterRunning, Cluster is running Normal ControlPlaneUpgradeFinished 30m (x3 over 58m) onprem-user-cluster-controller Operator NodePool is ready Normal StatusChanged 29m (x9 over 47m) onprem-user-cluster-controller (combined from similar events): OnPremUserCluster status changed:
    • New Ready condition: False, CreateOrUpdateNodePools, Creating or updating node pools, unready node pools: [my-uc-gke-onprem-mgmt/my-uc], in deletion node pools: [] Normal NodePoolsUpgradeStarted 29m onprem-user-cluster-controller Creating or updating node pools, unready node pools: [my-uc-gke-onprem-mgmt/my-uc], in deletion node pools: [] Normal StatusChanged 13m onprem-user-cluster-controller OnPremUserCluster status changed:
    • New GKEOnPremVersion: "1.36.0-gke.527"
    • New ClusterState condition: RUNNING
    • New Ready condition: True, ClusterRunning, Cluster is running
  6. Cuando se complete la actualización, gkectl list clusters mostrará un STATE de RUNNING:

    NAMESPACE             NAME    READY   STATE     AGE     VERSION
    my-uc-gkeonprem-mgmt  my-uc   True    RUNNING   9h      1.36.0-gke.1
    

    Además, cuando se completa la actualización, gkectl describe clusters muestra un campo Last GKE On Prem Version en Status. Por ejemplo:

    Status:
    Cluster State:  RUNNING
    Last GKE On Prem Version:  1.36.0-gke.1
    

Soluciona problemas de la actualización asíncrona

Para una actualización asíncrona, la duración del tiempo de espera se basa en la cantidad de nodos del clúster. Si la actualización tarda más que la duración del tiempo de espera, el estado del clúster cambia de UPGRADING a ERROR, con un evento que indica que se agotó el tiempo de espera de la operación de actualización. Ten en cuenta que el estado ERROR aquí significa que la actualización tarda más de lo esperado, pero no se finalizó. El controlador continúa con la conciliación y vuelve a intentar la operación.

Por lo general, un tiempo de espera es el resultado de un interbloqueo causado por un PodDisruptionBudget (PDB). En ese caso, los Pods no se pueden expulsar de los nodos antiguos y estos no se pueden vaciar. Si la expulsión del Pod tarda más de 10 minutos, escribimos un evento en el objeto OnPremUserCluster. Puedes capturar el evento ejecutando gkectl describe clusters. Luego, puedes ajustar el PDB para permitir que se drene el nodo. Después de eso, la actualización puede continuar y, finalmente, completarse.

Ejemplo de evento:

Warning  PodEvictionTooLong  96s (x2 over 4m7s)  onprem-user-cluster-controller
Waiting too long(>10m0.00000003s) for (kube-system/coredns-856d6dbfdf-dl6nz) eviction.

Además, cuando se bloquea o falla una actualización, puedes ejecutar gkectl diagnose para verificar si hay problemas comunes del clúster. Según el resultado, puedes decidir si realizar una corrección manual o comunicarte con el equipo de asistencia deGoogle Cloud para obtener más ayuda.

Actualización síncrona

El comando gkectl upgrade ejecuta comprobaciones preliminares. Si las comprobaciones previas fallan, el comando se bloquea. Debes corregir las fallas o usar la marca --skip-preflight-check-blocking. Solo debes omitir las comprobaciones previas si estás seguro de que no hay fallas críticas.

Continúa con estos pasos en la estación de trabajo de administrador:

  1. Omite este paso si actualizas a una versión posterior a la 1.16.

    Si usas credenciales preparadas y un registro privado para el clúster de usuario, asegúrate de que la credencial del registro privado esté preparada antes de actualizar el clúster de usuario. Para obtener información sobre cómo preparar la credencial del registro privado, consulta Configura credenciales preparadas para clústeres de usuario.

  2. Diagnostica tu clúster para asegurarte de que esté en buen estado:

    gkectl diagnose cluster \
      --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
      --config USER_CLUSTER_CONFIG
    

    Si el comando informa algún error o advertencia, consulta Diagnostica problemas del clúster y resuélvelos antes de continuar.

  3. Actualiza el clúster:

    gkectl upgrade cluster \
      --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
      --config USER_CLUSTER_CONFIG
    
  4. Si actualizas a la versión 1.14.0 o una posterior, se genera un nuevo archivo kubeconfig para el clúster de usuario que reemplaza cualquier archivo existente. Para ver los detalles del clúster en el archivo, ejecuta el siguiente comando:

    kubectl config view --kubeconfig USER_CLUSTER_KUBECONFIG

Reanuda una actualización

Si se interrumpe una actualización del clúster de usuario, puedes reanudar la actualización del clúster de usuario si ejecutas el mismo comando de actualización con la marca --skip-validation-all:

gkectl upgrade cluster \
    --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
    --config USER_CLUSTER_CONFIG \
    --skip-validation-all

Terraform

  1. Actualiza los componentes de la Google Cloud CLI:

    gcloud components update
    
  2. Si aún no lo has hecho, inscribe el clúster de administrador en la API de GKE On-Prem. Una vez que el clúster esté inscrito en la API de GKE On-Prem, no necesitarás volver a realizar este paso.

  3. Obtén una lista de las versiones disponibles para actualizar:

    gcloud container vmware clusters query-version-config \
      --cluster=USER_CLUSTER_NAME \
      --project=PROJECT_ID \
      --location=REGION
    

    Reemplaza lo siguiente:

    • USER_CLUSTER_NAME: El nombre del clúster de usuario.

    • PROJECT_ID: Es el ID del proyecto de flota en el que ese clúster de usuario es miembro. Este es el proyecto que especificaste cuando se creó el clúster. Si creaste el clúster con gkectl, este es el ID del proyecto en el campo gkeConnect.projectID del archivo de configuración del clúster.

    • REGION: Es la región de Google Cloud en la que se ejecuta la API de GKE On-Prem y se almacenan sus metadatos. En el archivo main.tf que usaste para crear el clúster de usuario, la región se encuentra en el campo location del recurso del clúster.

    El resultado del comando es similar al siguiente:

    versions:
    - version: 1.16.3-gke.45
    - version: 1.16.2-gke.28
    - version: 1.16.1-gke.45
    - version: 1.16.0-gke.669
    - version: 1.15.6-gke.25
    - version: 1.15.5-gke.41
    
    An Anthos version must be made available on the admin cluster ahead of the user
    cluster creation or upgrade. Versions annotated with isInstalled=true are
    installed on the admin cluster for the purpose of user cluster creation or
    upgrade whereas other version are released and will be available for upgrade
    once dependencies are resolved.
    
    To install the version in the admin cluster, run:
    $ gcloud container vmware admin-clusters update my-admin-cluster --required-platform-version=VERSION
    
  4. Descarga la versión nueva de los componentes y, luego, impleméntalos en el clúster de administrador:

    gcloud container vmware admin-clusters update ADMIN_CLUSTER_NAME \
      --project=PROJECT_ID \
      --location=REGION \
      --required-platform-version=VERSION
    

    Este comando descarga la versión de los componentes que especificas en --required-platform-version en el clúster de administrador y, luego, implementa los componentes. Estos componentes permiten que el clúster de administrador administre clústeres de usuario en esa versión.

  5. En el archivo main.tf que usaste para crear el clúster de usuario, cambia on_prem_version en el recurso del clúster a la versión nueva.

  6. Inicializa y crea terraform plan:

    terraform init
    

    Terraform instala las bibliotecas necesarias, como el proveedor de Google Cloud.

  7. Revisa la configuración y realiza cambios si es necesario:

    terraform plan
    
  8. Aplica el plan de Terraform para crear el clúster de usuario:

    terraform apply
    

Quita el paquete completo

Si descargaste un paquete completo y ejecutaste con éxito gkectl prepare y actualizaste el clúster de administrador y todos los clústeres de usuario, deberías borrar el paquete completo para ahorrar espacio en el disco en la estación de trabajo de administrador. Ejecuta el siguiente comando para borrar el paquete completo:

rm /var/lib/gke/bundles/gke-onprem-vsphere-TARGET_VERSION-full.tgz

Reanuda la actualización de un clúster de administrador

Si la actualización de un clúster de administrador se interrumpe o falla, la actualización se puede reanudar si el punto de control del clúster de administrador contiene el estado necesario para restablecer el estado antes de la interrupción.

Advertencia: No repares el plano de control del administrador con gkectl repair admin-master después de un intento de actualización con errores. Si lo haces, el clúster de administrador entrará en un estado incorrecto.

Lleva a cabo los pasos siguientes:

  1. Verifica si el plano de control del administrador está en buen estado antes de comenzar el intento de actualización inicial. Consulta Diagnostica problemas de clústeres. Como se explica en ese tema, ejecuta el comando gkectl diagnose cluster para el clúster de administrador.

  2. Si el plano de control del administrador está en mal estado antes del intento de actualización inicial, repara el plano de control del administrador con el comando gkectl repair admin-master.

  3. Cuando vuelvas a ejecutar el comando de actualización después de que una actualización se interrumpa o falle, usa el mismo paquete y versión de destino como lo hiciste en el intento de actualización anterior.

Cuando vuelves a ejecutar el comando de actualización, la actualización reanudada vuelve a crear el estado del clúster de administrador desde el punto de control y vuelve a ejecutar toda la actualización. A partir de la versión 1.12.0, si el plano de control del administrador está en mal estado, el proceso de actualización se actualizará directamente a la versión de destino sin intentar restablecer el clúster de administrador en la versión de origen antes de continuar con la actualización.

La actualización se reanudará desde el punto en que falló o salió si el punto de control del clúster de administrador está disponible. Si el punto de control no está disponible, la actualización recurrirá al plano de control del administrador y, por lo tanto, este debe estar en buen estado para continuar con la actualización. Después de una actualización exitosa, el punto de control se vuelve a generar.

Si gkectl se cierra de forma inesperada durante una actualización del clúster de administrador, el clúster de tipo no se limpia. Antes de volver a ejecutar el comando de actualización para reanudar la actualización, borra el clúster de tipo:

docker stop gkectl-control-plane && docker rm gkectl-control-plane

Después de borrar el clúster de categoría, vuelve a ejecutar el comando de actualización.

Revierte una estación de trabajo de administrador después de una actualización

Puedes revertir la estación de trabajo de administrador a la versión que se usó antes de la actualización.

Durante la actualización, gkeadm registra la versión antes de que se actualice en el archivo de información de salida. Durante la reversión, gkeadm usa la versión que se muestra para descargar el archivo anterior.

Para revertir la estación de trabajo de administrador a la versión anterior, sigue estos pasos:

gkeadm rollback admin-workstation --config=AW_CONFIG_FILE

Puedes omitir --config=AW_CONFIG_FILE si el archivo de configuración de la estación de trabajo de administrador es admin-ws-config.yaml predeterminado. De lo contrario, reemplaza AW_CONFIG_FILE por la ruta de acceso al archivo de configuración de la estación de trabajo de administrador.

El comando de reversión realiza estos pasos:

  1. Descarga la versión de reversión de gkeadm.
  2. Crea una copia de seguridad del directorio principal de la estación de trabajo de administrador actual.
  3. Crea una estación de trabajo de administrador nueva con la versión de reversión de gkeadm.
  4. Borra la estación de trabajo de administrador original.

Instala el paquete con una versión diferente para la actualización

Si actualizas la estación de trabajo, se instalará un paquete con la versión correspondiente para actualizar los clústeres. Si deseas una versión diferente, sigue estos pasos a fin de instalar un paquete para TARGET_VERSION, que es la versión a la que deseas actualizar.

  1. Para comprobar las versiones actuales de los clústeres y de gkectl, ejecuta este comando. Usa la marca --details/-d para obtener información más detallada.

    gkectl version --kubeconfig ADMIN_CLUSTER_KUBECONFIG --details
    

    En el resultado, se proporciona información sobre las versiones de tu clúster.

  2. Según los resultados que obtengas, busca los siguientes problemas y corrígelos según sea necesario.

    • Si la versión actual del clúster de administrador es más de una versión secundaria inferior a TARGET_VERSION, actualiza todos los clústeres para que sean una versión secundaria anterior a TARGET_VERSION.

    • Si la versión gkectl es anterior a la 1.11 y deseas actualizar a la versión 1.12.x, tendrás que realizar varias actualizaciones. Actualiza una versión secundaria a la vez hasta llegar a la versión 1.11.x y, luego, continúa con las instrucciones de este tema.

    • Si la versión de gkectl es anterior a TARGET_VERSION, actualiza la estación de trabajo de administrador a TARGET_VERSION.

  3. Una vez que hayas determinado que tus versiones de gkectl y los clústeres son adecuadas para una actualización, descarga el paquete.

    Verifica si el paquete comprimido ya existe en la estación de trabajo de administrador.

    stat /var/lib/gke/bundles/gke-onprem-vsphere-TARGET_VERSION.tgz

    Si el paquete no está en la estación de trabajo de administrador, descárgalo.

    gcloud storage cp gs://gke-on-prem-release/gke-onprem-bundle/TARGET_VERSION/gke-onprem-vsphere-TARGET_VERSION.tgz /var/lib/gke/bundles/
    

  4. Instala el paquete.

    gkectl prepare --bundle-path /var/lib/gke/bundles/gke-onprem-vsphere-TARGET_VERSION.tgz --kubeconfig ADMIN_CLUSTER_KUBECONFIG
    

    Reemplaza ADMIN_CLUSTER_KUBECONFIG por la ruta de acceso de tu archivo kubeconfig. Puedes omitir esta marca si el archivo se encuentra en el directorio actual y tiene el nombre kubeconfig.

  5. Enumera las versiones de clúster disponibles y asegúrate de que la versión de destino esté incluida en las versiones de clúster de usuario disponibles.

    gkectl version --kubeconfig ADMIN_CLUSTER_KUBECONFIG --details

Ahora puedes crear un clúster de usuario en la versión de destino o actualizar un clúster de usuario a la versión de destino.

Soluciona problemas del proceso de actualización

Si tienes problemas cuando sigues el proceso de actualización recomendado, sigue estas recomendaciones para resolverlos. Estas sugerencias suponen que has comenzado con una configuración de la versión 1.11.x y que estás realizando el proceso de actualización recomendado.

Consulta también: Soluciona problemas de creación y actualización de clústeres

Soluciona un problema de actualización del clúster de usuario

Supongamos que encuentras un problema con la versión de actualización cuando actualizas un clúster de usuario. Determinas a partir de Atención al cliente de Google que el problema se solucionará en una próxima versión de parche. Puedes continuar de la siguiente manera:

  1. Continúa usando la versión actual para la producción.
  2. Prueba la versión del parche en un clúster que no sea de producción cuando se lance
  3. Actualiza todos los clústeres de usuario de producción a la versión de actualización de parche cuando estés seguro.
  4. Actualiza el clúster de administrador a la versión de actualización de parches.

Soluciona problemas de actualización de un clúster de administrador

Si surge algún problema cuando actualizas el clúster de administrador, debes comunicarte con la Atención al cliente de Google para resolverlo.

Mientras tanto, con el nuevo flujo de actualización, todavía puedes beneficiarse de las nuevas funciones del clúster de usuario sin que se bloquee la actualización del clúster de administrador, lo que te permite reducir la frecuencia de actualización del clúster de administrador, si así lo desea. El proceso de actualización puede proceder de la siguiente manera:

  1. Actualiza los clústeres de usuario de producción a la versión 1.12.x.
  2. Mantén la versión anterior del clúster de administrador y continúa recibiendo parches de seguridad.
  3. Prueba la actualización de los clústeres de administrador de 1.11.x a 1.12.x en un entorno de prueba y, luego, informar los problemas si los hay
  4. Si tu problema se resuelve con una versión de parche 1.12.x, puedes elegir actualizar el clúster de administrador de producción a esta versión de parche si lo deseas.

Problemas conocidos de versiones recientes

Los siguientes problemas conocidos podrían afectar las actualizaciones si estás actualizando desde la versión 1.7 o posterior.

Consulta también: Problemas conocidos

La actualización de la estación de trabajo de administrador puede fallar si el disco de datos está casi lleno

Si actualizas la estación de trabajo de administrador con el comando gkectl upgrade admin-workstation, la actualización podría fallar si el disco de datos está casi lleno, ya que el sistema intenta crear una copia de seguridad de la estación de trabajo de administrador actual de forma local mientras se actualiza a una nueva estación de trabajo de administrador. Si no puedes liberar suficiente espacio en el disco de datos, usa el comando gkectl upgrade admin-workstation con la marca adicional --backup-to-local=false para evitar realizar una copia de seguridad local de la estación de trabajo de administrador actual.

Interrupción de las cargas de trabajo con PodDisruptionBudgets

La actualización de los clústeres puede causar interrupciones o tiempo de inactividad para las cargas de trabajo que usan PodDisruptionBudgets (PDB).

El proceso de actualización de los nodos falla

Si tienes objetos PodDisruptionBudget configurados que no pueden permitir interrupciones adicionales, es posible que los nodos no se actualicen a la versión del plano de control después de varios intentos. Para evitar esta falla, te recomendamos que escales verticalmente la Deployment o la HorizontalPodAutoscaler a fin de permitir que el nodo se desvíe y aún respete la configuración de PodDisruptionBudget.

Enumera todos los objetos PodDisruptionBudget en el clúster de usuario que no permiten ninguna interrupción:

kubectl --kubeconfig USER_CLUSTER_KUBECONFIG \
    get poddisruptionbudget --all-namespaces \
    -o jsonpath='{range .items[?(@.status.disruptionsAllowed==0)]}{.metadata.namespace}/{.metadata.name}{"\n"}{end}'

Reemplaza USER_CLUSTER_KUBECONFIG por la ruta de acceso del archivo kubeconfig del clúster de usuario.

Los PDB kube-system/log-aggregator y kube-system/prometheus predeterminados aparecen en el resultado con disruptionsAllowed: 0 cuando tienen cero Pods coincidentes y status.expectedPods es 0. Debido a que estos PDB no bloquean el desvío de nodos, puedes ignorarlos.

Información adicional sobre la actualización

Acerca de las reglas de DRS de VMware habilitadas en la versión 1.1.0-gke.6

A partir de la versión 1.1.0-gke.6, Google Distributed Cloud crea automáticamente reglas de antiafinidad de Distributed Resource Scheduler (DRS) de VMware para los nodos del clúster de usuario, lo que hace que se distribuyan en al menos tres hosts físicos en tu centro de datos. A partir de la versión 1.1.0-gke.6, esta función se habilita de forma automática para clústeres nuevos y existentes.

Antes de realizar la actualización, asegúrate de que el entorno de vSphere cumpla con las siguientes condiciones:

  • DRS de VMware debe estar habilitado. Para DRS de VMware, se requiere la edición de licencia vSphere Enterprise Plus. Para aprender a habilitar DRS, consulta Enabling VMware DRS in a cluster (Habilita DRS de VMware en un clúster).

  • El nombre de usuario de vSphere que se proporciona en el archivo de configuración de credenciales tiene el permiso Host.Inventory.EditCluster.

  • Debe haber al menos tres hosts físicos disponibles.

Si el entorno de vSphere no cumple con las condiciones anteriores, aún puedes realizar la actualización. Pero para actualizar un clúster de usuario de 1.3.x a 1.4.x, debes inhabilitar los grupos antiafinidad. Para obtener más información, consulta este problema conocido en las notas de la versión de Google Distributed Cloud.

Información sobre el tiempo de inactividad durante las actualizaciones

Recurso Descripción
Clúster de administrador

Cuando un clúster de administrador está inactivo, los planos de control y las cargas de trabajo en los clústeres de usuario continúan ejecutándose, a menos que se vean afectados por una falla que causó el tiempo de inactividad.

Plano de control del clúster de usuario

Por lo general, no es probable que se produzcan tiempos de inactividad perceptibles en los planos de control del clúster de usuario. Sin embargo, las conexiones de larga duración al servidor de la API de Kubernetes podrían fallar y tendrían que restablecerse. En esos casos, el emisor de la API debe volver a intentarlo hasta que se establezca una conexión. En el peor de los casos, puede haber hasta un minuto de tiempo de inactividad durante una actualización.

Nodos del clúster de usuario

Si una actualización requiere un cambio en los nodos del clúster de usuario, Google Distributed Cloud vuelve a crear los nodos de forma progresiva y reprograma los Pods que se ejecutan en estos nodos. Puedes evitar el impacto en tus cargas de trabajo; para ello, configura PodDisruptionBudgets y reglas de antiafinidad adecuados.

Vuelve a crear un archivo de información si falta

Si falta el archivo de información de salida para tu estación de trabajo de administrador, debes volver a crear este archivo para poder continuar con la actualización. Este archivo se creó cuando creaste la estación de trabajo inicialmente y, si desde entonces realizaste una actualización, se actualizó con información nueva.

El archivo de información de salida tiene este formato:

Admin workstation version: GKEADM_VERSION
Created using gkeadm version: GKEADM_VERSION
VM name: ADMIN_WS_NAME
IP: ADMIN_WS_IP
SSH key used: FULL_PATH_TO_ADMIN_WS_SSH_KEY
To access your admin workstation:
ssh -i FULL-PATH-TO-ADMIN-WS-SSH-KEY ubuntu@ADMIN-WS-IP

A continuación, se muestra un archivo de información de salida de ejemplo:

Admin workstation version: v1.10.3-gke.49
Created using gkeadm version: v1.10.3-gke.49
VM name: admin-ws-janedoe
IP: 172.16.91.21
SSH key used: /home/janedoe/.ssh/gke-admin-workstation
Upgraded from (rollback version): v1.10.0-gke.194
To access your admin workstation:
ssh -i /home/janedoe/.ssh/gke-admin-workstation ubuntu@172.16.91.21

Crea el archivo en un editor y sustituye los parámetros que correspondan. Guarda el archivo con un nombre de archivo que sea igual al nombre de la VM en el directorio desde el que se ejecuta gkeadm. Por ejemplo, si el nombre de la VM es admin-ws-janedoe, guarda el archivo como admin-ws-janedoe.

¿Qué sigue?