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

En cas de défaillance des nœuds dans Google Distributed Cloud, ce qui peut se produire en raison de problèmes de configuration du stockage, du réseau ou du système d'exploitation, vous devez restaurer efficacement l'état du cluster. Après avoir restauré l'état du cluster, vous pouvez résoudre les problèmes liés à la défaillance du nœud. Ce document explique comment récupérer des scénarios de défaillance de nœud en réinitialisant un nœud et en le supprimant de manière forcée si nécessaire.

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

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

Réinitialiser les nœuds

En cas de défaillance d'un nœud, vous ne pouvez parfois pas exécuter de commandes de réinitialisation sur les nœuds, car le nœud peut être inaccessible. Vous devrez peut-être forcer la suppression du nœud du cluster.

Lorsque vous réinitialisez correctement un nœud et mettez à jour le cluster, les actions suivantes se produisent:

  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 du pool de nœuds et des ressources personnalisées du cluster.

Dans certaines des commandes bmctl suivantes permettant de réinitialiser les 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 le nœud de calcul

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

  1. Essayez de réinitialiser correctement le nœud. 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 défaillants.
    • 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 ayant causé l'échec initial. Ignorez les étapes restantes de cette section.

  2. Si l'étape précédente de réinitialisation du nœud échoue, supprimez-le du cluster de manière forcée. Cette suppression forcée ignore l'étape précédente, qui exécute les commandes de réinitialisation, et se limite à l'étape consistant à supprimer les 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 ayant causé l'échec initial.

  3. Si vous avez forcé la suppression du 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

Le processus est le 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 cesse d'être à disponibilité élevée une fois le nœud défaillant supprimé. 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 correctement le nœud. 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 défaillants.
    • 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 ayant causé l'échec initial. Ignorez les étapes restantes de cette section.

  2. Si l'étape précédente de réinitialisation du nœud échoue, vous pouvez forcer le retrait du nœud du cluster. Cette suppression forcée ignore l'étape précédente qui exécute les commandes de réinitialisation, et se limite à l'étape consistant à supprimer les 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 ayant causé l'échec initial.

  3. Si vous avez forcé la suppression du 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
    

Quorum perdu dans le plan de contrôle haute disponibilité

Si un trop grand nombre de nœuds de plans de contrôle d'un cluster à haute disponibilité passent à l'état "échec", le cluster perd le 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, cela force un nouveau cluster à effectuer l'opération de réinitialisation. Lorsque vous restaurez un cluster d'utilisateur, 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 sain restant dans le cluster.
    • CLUSTER_NAME: nom du cluster cible contenant les nœuds défaillants.
    • KUBECONFIG_FILE: en cas de récupération d'un cluster d'utilisateur, chemin d'accès au fichier kubeconfig du cluster d'utilisateur.
  2. Après avoir récupéré les nœuds défaillants, 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 défaillants.
    • KUBECONFIG_FILE: chemin d'accès au fichier kubeconfig du cluster d'administrateur.

    Si les nœuds défaillants faisaient partie des pools de nœuds de l'équilibreur de charge, après la récupération des nœuds, ils peuvent entrer en conflit pour obtenir l'adresse IP virtuelle du plan de contrôle et rendre 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 à haute disponibilité de plan de contrôle à trois nœuds. Ce processus n'est pas compatible avec la récupération pour les configurations haute disponibilité comportant cinq nœuds ou plus.

Étapes suivantes