Restablecer nodos y eliminar clústeres

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:

  • 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.

  • 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.

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 archivo kubeconfig 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:

  1. 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 prefijo cluster-. Por ejemplo, si le das el nombre test a tu clúster, el espacio de nombres tendrá un nombre como cluster-test.

    • ADMIN_KUBECONFIG_PATH: la ruta al archivo kubeconfig del clúster de administrador asociado.

  2. 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:

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

    Ir a clústeres de GKE

  2. Selecciona el proyecto en el que se encuentra el clúster de usuario. Google Cloud

  3. En la lista de clústeres, haz clic en el que quieras eliminar.

  4. 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ña bmctl o kubectl 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.

  5. Haga clic en el nombre del clúster que quiera eliminar.

  6. En el panel Detalles, cerca de la parte superior de la ventana, haz clic en Eliminar.

  7. 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:

  1. Inicia sesión con tu cuenta de Google:

    gcloud auth login
    
  2. Actualiza los componentes:

    gcloud components update
    
  3. 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
    
  4. 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 con bmctl o kubectl, 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 a bmctl 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 comando create 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 y haproxy.
  • Se eliminan los archivos de configuración de keepalived y haproxy.