Réinitialiser un nœud défaillant dans Google Distributed Cloud

Lorsque des nœuds de Google Distributed Cloud échouent, ce qui peut être dû à des problèmes de stockage, de réseau ou de configuration de l'OS, vous devez restaurer efficacement l'état du cluster. Une fois que vous avez restauré le cluster à l'état opérationnel, vous pouvez résoudre le problème de défaillance du nœud. Ce document explique comment récupérer après des scénarios d'échec de nœud en réinitialisant un nœud et en le supprimant de force si nécessaire.

Si vous souhaitez ajouter ou supprimer des nœuds d'un cluster lorsqu'un nœud n'a pas échoué, consultez la section Mettre à jour des clusters.

Si vous avez besoin d'une aide supplémentaire, contactez Cloud Customer Care.

Réinitialiser des nœuds

En cas d'échec d'un nœud, il est parfois impossible d'exécuter des commandes de réinitialisation sur les nœuds, car le nœud peut être inaccessible. Vous devrez peut-être supprimer le nœud du cluster de force.

Lorsque vous réinitialisez un nœud de manière sécurisée et mettez à jour le cluster, les actions suivantes sont effectuées :

  1. Le nœud est réinitialisé, comme pour kubeadm reset, et la machine revient à l'état préinstallé.
  2. Les références associées au nœud sont supprimées des ressources personnalisées du pool de nœuds et du cluster.

Dans certaines des commandes bmctl suivantes pour réinitialiser des nœuds, le paramètre --force indique si les commandes de réinitialisation (étape 1) doivent être ignorées. Si le paramètre --force est utilisé, bmctl n'effectue que l'étape de suppression (étape 2) et n'exécute pas les commandes de réinitialisation.

Supprimer un nœud de calcul

Pour supprimer un nœud de calcul d'un cluster, procédez comme suit :

  1. Essayez de réinitialiser le nœud proprement. Une fois le nœud réinitialisé, il est supprimé du cluster :

    bmctl reset nodes \
        --addresses COMMA_SEPARATED_IPS \
        --cluster CLUSTER_NAME \
        --kubeconfig ADMIN_KUBECONFIG
    

    Remplacez les éléments suivants :

    • COMMA_SEPARATED_IP : adresses IP des nœuds à réinitialiser, telles que 10.200.0.8,10.200.0.9.
    • CLUSTER_NAME : nom du cluster cible contenant les nœuds ayant échoué.
    • ADMIN_KUBECONFIG : chemin d'accès au fichier kubeconfig du cluster d'administrateur

    Si cette commande aboutit, vous pouvez maintenant diagnostiquer le nœud et corriger les erreurs de configuration qui ont causé l'échec initial. Ignorez les étapes restantes de cette section.

  2. Si l'étape précédente visant à réinitialiser le nœud échoue, supprimez-le de force du cluster. Cette suppression forcée ignore l'étape précédente qui exécute les commandes de réinitialisation et effectue uniquement l'étape de suppression des références associées au nœud du pool de nœuds et des ressources personnalisées du cluster :

    bmctl reset nodes \
        --addresses COMMA_SEPARATED_IPS \
        --cluster CLUSTER_NAME \
        --kubeconfig ADMIN_KUBECONFIG \
        --force
    

    Vous pouvez maintenant diagnostiquer le nœud et corriger les erreurs de configuration qui ont provoqué l'échec initial.

  3. Si vous avez supprimé le nœud du cluster de nœuds à l'étape précédente, exécutez à nouveau la commande bmctl reset pour réinitialiser les nœuds :

    bmctl reset nodes \
        --addresses COMMA_SEPARATED_IPS \
        --cluster CLUSTER_NAME \
        --kubeconfig ADMIN_KUBECONFIG
    

Supprimer un seul nœud de plan de contrôle

La procédure est la même que pour les nœuds de calcul. Pour les nœuds du plan de contrôle, bmctl nettoie également l'appartenance etcd.

Le cluster n'est plus hautement disponible après la suppression du nœud défaillant. Pour revenir à un état de haute disponibilité, ajoutez un nœud sain au cluster.

Pour supprimer un nœud d'un cluster, procédez comme suit :

  1. Essayez de réinitialiser le nœud proprement. Une fois le nœud réinitialisé, il est supprimé du cluster :

    bmctl reset nodes \
        --addresses COMMA_SEPARATED_IPS \
        --cluster CLUSTER_NAME \
        --kubeconfig ADMIN_KUBECONFIG
    

    Remplacez les valeurs suivantes :

    • COMMA_SEPARATED_IP : adresses IP des nœuds à réinitialiser, telles que 10.200.0.8,10.200.0.9.
    • CLUSTER_NAME : nom du cluster cible contenant les nœuds ayant échoué.
    • ADMIN_KUBECONFIG : chemin d'accès au fichier kubeconfig du cluster d'administrateur

    Si cette commande aboutit, vous pouvez maintenant diagnostiquer le nœud et corriger les erreurs de configuration qui ont causé l'échec initial. Ignorez les étapes restantes de cette section.

  2. Si l'étape précédente visant à réinitialiser le nœud échoue, vous pouvez le supprimer de force du cluster. Cette suppression forcée ignore l'étape précédente qui exécute ces commandes de réinitialisation et n'effectue que l'étape de suppression des références associées au nœud du pool de nœuds et des ressources personnalisées du cluster :

    bmctl reset nodes \
      --addresses COMMA_SEPARATED_IPS \
      --cluster CLUSTER_NAME \
      --kubeconfig ADMIN_KUBECONFIG \
      --force
    

    Vous pouvez maintenant diagnostiquer le nœud et corriger les erreurs de configuration qui ont provoqué l'échec initial.

  3. Si vous avez supprimé le nœud du cluster de nœuds à l'étape précédente, exécutez à nouveau la commande bmctl reset pour réinitialiser les nœuds :

    bmctl reset nodes \
      --addresses COMMA_SEPARATED_IPS \
      --cluster CLUSTER_NAME \
      --kubeconfig ADMIN_KUBECONFIG
    

    Réinitialiser un nœud lorsque le plan de contrôle est inaccessible

    Vous pouvez exécuter la commande suivante pour rétablir l'état préinstallé d'une machine lorsque le plan de contrôle du cluster est inaccessible:

bmctl reset nodes \
    --addresses NODE_IP_ADDRESSES \
    --ssh-private-key-path SSH_PRIVATE_KEY_PATH \
    --login-user LOGIN_USER \
    --gcr-service-account-key GCR_SERVICE_ACCOUNT_KEY

Remplacez les éléments suivants :

  • NODE_IP_ADDRESSES: liste d'adresses IP de nœuds séparées par une virgule, une pour chaque nœud que vous réinitialisez.

  • SSH_PRIVATE_KEY_PATH: chemin d'accès au fichier de clé privée SSH.

  • LOGIN_USER: nom d'utilisateur utilisé pour l'accès SUDO sans mot de passe aux machines de nœud. Sauf si vous spécifiez explicitement un nom d'utilisateur autre que racine pour l'accès au nœud dans la configuration du cluster (nodeAccess.loginUser), root est utilisé.

  • GCR_SERVICE_ACCOUNT_KEY: chemin d'accès au fichier de clé JSON du compte de service Container Registry.

Cette commande ne supprime pas les références au nœud du pool de nœuds et des ressources personnalisées du cluster. Après avoir rétabli l'accès au plan de contrôle du cluster, vous devez supprimer de force le nœud du cluster si vous souhaitez le conserver.

Perte de quorum dans le plan de contrôle HA

Si trop de nœuds de plan de contrôle d'un cluster HA passent à l'état "Échec", le cluster perd son quorum et devient indisponible.

Lorsque vous devez restaurer des clusters de gestion, ne fournissez pas le fichier kubeconfig dans les commandes de réinitialisation. Si vous fournissez le fichier kubeconfig pour un cluster de gestion, il force un nouveau cluster à effectuer l'opération de réinitialisation. Lorsque vous restaurez un cluster d'utilisateurs, indiquez le chemin d'accès au fichier kubeconfig.

  1. Pour récupérer un cluster qui a perdu le quorum, exécutez la commande suivante sur un nœud sain restant :

    bmctl restore --control-plane-node CONTROL_PLANE_NODE \
        --cluster CLUSTER_NAME \
        [--kubeconfig KUBECONFIG_FILE]
    

    Remplacez les éléments suivants :

    • CONTROL_PLANE_NODE : adresses IP d'un nœud opérationnel qui reste dans le cluster.
    • CLUSTER_NAME : nom du cluster cible contenant les nœuds ayant échoué.
    • KUBECONFIG_FILE : si vous récupérez un cluster d'utilisateurs, le chemin d'accès au fichier kubeconfig du cluster d'utilisateurs.
  2. Après avoir récupéré les nœuds en échec, exécutez la commande bmctl reset pour les réinitialiser :

    bmctl reset nodes \
       --addresses COMMA_SEPARATED_IPS \
       --cluster CLUSTER_NAME \
       [--kubeconfig KUBECONFIG_FILE]
    

    Remplacez les éléments suivants :

    • COMMA_SEPARATED_IP : adresses IP des nœuds à réinitialiser, telles que 10.200.0.8,10.200.0.9.
    • CLUSTER_NAME : nom du cluster cible contenant les nœuds ayant échoué.
    • KUBECONFIG_FILE : chemin d'accès au fichier kubeconfig du cluster d'administrateur

    Si les nœuds en échec faisaient partie des pools de nœuds de l'équilibreur de charge, ils pourraient se disputer l'adresse IP virtuelle du plan de contrôle après leur récupération, ce qui rendrait le nouveau cluster instable. Exécutez les commandes de réinitialisation sur les nœuds défaillants dès que possible après avoir récupéré les nœuds.

Ce processus ne gère que la reprise après sinistre pour un déploiement HA de plan de contrôle à trois nœuds. Ce processus n'est pas compatible avec la récupération des configurations HA comportant au moins cinq nœuds.

Étape suivante

  • Pour savoir comment ajouter ou supprimer des nœuds d'un cluster en cas d'échec et vérifier l'état des nœuds, consultez la section Mettre à jour des clusters.

  • <>