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
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.
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 accesoskubernetesmetadata.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.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
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
, como1.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. 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.
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 archivokubeconfig
de tu clúster de administrador.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 conmaxSurge
, varios nodos se actualizan al mismo tiempo que se tarda en actualizar un solo nodo.
- En la versión 1.28 y posteriores, puedes acelerar la actualización del grupo de nodos
definiendo el
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 aTARGET_VERSION
, peropool-2
se mantendrá enSOURCE_VERSION
.gkeOnPremVersion: TARGET_VERSION ... nodePools: - name: pool-1 gkeOnPremVersion: "" ... - name: pool-2 gkeOnPremVersion: SOURCE_VERSION ...
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
.
En el archivo de configuración de clúster de usuarios, en
pool-2
, asignagkeOnPremVersion
a la cadena vacía:gkeOnPremVersion: TARGET_VERSION ... nodePools: - name: pool-1 gkeOnPremVersion: "" ... - name: pool-2 gkeOnPremVersion: "" ...
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.
Actualiza los componentes de Google Cloud CLI:
gcloud components update
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 congkectl
, este es el ID de proyecto del campogkeConnect.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 congkectl
, esta es la región que has especificado al registrar el clúster en la API de GKE On-Prem.
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:
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
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
Actualiza los componentes de Google Cloud CLI:
gcloud components update
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.
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 congkectl
, este es el ID de proyecto del campogkeConnect.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 congkectl
, 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.En el archivo
main.tf
que has usado para crear el clúster de usuario, cambiaon_prem_version
en el recurso de clúster a la nueva versión.Añade lo siguiente al recurso de clúster para que solo se actualice el plano de control:
upgrade_policy { control_plane_only = true }
Inicializa y crea el plan de Terraform:
terraform init
Terraform instala las bibliotecas necesarias, como el Google Cloudproveedor.
Revisa la configuración y haz los cambios necesarios:
terraform plan
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:
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" }
Inicializa y crea el plan de Terraform:
terraform init
Revisa la configuración y haz los cambios necesarios:
terraform plan
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.