Actualizar grupos de nodos

En esta página se muestra cómo actualizar el plano de control y los grupos de nodos por separado en un clúster de usuario creado con Google Distributed Cloud (solo software) en VMware. Esta página está dirigida a administradores y operadores de TI que gestionan el ciclo de vida de la infraestructura tecnológica subyacente. Para obtener más información sobre los roles habituales y las tareas de ejemplo a las que hacemos referencia en el contenido, consulta Roles y tareas habituales de los usuarios de GKE. Google Cloud Antes de leer este documento, asegúrate de que conoces la planificación y la ejecución de las actualizaciones de Google Distributed Cloud, tal como se describe en los siguientes artículos:

Limitaciones

Actualizar los grupos de nodos por separado del plano de control tiene las siguientes limitaciones:

  • Esta función es compatible con los grupos de nodos de Ubuntu y COS, pero no con los grupos de nodos de Windows.

  • Esta función no está disponible al actualizar clústeres que no son Advanced a clústeres Advanced. Los clústeres no avanzados se actualizarán automáticamente a clústeres avanzados en la versión 1.33.

  • Versión 1.31: esta función no está disponible en los clústeres avanzados.

  • Versión 1.32 y posteriores: esta función está disponible en clústeres avanzados.

¿Por qué actualizar el plano de control y los grupos de nodos por separado?

  • Si tus clústeres tienen la versión 1.16 o una posterior, puedes saltarte una versión secundaria al actualizar los grupos de nodos. Si se realiza una actualización de versión omitida, el tiempo que se tarda en actualizar secuencialmente los grupos de nodos dos versiones se reduce a la mitad. Además, las actualizaciones de versiones omitidas te permiten aumentar el tiempo entre las actualizaciones necesarias para mantenerte en una versión compatible. Reducir el número de actualizaciones disminuye las interrupciones de la carga de trabajo y el tiempo de verificación. Para obtener más información, consulta Saltar una versión al actualizar grupos de nodos.

  • En determinadas situaciones, puede que quieras actualizar algunos grupos de nodos de un clúster de usuario, pero no todos. Por ejemplo:

    • Primero puedes actualizar el plano de control y un grupo de nodos que tenga poco tráfico o que ejecute tus cargas de trabajo menos críticas. Cuando te asegures de que tus cargas de trabajo se ejecutan correctamente en la nueva versión, podrás actualizar más grupos de nodos hasta que todos estén actualizados.

    • En lugar de una ventana de mantenimiento grande para actualizar el clúster, puedes actualizarlo en varias ventanas de mantenimiento. Consulta Estimar el tiempo necesario y planificar una ventana de mantenimiento para obtener información sobre cómo estimar el tiempo de una ventana de mantenimiento.

Antes de empezar

  1. En la versión 1.29 y posteriores, las comprobaciones previas del lado del servidor están habilitadas de forma predeterminada. Asegúrate de revisar las reglas de tu cortafuegos para hacer los cambios necesarios.

  2. Para actualizar a la versión 1.28 o posterior, debes habilitar kubernetesmetadata.googleapis.com y conceder el rol de gestión de identidades y accesos kubernetesmetadata.publisher a la cuenta de servicio de registro y monitorización. Para obtener más información, consulta los requisitos de las APIs de Google y de IAM.

  3. Asegúrate de que la versión actual del clúster sea la 1.14 o una posterior.

Actualizar el plano de control y los grupos de nodos seleccionados

Puedes actualizar el plano de control de un clúster de usuarios por separado de los grupos de nodos de trabajo con gkectl, la CLI de Google Cloud y Terraform. Solo puedes usar Terraform para la actualización si has creado el clúster de usuario con Terraform.

gkectl

  1. Defina la versión de origen y la de destino en las siguientes variables de marcador de posición. Todas las versiones deben ser el número de versión completo en el formato x.y.z-gke.N, como 1.16.11-gke.25.

    Versión Descripción
    SOURCE_VERSION La versión actual del clúster.
    TARGET_VERSION Elige la versión de destino. Selecciona el parche recomendado de la versión secundaria de destino.
  2. Actualiza tu estación de trabajo de administrador a la versión de destino. Espera a que aparezca un mensaje que indique que la actualización se ha completado correctamente.

  3. Importa las imágenes del SO correspondientes a vSphere:

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

    Sustituye ADMIN_CLUSTER_KUBECONFIG por la ruta del archivo kubeconfig de tu clúster de administrador.

  4. Haz los siguientes cambios en el archivo de configuración del clúster de usuarios:

    • En el campo gkeOnPremVersion, introduzca la versión de destino: TARGET_VERSION.

    • En cada grupo de nodos que quieras actualizar, asigna el valor de cadena vacía al campo nodePools.nodePool[i].gkeOnPremVersion.

      • En la versión 1.28 y posteriores, puedes acelerar la actualización del grupo de nodos definiendo el nodePools.nodePool[i].updateStrategy.rollingUpdate.maxSurge campo con un valor entero superior a 1. Cuando actualizas nodos con maxSurge, varios nodos se actualizan al mismo tiempo que se tarda en actualizar un solo nodo.
    • En cada grupo de nodos que no quieras actualizar, define nodePools.nodePool[i].gkeOnPremVersion como la versión de origen, SOURCE_VERSION.

    En el siguiente ejemplo se muestra una parte del archivo de configuración del clúster de usuarios. Especifica que el plano de control y pool-1 se actualizarán a TARGET_VERSION, pero pool-2 se mantendrá en SOURCE_VERSION.

    gkeOnPremVersion: TARGET_VERSION
    ...
    nodePools:
    - name: pool-1
      gkeOnPremVersion: ""
      ...
    - name: pool-2
      gkeOnPremVersion: SOURCE_VERSION
      ...
    
  5. Actualiza el plano de control y los grupos de nodos seleccionados:

    gkectl upgrade cluster \
      --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
      --config USER_CLUSTER_CONFIG_FILE
    

    Sustituye USER_CLUSTER_CONFIG por la ruta del archivo de configuración de tu clúster de usuario.

Actualizar grupos de nodos adicionales

Siguiendo el ejemplo anterior, supongamos que todo funciona bien con pool-1 y ahora quieres cambiar a pool-2.

  1. En el archivo de configuración de clúster de usuarios, en pool-2, asigna gkeOnPremVersion a la cadena vacía:

    gkeOnPremVersion: TARGET_VERSION
    ...
    nodePools:
    - name: pool-1
      gkeOnPremVersion: ""
      ...
    - name: pool-2
      gkeOnPremVersion: ""
      ...
    
  2. Ejecuta gkectl update cluster para aplicar el cambio:

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

CLI de gcloud

Para actualizar un clúster de usuarios, es necesario hacer algunos cambios en el clúster de administrador. El comando gcloud container vmware clusters upgrade hace lo siguiente automáticamente:

  • 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 que especifiques para la actualización. Estos componentes permiten que el clúster de administrador gestione los clústeres de usuario de esa versión.

Actualizar el plano de control

Sigue este paso para actualizar el plano de control del clúster de usuarios.

  1. Actualiza los componentes de Google Cloud CLI:

    gcloud components update
    
  2. Cambia la política de actualización del clúster:

    gcloud container vmware clusters update USER_CLUSTER_NAME \
      --project=PROJECT_ID \
      --location=REGION \
      --upgrade-policy control-plane-only=True
    

    Haz los cambios siguientes:

    • USER_CLUSTER_NAME: nombre del clúster de usuarios que se va a actualizar.

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

    • REGION: la región en la que se ejecuta la API de GKE On-Prem y almacena sus metadatos. Google Cloud Si has creado el clúster con un cliente de la API de GKE On-Prem, esta es la región que has seleccionado al crear el clúster. Si has creado el clúster con gkectl, esta es la región que has especificado al registrar el clúster en la API de GKE On-Prem.

  3. Actualiza el plano de control del clúster:

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

    Sustituye TARGET_VERSION por la versión a la que quieras actualizar. Selecciona el parche recomendado de la versión secundaria de destino.

    La salida del comando es similar a la 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 consultar 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
    

Actualizar grupos de nodos

Sigue estos pasos para actualizar los grupos de nodos después de que se haya actualizado el plano de control del clúster de usuarios:

  1. Obtén una lista de grupos de nodos del clúster de usuarios:

    gcloud container vmware node-pools list
      --cluster=USER_CLUSTER_NAME  \
      --project=PROJECT_ID \
      --location=REGION
    
  2. En cada grupo de nodos que quieras actualizar, ejecuta el siguiente comando:

    gcloud container vmware node-pools update NODE_POOL_NAME \
      --cluster=USER_CLUSTER_NAME  \
      --project=PROJECT_ID \
      --location=REGION \
      --version=TARGET_VERSION
    

Terraform

  1. Actualiza los componentes de Google Cloud CLI:

    gcloud components update
    
  2. Si aún no lo has hecho, registra el clúster de administrador en la API de GKE On-Prem. Una vez que el clúster se haya registrado en la API de GKE On-Prem, no tendrás que volver a realizar este paso.

  3. Descarga la nueva versión de los componentes e impleméntala en el clúster de administración:

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

    Haz los cambios siguientes:

    • USER_CLUSTER_NAME: nombre del clúster de usuarios que se va a actualizar.

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

    • REGION: la región en la que se ejecuta la API de GKE On-Prem y almacena sus metadatos. Google Cloud Si has creado el clúster con un cliente de la API de GKE On-Prem, esta es la región que has seleccionado al crear el clúster. Si has creado el clúster con gkectl, esta es la región que has especificado al registrar el clúster en la API de GKE On-Prem.

    • TARGET_VERSION: la versión a la que se va a actualizar. Selecciona el parche recomendado de la versión secundaria de destino.

    Este comando descarga la versión de los componentes que especifiques en --required-platform-version al clúster de administrador y, a continuación, implementa los componentes. Estos componentes permiten que el clúster de administrador gestione los clústeres de usuario de esa versión.

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

  5. Añade lo siguiente al recurso de clúster para que solo se actualice el plano de control:

    upgrade_policy {
      control_plane_only = true
    }
    
  6. Inicializa y crea el plan de Terraform:

    terraform init
    

    Terraform instala las bibliotecas necesarias, como el Google Cloudproveedor.

  7. Revisa la configuración y haz los cambios necesarios:

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

    terraform apply
    

Actualizar grupos de nodos

Sigue estos pasos para actualizar los grupos de nodos después de que se haya actualizado el plano de control del clúster de usuarios:

  1. En main.tf del recurso de cada grupo de nodos que quieras actualizar, añade lo siguiente:

    on_prem_version = "TARGET_VERSION"
    

    Por ejemplo:

    resource "google_gkeonprem_vmware_node_pool" "nodepool-basic" {
    name = "my-nodepool"
    location = "us-west1"
    vmware_cluster = google_gkeonprem_vmware_cluster.default-basic.name
    config {
      replicas = 3
      image_type = "ubuntu_containerd"
      enable_load_balancer = true
    }
    on_prem_version = "1.16.0-gke.0"
    }
    
  2. Inicializa y crea el plan de Terraform:

    terraform init
    
  3. Revisa la configuración y haz los cambios necesarios:

    terraform plan
    
  4. Aplica el plan de Terraform para crear el clúster de usuarios:

    terraform apply
    

Solución de problemas

Si tienes algún problema después de actualizar un grupo de nodos, puedes volver a la versión anterior. Para obtener más información, consulta Revertir un grupo de nodos después de una actualización.