Cuando se está instalando un clúster de Google Distributed Cloud, se instalan archivos binarios y servicios systemd en los nodos que alojan ese clúster, y los servicios empiezan a escuchar los puertos de los nodos.
Sin embargo, si falla la instalación de un clúster, todos estos archivos binarios y servicios deben eliminarse. Es decir, los nodos deben restablecerse o borrarse por completo para prepararlos para volver a intentar instalar el clúster. Si los nodos no se restablecen de esta forma, el siguiente intento de instalar un clúster en ellos fallará.
En esta página se describe cómo realizar esta operación de limpieza de nodos específicos y cómo eliminar un clúster.
Esta página está dirigida a administradores, arquitectos y operadores 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
Elige un método de eliminación
El método que uses para eliminar un clúster depende de lo siguiente:
- El tipo de clúster.
- Si solo quieres limpiar nodos específicos y no eliminar todo el clúster.
- Cómo se creó el clúster.
Google Distributed Cloud ofrece los siguientes métodos de eliminación:
La Google Cloud consola o Google Cloud CLI:
Usa la consola o gcloud CLI para eliminar clústeres de usuarios gestionados por la API GKE On-Prem. Un clúster de usuario se gestiona mediante la API de GKE On-Prem si se cumple alguna de las siguientes condiciones:
El clúster se ha creado en la Google Cloud consola o mediante la CLI de gcloud, que configura automáticamente la API GKE On-Prem para gestionar el clúster.
El clúster se creó con
bmctl
, pero se configuró para que lo gestionara la API de GKE On-Prem.
bmctl
:- Usa
bmctl reset nodes
para restablecer nodos específicos. Usa
bmctl reset
para eliminar los siguientes tipos de clústeres:- Clústeres de administrador, híbridos e independientes (denominados clústeres autogestionados). Esto incluye los clústeres de administrador que gestiona la API GKE On-Prem.
- Clústeres de usuarios que no están gestionados por la API de GKE On-Prem.
Si usas
bmctl
para restablecer nodos o eliminar un clúster, el comando espera que el archivo de configuración del clúster se encuentre en el directorio de trabajo actual. De forma predeterminada, la ruta es similar a la siguiente:bmctl-workspace/CLUSTER_NAME/CLUSTER_NAME.yaml
Si has usado la marca
--workspace-dir
para especificar otro directorio durante la creación del clúster, debes usarla para especificar el directorio de trabajo durante el restablecimiento del clúster.- Usa
kubectl
:- Usa
kubectl delete cluster
para eliminar solo los clústeres de usuarios que no estén gestionados por los clústeres de la API GKE On-Prem. No ejecutes el comando en otros tipos de clústeres. - Ten en cuenta que, si usas
kubectl delete cluster
, también debes eliminar el espacio de nombres en el que se encuentra el clúster después de eliminarlo.
- Usa
Después de eliminar un clúster, puedes volver a instalarlo tras hacer los cambios de configuración necesarios.
Eliminar clústeres autogestionados
Para eliminar un clúster de administrador, híbrido o independiente, ejecuta el siguiente comando:
bmctl reset --cluster CLUSTER_NAME
En el comando, sustituye CLUSTER_NAME
por el nombre del clúster que quieras restablecer.
El resultado del comando bmctl cluster reset
es similar a este ejemplo:
Please check the logs at bmctl-workspace/example-cluster-1/log/reset-20221025-184705/reset.log [2022-10-25 18:47:11+0000] Creating bootstrap cluster... OK [2022-10-25 18:48:18+0000] Loading images... OK [2022-10-25 18:48:18+0000] Waiting for reset jobs to finish... [2022-10-25 18:48:28+0000] Operation reset in progress: 1 Completed: 0 Failed: 0 ... [2022-10-25 18:50:08+0000] Operation reset in progress: 0 Completed: 1 Failed: 0 [2022-10-25 18:50:08+0000] Flushing logs... OK [2022-10-25 18:50:08+0000] Deleting GKE Hub member example-cluster-1 in project example-project-12345... [2022-10-25 18:50:11+0000] Successfully deleted GKE Hub member example-cluster-1 in project example-project-12345 [2022-10-25 18:50:11+0000] Deleting bootstrap cluster... OK
Además de eliminar el clúster, el comando elimina la pertenencia del clúster a la flota.
En el caso de los clústeres de administrador gestionados por la API de GKE On-Prem, también debes eliminar los recursos de la API en Google Cloud. De lo contrario, el clúster se mostrará en la página Clústeres de GKE de la consola de Google Cloud . Usa el siguiente comando para eliminar los recursos de la API GKE On-Prem de un clúster de administrador:
gcloud container bare-metal admin-clusters unenroll CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID \ --location=REGION \ --ignore-errors
Haz los cambios siguientes:
FLEET_HOST_PROJECT_ID
: el ID del proyecto de la flota en la que el clúster de administrador era miembro.REGION
: la región en la que la API GKE On-Prem almacena los metadatos del clúster. Google Cloud
La marca --ignore-errors
asegura que la cancelación del registro de un recurso de clúster de administrador de hardware desnudo se realice correctamente aunque se produzcan errores durante el proceso.
Una vez que se haya eliminado el clúster, podrás crear otro. Para obtener más información, consulta la descripción general de la creación de clústeres.
Eliminar clústeres de usuarios
Si el clúster de usuario está gestionado por la API de GKE On-Prem, elimínelo mediante la consola o la CLI de gcloud. De lo contrario, usa bmctl
o kubectl
para eliminar el clúster.
bmctl
Puedes usar bmctl
para eliminar clústeres de usuarios que se hayan creado con
bmctl
o kubectl
y que no estén registrados en la API de GKE On-Prem.
Ejecuta el siguiente comando para eliminar un clúster de usuarios con bmctl
:
bmctl reset --cluster USER_CLUSTER_NAME --admin-kubeconfig ADMIN_KUBECONFIG_PATH
En el comando, sustituya las siguientes entradas por información específica de su entorno:
USER_CLUSTER_NAME
: el nombre del clúster de usuarios que vas a eliminar.ADMIN_KUBECONFIG_PATH
: la ruta al archivokubeconfig
del clúster de administrador asociado.bmctl
admite el uso de--kubeconfig
como alias de la marca--admin-kubeconfig
.
El resultado del comando bmctl cluster reset
es similar a este ejemplo:
Please check the logs at bmctl-workspace/example-cluster-1/log/reset-20221025-184705/reset.log [2022-10-25 18:47:11+0000] Creating bootstrap cluster... OK [2022-10-25 18:48:18+0000] Loading images... OK [2022-10-25 18:48:18+0000] Waiting for reset jobs to finish... [2022-10-25 18:48:28+0000] Operation reset in progress: 1 Completed: 0 Failed: 0 ... [2022-10-25 18:50:08+0000] Operation reset in progress: 0 Completed: 1 Failed: 0 [2022-10-25 18:50:08+0000] Flushing logs... OK [2022-10-25 18:50:08+0000] Deleting GKE Hub member example-cluster-1 in project example-project-12345... [2022-10-25 18:50:11+0000] Successfully deleted GKE Hub member example-cluster-1 in project example-project-12345 [2022-10-25 18:50:11+0000] Deleting bootstrap cluster... OK
kubectl
Puedes usar kubectl
para eliminar clústeres de usuarios que se hayan creado con
bmctl
o kubectl
y que no estén registrados en la API de GKE On-Prem. Para usar
kubectl
para eliminar un clúster de usuarios, primero debes eliminar el objeto del clúster y, a continuación, su espacio de nombres. De lo contrario, no se podrán crear los trabajos para restablecer las máquinas y el proceso de eliminación podría quedarse bloqueado indefinidamente.
Para eliminar un clúster de usuarios con kubectl
, sigue estos pasos:
Ejecuta el siguiente comando para eliminar el objeto de clúster:
kubectl delete cluster USER_CLUSTER_NAME -n USER_CLUSTER_NAMESPACE \ --kubeconfig ADMIN_KUBECONFIG_PATH
En el comando, sustituya las siguientes entradas por información específica de su entorno:
USER_CLUSTER_NAME
: el nombre del clúster de usuarios que vas a eliminar.USER_CLUSTER_NAMESPACE
: el espacio de nombres del clúster. De forma predeterminada, los espacios de nombres de clúster de Google Distributed Cloud tienen el nombre del clúster con el prefijocluster-
. Por ejemplo, si le das el nombretest
a tu clúster, el espacio de nombres tendrá un nombre comocluster-test
.ADMIN_KUBECONFIG_PATH
: la ruta al archivokubeconfig
del clúster de administrador asociado.
Una vez que el clúster se haya eliminado correctamente, ejecuta el siguiente comando para eliminar el espacio de nombres:
kubectl delete namespace USER_CLUSTER_NAMESPACE --kubeconfig ADMIN_KUBECONFIG_PATH
Consola
Si el clúster de usuario está gestionado por la API GKE On-Prem, sigue estos pasos para eliminar el clúster:
En la consola, ve a la página Descripción general de los clústeres de Google Kubernetes Engine.
Selecciona el proyecto en el que se encuentra el clúster de usuario. Google Cloud
En la lista de clústeres, haz clic en el que quieras eliminar.
En la lista de clústeres, busca el que quieras eliminar. Si el Tipo es externo, significa que el clúster se ha creado con
bmctl
y no se ha registrado en la API de GKE On-Prem. En ese caso, sigue los pasos de la pestañabmctl
okubectl
para eliminar el clúster.Si el icono de la columna Estado indica que hay un problema, siga los pasos de la pestaña gcloud CLI para eliminar el clúster. Deberás añadir la marca
--ignore-errors
al comando de eliminación.Haga clic en el nombre del clúster que quiera eliminar.
En el panel Detalles, cerca de la parte superior de la ventana, haz clic en
Eliminar.Cuando se te pida que confirmes la acción, introduce el nombre del clúster y haz clic en Quitar.
CLI de gcloud
Si el clúster de usuario está gestionado por la API GKE On-Prem, sigue estos pasos para eliminar el clúster en un ordenador que tenga instalada la CLI de gcloud:
Inicia sesión con tu cuenta de Google:
gcloud auth login
Actualiza los componentes:
gcloud components update
Obtén una lista de clústeres para asegurarte de que especificas el nombre correcto del clúster en el comando de eliminación:
gcloud container bare-metal clusters list \ --project=FLEET_HOST_PROJECT_ID \ --location=LOCATION
Haz los cambios siguientes:
FLEET_HOST_PROJECT_ID
: ID del proyecto en el que se creó el clúster.LOCATION
: la Google Cloud ubicación asociada al clúster de usuarios.
El resultado debería ser similar al siguiente:
NAME LOCATION VERSION ADMIN_CLUSTER STATE example-user-cluster-1a us-west1 1.33.100-gke.89 example-admin-cluster-1 RUNNING
Ejecuta el siguiente comando para eliminar el clúster:
gcloud container bare-metal clusters delete USER_CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID \ --location=LOCATION \ --force \ --allow-missing
Haz los cambios siguientes:
USER_CLUSTER_NAME
: nombre del clúster de usuarios que se va a eliminar.FLEET_HOST_PROJECT_ID
: ID del proyecto en el que se creó el clúster.LOCATION
: la Google Cloud ubicación asociada al clúster de usuarios.
La marca
--force
te permite eliminar un clúster que tenga grupos de nodos. Si no usas la marca--force
, primero debes eliminar los grupos de nodos y, después, el clúster.La marca
--allow-missing
es una marca estándar de la API de Google. Si incluyes esta marca, el comando devolverá un mensaje de éxito si no se encuentra el clúster.Si el comando devuelve un error que contiene el texto
failed connecting to the cluster's control plane
, esto indica que hay problemas de conectividad con el clúster de administrador, el agente de conexión o el entorno local. Para solucionar problemas con el agente de Connect, consulta el artículo Recoger registros del agente de Connect.Si crees que el problema de conectividad es temporal (por ejemplo, debido a problemas de red), espera e intenta ejecutar el comando de nuevo.
Si sabes que el clúster de administrador se ha eliminado o si los nodos de las máquinas del clúster de administrador o de usuario se han apagado o se han desconectado, incluye la marca
--ignore-errors
y vuelve a intentar ejecutar el comando.También debes incluir
--ignore-errors
si el clúster se ha eliminado conbmctl
okubectl
, lo que deja recursos de la API de GKE On-Prem en Google Cloud. Uno de los síntomas es que el clúster sigue apareciendo en la página Clústeres de GKE de la consola con un estado incorrecto.
Para obtener información sobre otras marcas, consulta la referencia de la CLI de gcloud.
Restablecer nodos de clúster específicos
Puede que quieras restablecer nodos específicos de un clúster si, por ejemplo, se ha eliminado un clúster de administrador, pero los clústeres de usuario gestionados por ese clúster de administrador permanecen. En este caso, los clústeres de usuarios no se pueden eliminar en su totalidad porque se ha eliminado el clúster de administrador. Por lo tanto, los nodos de los clústeres de usuarios deben restablecerse individualmente.
Para restablecer nodos, necesitas una cuenta de servicio con acceso de lectura a Artifact Registry. El comando bmctl
espera el archivo de clave JSON de esta cuenta de servicio como argumento. Para restablecer nodos concretos de un clúster, ejecuta el siguiente comando:
bmctl reset nodes --addresses NODE_1_IP_ADDRESS,NODE_2_IP_ADDRESS \ --ssh-private-key-path SSH_KEY_PATH \ --gcr-service-account-key SERVICE_ACCOUNT_KEY_PATH \ --login-user root
En el comando, sustituya las siguientes entradas por información específica de su entorno:
NODE_1_IP_ADDRESS , NODE_2_IP_ADDRESS
: lista separada por comas de las direcciones IP de los nodos que quieras eliminar.SSH_KEY_PATH
: ruta a la clave privada SSH. Esta es la clave que se usará para establecer conexiones SSH con los nodos durante el restablecimiento.SERVICE_ACCOUNT_KEY_PATH
: ruta al archivo JSON que contiene la clave de la cuenta de servicio. Esta clave otorga abmctl
permiso para extraer imágenes de Artifact Registry. Puedes crear una clave de cuenta de servicio mediante la consola o la CLI de gcloud. Para obtener más información, consulta el artículo sobre cómo crear y gestionar claves de cuentas de servicio. Otra forma de crear el archivo de clave de cuenta de servicio es ejecutar el comandocreate config
con la marca--create-service-accounts
. Para obtener más información sobre ese comando, consulta Crear y administrar una configuración de clúster de administrador con bmctl.
Detalles de la eliminación del clúster
Durante la eliminación, se borran el registro de pertenencia a la flota del clúster, los montajes de almacenamiento y los datos de anthos-system StorageClass
.
En todos los nodos, se eliminan las interfaces de túnel que se usan para la red del clúster y se suprimen los siguientes directorios:
/etc/kubernetes
/etc/cni/net.d
/root/.kube
/var/lib/kubelet
En el caso de los nodos de balanceador de carga:
- Se eliminan los servicios
keepalived
yhaproxy
. - Se eliminan los archivos de configuración de
keepalived
yhaproxy
.