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á destinada a administradores de TI y operadores que administran el ciclo de vida de la infraestructura tecnológica subyacente. Para obtener más información sobre los roles comunes y las tareas de ejemplo a las que hacemos referencia en el contenido de Google Cloud , consulta Roles y tareas comunes de los usuarios de GKE. Antes de leer este documento, asegúrate de saber cómo planificar y ejecutar actualizaciones de Google Distributed Cloud, como se describe en los siguientes recursos:
Limitaciones
La actualización de 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 de Windows.
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 están en la versión 1.16 o una posterior, puedes omitir una versión secundaria cuando actualices los grupos de nodos. Realizar una actualización de versión omitida reduce a la mitad el tiempo que tardaría en actualizar secuencialmente los grupos de nodos en dos versiones. Además, las actualizaciones de versiones omitidas te permiten aumentar el tiempo entre las actualizaciones necesarias para permanecer en una versión compatible. Reducir la cantidad de actualizaciones disminuye las interrupciones de la carga de trabajo y el tiempo de verificación. Para obtener más información, consulta Cómo omitir una versión cuando actualizas grupos de nodos.
En ciertas situaciones, es posible que desees actualizar algunos grupos de nodos en un clúster de usuario, pero no todos. Por ejemplo:
Primero, podrías 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. Una vez que te convenzas de que tus cargas de trabajo se ejecutan correctamente en la versión nueva, puedes actualizar grupos de nodos adicionales, hasta que, finalmente, se actualicen todos.
En lugar de tener un período de mantenimiento grande para la actualización del clúster, puedes actualizar el clúster en varios períodos de mantenimiento. Consulta Calcula el compromiso de tiempo y planifica un período de mantenimiento para obtener información sobre cómo calcular el tiempo de un período de mantenimiento.
Antes de comenzar
En la versión 1.29 y posteriores, las verificaciones previas del servidor están habilitadas de forma predeterminada. Asegúrate de revisar tus reglas de firewall para realizar los cambios necesarios.
Para actualizar a la versión 1.28 y versiones posteriores, debes habilitar
kubernetesmetadata.googleapis.com
y otorgar el rol de IAMkubernetesmetadata.publisher
a la cuenta de servicio de supervisión y registro. Para obtener más información, consulta Requisitos de la API de Google y de IAM.Asegúrate de que la versión actual del clúster sea la 1.14 o una posterior.
Actualiza el plano de control y los grupos de nodos seleccionados
La actualización del plano de control de un clúster de usuario por separado de los grupos de nodo trabajador se admite con gkectl
, Google Cloud CLI y Terraform.
Solo puedes usar Terraform para la actualización si creaste el clúster de usuario con Terraform.
gkectl
Define la versión de origen y la versión de destino en las siguientes variables de marcador de posición. Todas las versiones deben tener 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
Es 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 realizó correctamente.
Importa las imágenes de SO correspondientes 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 del archivokubeconfig
del clúster de administrador.Realiza los siguientes cambios en el archivo de configuración del clúster de usuario:
Configura el campo
gkeOnPremVersion
en la versión objetivo,TARGET_VERSION
.Para cada grupo de nodos que quieras actualizar, configura el campo
nodePools.nodePool[i].gkeOnPremVersion
como una cadena vacía.- En la versión 1.28 y en las posteriores, puedes acelerar la actualización del grupo de nodos configurando el campo
nodePools.nodePool[i].updateStrategy.rollingUpdate.maxSurge
en un valor entero mayor que 1. Cuando actualizas nodos conmaxSurge
, varios nodos se actualizan en el mismo tiempo que se tarda en actualizar un solo nodo.
- En la versión 1.28 y en las posteriores, puedes acelerar la actualización del grupo de nodos configurando el campo
Para cada grupo de nodos que no quieras actualizar, establece
nodePools.nodePool[i].gkeOnPremVersion
en la versión de origen,SOURCE_VERSION
.
En el siguiente ejemplo, se muestra una parte del archivo de configuración del clúster de usuario. Especifica que el plano de control y
pool-1
se actualizarán aTARGET_VERSION
, peropool-2
permanecerá 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
Reemplaza
USER_CLUSTER_CONFIG
por la ruta de acceso del archivo de configuración del clúster de usuario.
Actualiza grupos de nodos adicionales
Con el ejemplo anterior, supongamos que todo funciona bien con pool-1
y que ahora quieres actualizar pool-2
.
En el archivo de configuración del clúster de usuario, en
pool-2
, configuragkeOnPremVersion
como 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
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 las siguientes acciones:
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.
Actualizar el plano de control
Sigue el siguiente paso para actualizar el plano de control del clúster de usuario.
Actualiza los componentes de la 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
Reemplaza lo siguiente:
USER_CLUSTER_NAME
: Es el nombre del clúster de usuario que se actualizará.PROJECT_ID
: Es el ID del proyecto host de la flota del que el clúster del usuario es miembro. Este es el proyecto que especificaste cuando se creó el clúster. Si creaste el clúster congkectl
, este es el ID del proyecto en el campogkeConnect.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. Si creaste el clúster con un cliente de API de GKE On-Prem, esta es la región que seleccionaste cuando creaste el clúster. Si creaste el clúster congkectl
, esta es la región que especificaste cuando lo inscribiste 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
Reemplaza
TARGET_VERSION
por la versión a la que deseas actualizar. Selecciona el parche recomendado de la versión secundaria de destino.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
Actualizar grupos de nodos
Sigue estos pasos para actualizar los grupos de nodos después de actualizar el plano de control del clúster de usuario:
Obtén una lista de los grupos de nodos en el clúster de usuario:
gcloud container vmware node-pools list --cluster=USER_CLUSTER_NAME \ --project=PROJECT_ID \ --location=REGION
Para 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 la Google Cloud CLI:
gcloud components update
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.
Descarga la versión nueva de los componentes y, luego, impleméntala en el clúster de administrador:
gcloud vmware admin-clusters update ADMIN_CLUSTER_NAME \ --project=PROJECT_ID \ --location=REGION \ --required-platform-version=TARGET_VERSION
Reemplaza lo siguiente:
USER_CLUSTER_NAME
: Es el nombre del clúster de usuario que se actualizará.PROJECT_ID
: Es el ID del proyecto host de la flota del que el clúster del usuario es miembro. Este es el proyecto que especificaste cuando se creó el clúster. Si creaste el clúster congkectl
, este es el ID del proyecto en el campogkeConnect.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. Si creaste el clúster con un cliente de API de GKE On-Prem, esta es la región que seleccionaste cuando creaste el clúster. Si creaste el clúster congkectl
, esta es la región que especificaste cuando lo inscribiste en la API de GKE On-Prem.TARGET_VERSION
: Es la versión a la que se actualizará. Selecciona el parche recomendado de la versión secundaria de destino.
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.En el archivo
main.tf
que usaste para crear el clúster de usuario, cambiaon_prem_version
en el recurso del clúster a la versión nueva.Agrega lo siguiente al recurso del clúster para que solo se actualice el plano de control:
upgrade_policy { control_plane_only = true }
Inicializa y crea terraform plan:
terraform init
Terraform instala las bibliotecas necesarias, como el proveedor de Google Cloud.
Revisa la configuración y realiza cambios si es necesario:
terraform plan
Aplica el plan de Terraform para crear el clúster de usuario:
terraform apply
Actualizar grupos de nodos
Sigue estos pasos para actualizar los grupos de nodos después de actualizar el plano de control del clúster de usuario:
En
main.tf
del recurso para cada grupo de nodos que desees actualizar, agrega 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 terraform plan:
terraform init
Revisa la configuración y realiza cambios si es necesario:
terraform plan
Aplica el plan de Terraform para crear el clúster de usuario:
terraform apply
Soluciona problemas
Si encuentras un problema después de actualizar un grupo de nodos, puedes revertirlo a la versión anterior. Para obtener más información, consulta Revierte un grupo de nodos después de una actualización.