Réinitialiser des nœuds et supprimer des clusters

Lorsqu'un cluster Anthos sur bare metal est en cours d'installation, les fichiers binaires et les services systemd sont installés sur les nœuds hébergeant ce cluster, et les services commencent à écouter les ports sur les nœuds.

Toutefois, en cas d'échec de l'installation d'un cluster, tous ces binaires et services doivent être supprimés. En d'autres termes, les nœuds doivent être réinitialisés ou nettoyés pour les préparer à une nouvelle tentative d'installation du cluster. Si les nœuds ne sont pas réinitialisés de cette manière, la prochaine tentative d'installation d'un cluster échouera.

Cette page explique comment effectuer le nettoyage de nœuds spécifiques et comment supprimer un cluster.

Choisir une méthode de suppression

La méthode utilisée pour supprimer un cluster dépend des éléments suivants :

  • Le type de cluster.
  • Si vous souhaitez nettoyer uniquement des nœuds spécifiques et ne pas supprimer l'intégralité du cluster.
  • Création du cluster.

Les clusters Anthos sur bare metal fournissent les méthodes de suppression suivantes :

  • La console Google Cloud ou Google Cloud CLI:

    • Utilisez la console ou gcloud CLI pour supprimer les clusters d'utilisateur gérés par l'API Anthos On-Prem. Un cluster d'utilisateur est géré par l'API Anthos On-Prem si l'une des conditions suivantes est remplie:

      • Le cluster a été créé dans la console Google Cloud ou à l'aide de gcloud CLI, qui configure automatiquement l'API Anthos On-Prem pour gérer le cluster.

      • Le cluster a été créé à l'aide de bmctl, mais il a été configuré pour être géré par l'API Anthos On-Prem.

  • bmctl :

    • Utilisez bmctl reset nodes pour réinitialiser des nœuds spécifiques.
    • Utilisez bmctl reset pour supprimer les types de clusters suivants:

      • Clusters d'administrateur, hybrides et autonomes (appelés "clusters autogérés"). Cela inclut les clusters d'administrateur gérés par l'API Anthos On-Prem.
      • Clusters d'utilisateur qui ne sont pas gérés par l'API Anthos On-Prem.

    Si vous utilisez bmctl pour réinitialiser des nœuds ou supprimer un cluster, la commande s'attend à ce que le fichier de configuration du cluster se trouve dans le répertoire de travail actuel. Par défaut, le chemin d'accès est semblable à ce qui suit :

    bmctl-workspace/CLUSTER_NAME/CLUSTER_NAME.yaml

    Si vous avez utilisé l'option --workspace-dir pour spécifier un répertoire différent lors de la création du cluster, vous devez également l'utiliser pour spécifier le répertoire de travail lors de la réinitialisation du cluster.

  • kubectl :

    • Utilisez kubectl delete cluster pour supprimer uniquement les clusters d'utilisateur qui ne sont pas gérés par les clusters d'API Anthos On-Prem. N'exécutez pas la commande sur d'autres types de clusters.
    • Notez que si vous utilisez kubectl delete cluster, vous devez également supprimer l'espace de noms dans lequel se trouve le cluster.

Après avoir supprimé un cluster, vous pouvez le réinstaller après avoir effectué les modifications de configuration nécessaires.

Supprimer des clusters autogérés

Pour supprimer un cluster d'administrateur, hybride ou autonome, exécutez la commande suivante:

bmctl reset --cluster CLUSTER_NAME

Dans la commande, remplacez CLUSTER_NAME par le nom du cluster que vous souhaitez réinitialiser.

Le résultat de la commande bmctl cluster reset ressemble à ceci :

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

En plus de supprimer le cluster, la commande supprime son appartenance à le parc.

Pour les clusters d'administrateur gérés par l'API Anthos On-Prem, vous devez également supprimer les ressources de l'API dans Google Cloud. Sinon, le cluster sera affiché sur la page Clusters Anthos de la console Google Cloud. Exécutez la commande suivante pour supprimer les ressources de l'API Anthos On-Prem d'un cluster d'administrateur:

gcloud beta container bare-metal admin-clusters unenroll CLUSTER_NAME \
    --project=FLEET_HOST_PROJECT_ID \
    --location=REGION \
    --allow-missing

Remplacez les éléments suivants :

  • FLEET_HOST_PROJECT_ID: ID de projet du parc auquel le cluster d'administrateur était membre.

  • REGION: région Google Cloud dans laquelle l'API Anthos On-Prem stocke les métadonnées du cluster.

Une fois la suppression du cluster terminée, vous pouvez créer un autre cluster. Pour en savoir plus, consultez la page Présentation de la création de clusters.

Supprimer des clusters d'utilisateur

Si le cluster d'utilisateur est géré par l'API Anthos On-Prem, supprimez le cluster à l'aide de la console ou de gcloud CLI. Sinon, si vous utilisez bmctl ou kubectl pour supprimer le cluster, la commande quitte les ressources de l'API Anthos On-Prem et le cluster reste affiché sur la page Clusters Anthos de la console Google Cloud. Pour supprimer les ressources de l'API Anthos On-Prem, exécutez gcloud beta container bare-metal clusters delete avec l'indicateur --allow_missing, comme décrit dans l'onglet de gcloud CLI.

bmctl

Vous pouvez utiliser bmctl pour supprimer les clusters d'utilisateur créés avec bmctl ou kubectl.

Exécutez la commande suivante pour supprimer un cluster d'utilisateur avec bmctl :

bmctl reset --cluster CLUSTER_NAME --admin-kubeconfig ADMIN_KUBECONFIG_PATH

Dans la commande, remplacez les entrées suivantes par des informations spécifiques à votre environnement de cluster :

  • CLUSTER_NAME : nom du cluster d'utilisateur que vous supprimez.

  • ADMIN_KUBECONFIG_PATH : chemin d'accès au fichier kubeconfig du cluster d'administrateur associé. bmctl permet d'utiliser --kubeconfig comme alias pour l'option --admin-kubeconfig.

Le résultat de la commande bmctl cluster reset ressemble à ceci :

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

Vous pouvez utiliser kubectl pour supprimer les clusters d'utilisateur créés avec bmctl ou kubectl. Pour supprimer un cluster d'utilisateur à l'aide de kubectl, vous devez d'abord supprimer l'objet du cluster, avant de supprimer son espace de noms. Autrement, les tâches de réinitialisation des machines ne peuvent pas être créées et le processus de suppression peut être bloqué indéfiniment.

Pour supprimer un cluster d'utilisateur à l'aide de kubectl, procédez comme suit :

  1. Exécutez la commande suivante pour supprimer l'objet du cluster :

    kubectl delete cluster CLUSTER_NAME -n CLUSTER_NAMESPACE \
        --kubeconfig ADMIN_KUBECONFIG_PATH
    

    Dans la commande, remplacez les entrées suivantes par des informations spécifiques à votre environnement de cluster :

    • CLUSTER_NAME : nom du cluster d'utilisateur que vous supprimez.

    • CLUSTER_NAMESPACE : espace de noms du cluster. Par défaut, les espaces de noms des clusters Anthos sur Bare Metal sont le nom du cluster précédé de cluster-. Par exemple, si vous nommez votre cluster test, l'espace de noms porte un nom tel que cluster-test.

    • ADMIN_KUBECONFIG_PATH : chemin d'accès au fichier kubeconfig du cluster d'administrateur associé.

  2. Une fois le cluster supprimé, exécutez la commande suivante pour supprimer l'espace de noms :

    kubectl delete namespace CLUSTER_NAMESPACE --kubeconfig ADMIN_KUBECONFIG_PATH
    

Console

Si le cluster d'utilisateur est géré par l'API Anthos On-Prem, procédez comme suit pour le supprimer:

  1. Dans la console, accédez à la page des clusters Anthos.

    Accéder à la page "Clusters Anthos"

  2. Sélectionnez le projet Google Cloud dans lequel se trouve le cluster d'utilisateur.

  3. Dans la liste des clusters, cliquez sur le cluster que vous souhaitez modifier.

  4. Dans le panneau Détails, si le type est Anthos (utilisateur bare metal), procédez comme suit pour supprimer le cluster :

    1. Dans le panneau Détails, cliquez sur Afficher les détails.

    2. En haut de la fenêtre, cliquez sur Supprimer.

    3. Lorsque vous êtes invité à confirmer votre choix, cliquez à nouveau sur Supprimer.

    Si le type est externe, cela signifie que le cluster a été créé à l'aide d'un outil de ligne de commande et qu'il n'est pas géré par l'API Anthos On-Prem. Dans ce cas, utilisez bmctl ou kubectl pour supprimer le cluster.

gcloud CLI

Si le cluster d'utilisateur est géré par l'API Anthos On-Prem, procédez comme suit pour supprimer le cluster sur un ordinateur sur lequel gcloud CLI est installé:

  1. Connectez-vous à votre compte Google :

    gcloud auth login
    
  2. Mettez à jour les composants :

    gcloud components update
    
  3. Obtenez la liste des clusters pour vous assurer que vous spécifiez le bon nom de cluster dans la commande de suppression:

    gcloud beta container bare-metal clusters list \
      --project=FLEET_HOST_PROJECT_ID \
      --location=LOCATION
    

    Remplacez les éléments suivants :

    • FLEET_HOST_PROJECT_ID: ID du projet dans lequel le cluster a été créé.

    • LOCATION: emplacement Google Cloud associé au cluster d'utilisateur.

    Le résultat ressemble à ce qui suit :

    NAME                      LOCATION    VERSION         ADMIN_CLUSTER            STATE
    example-user-cluster-1a   us-west1    1.15.0          example-admin-cluster-1  RUNNING
    
  4. Exécutez la commande suivante pour supprimer le cluster:

    gcloud beta container bare-metal clusters delete USER_CLUSTER_NAME \
      --project=FLEET_HOST_PROJECT_ID \
      --location=LOCATION \
      --force \
      --allow-missing
    

    Remplacez les éléments suivants :

    • USER_CLUSTER_NAME: nom du cluster d'utilisateur à supprimer.

    • FLEET_HOST_PROJECT_ID: ID du projet dans lequel le cluster a été créé.

    • LOCATION: emplacement Google Cloud associé au cluster d'utilisateur.

    L'option --force vous permet de supprimer un cluster comportant des pools de nœuds. Sans l'option --force, vous devez d'abord supprimer les pools de nœuds, puis le cluster.

    L'indicateur --allow-missing est un indicateur d'API Google standard. Si vous incluez cet indicateur, la commande renvoie le résultat si le cluster est introuvable.

    Si la commande renvoie une erreur contenant le texte failed connecting to the cluster's control plane, cela indique des problèmes de connectivité avec le cluster d'administrateur, Connect Agent ou l'environnement sur site.

    • Si vous pensez que le problème de connectivité est temporaire, par exemple à cause de problèmes réseau, attendez et relancez la commande.

    • Si la nouvelle tentative d'exécution de la commande échoue, consultez la section Collecter les journaux de Connect Agent pour résoudre les problèmes liés à Connect Agent.

    • Si vous savez que le cluster d'administrateur a été supprimé, que les machines de nœud de l'administrateur ou le cluster d'utilisateur ont été arrêtés ou mis hors connexion, incluez l'indicateur --ignore-errors et réessayez la commande.

Pour en savoir plus sur les autres options, consultez la documentation de référence de gcloud CLI.

Réinitialiser des nœuds de cluster spécifiques

Vous pouvez réinitialiser des nœuds spécifiques d'un cluster si, par exemple, un cluster d'administrateur a été supprimé, mais que les clusters d'utilisateur gérés par ce cluster d'administrateur demeurent. Dans ce cas, les clusters d'utilisateur dans leur ensemble ne peuvent pas être supprimés, car le cluster d'administrateur a été supprimé. Par conséquent, les nœuds des clusters d'utilisateur doivent être réinitialisés individuellement.

Pour réinitialiser des nœuds, vous devez disposer d'un compte de service ayant un accès en lecture à Google Container Registry (GCR). La commande bmctl attend un fichier de clé JSON pour ce compte de service comme argument. Pour réinitialiser des nœuds individuels d'un cluster, exécutez la commande suivante :

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

Dans la commande, remplacez les entrées suivantes par des informations spécifiques à votre environnement de cluster :

  • NODE_1_IP_ADDRESS , NODE_2_IP_ADDRESS : liste des adresses IP des nœuds à supprimer, séparées par une virgule.

  • SSH_KEY_PATH : chemin d'accès à la clé privée SSH. Cette clé servira à établir des connexions SSH avec les nœuds lors de la réinitialisation.

  • SERVICE_ACCOUNT_KEY_PATH : chemin d'accès au fichier JSON contenant la clé du compte de service. Cette clé accorde à bmctl l'autorisation d'extraire des images de Google Container Registry. Vous pouvez créer une clé de compte de service à l'aide de la console ou de gcloud CLI. Pour plus d'informations, consultez la page Créer et gérer les clés de comptes de service. Vous pouvez également créer le fichier de clé de compte de service si vous exécutez la commande create config avec l'option --create-service-accounts. Pour en savoir plus sur cette commande, consultez la section Créer et configurer une configuration de cluster d'administrateur avec bmctl.

Détails de la suppression du cluster

Lors de la suppression, l'enregistrement de l'appartenance au parc, les installations de stockage et les données de anthos-system StorageClass sont supprimés.

Pour tous les nœuds, les interfaces de tunnel utilisées pour la mise en réseau des clusters sont supprimées, ainsi que les répertoires suivants :

  • /etc/kubernetes
  • /etc/cni/net.d
  • /root/.kube
  • /var/lib/kubelet

Pour les nœuds d'équilibrage de charge :

  • Les services keepalived et haproxy sont supprimés.
  • Les fichiers de configuration de keepalived et haproxy ont été supprimés.