Restablece un nodo con errores en Google Distributed Cloud

Cuando los nodos de Google Distributed Cloud fallan, lo que puede ocurrir debido a problemas con el almacenamiento, la red o la configuración incorrecta del SO, debes restablecer el estado del clúster de manera eficiente. Después de restablecer el estado del clúster, puedes solucionar los problemas de la falla del nodo. En este documento, se muestra cómo recuperarte de situaciones de falla de un nodo mediante el restablecimiento y la eliminación forzosa del nodo si es necesario.

Si deseas agregar o quitar nodos de un clúster cuando un nodo no falla, consulta Actualiza clústeres.

Si necesitas asistencia adicional, comunícate con Atención al cliente de Cloud.

Restablecer nodos

Cuando hay una falla de nodo, a veces no puedes ejecutar comandos de restablecimiento en él, ya que es posible que no puedas acceder. Es posible que debas quitar el nodo del clúster de manera forzosa.

Cuando restableces un nodo de forma correcta y actualizas el clúster, ocurren las siguientes acciones:

  1. El nodo se restablece, de forma similar a kubeadm reset, y la máquina vuelve al estado preinstalado.
  2. Las referencias relacionadas con el nodo se quitan del grupo de nodos y los recursos personalizados del clúster.

En algunos de los siguientes comandos de bmctl para restablecer nodos, el parámetro --force indica si se deben omitir los comandos de restablecimiento (paso 1). Si se usa el parámetro --force, bmctl solo realiza el paso de eliminación (paso 2) y no ejecuta los comandos de restablecimiento.

Quitar nodo trabajador

Para quitar un nodo trabajador de un clúster, completa los siguientes pasos:

  1. Intenta restablecer el nodo de forma completa. Después de que se restablece el nodo, se quita del clúster:

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

    Reemplaza lo siguiente:

    • COMMA_SEPARATED_IP: Son las direcciones IP de los nodos que se restablecerán, como 10.200.0.8,10.200.0.9.
    • CLUSTER_NAME: Es el nombre del clúster de destino que contiene los nodos con errores.
    • ADMIN_KUBECONFIG: Es la ruta de acceso al archivo kubeconfig del clúster de administrador.

    Si este comando se ejecuta de forma correcta, ahora puedes diagnosticar el nodo y corregir los parámetros de configuración que causaron la falla inicial. Omite los pasos restantes de esta sección.

  2. Si el paso anterior para restablecer el nodo falla, quítalo del clúster de manera forzosa. Esta eliminación forzada omite el paso anterior que ejecuta los comandos de restablecimiento y solo realiza el paso de quitar del grupo de nodos y de los recursos personalizados del clúster las referencias relacionadas con el nodo:

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

    Ahora puedes diagnosticar el nodo y corregir cualquier configuración incorrecta que haya causado la falla inicial.

  3. Si quitaste el nodo del clúster de manera forzosa en el paso anterior, vuelve a ejecutar el comando bmctl reset para restablecer los nodos:

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

Quitar nodo del plano de control único

El proceso es el mismo que para los nodos trabajadores. Para los nodos del plano de control, bmctl también borra la membresía de etcd.

El clúster deja de tener un estado con alta disponibilidad (HA) después de que quitas el nodo con errores. Para volver a un estado de alta disponibilidad, agrega un nodo en buen estado al clúster.

Para quitar un nodo de un clúster, completa los siguientes pasos:

  1. Intenta restablecer el nodo de forma completa. Después de que se restablece el nodo, se quita del clúster:

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

    Reemplaza los siguientes valores:

    • COMMA_SEPARATED_IP: Son las direcciones IP de los nodos que se restablecerán, como 10.200.0.8,10.200.0.9.
    • CLUSTER_NAME: Es el nombre del clúster de destino que contiene los nodos con errores.
    • ADMIN_KUBECONFIG: Es la ruta de acceso al archivo kubeconfig del clúster de administrador.

    Si este comando se ejecuta de forma correcta, ahora puedes diagnosticar el nodo y corregir los parámetros de configuración que causaron la falla inicial. Omite los pasos restantes de esta sección.

  2. Si el paso anterior de restablecimiento del nodo falla, puedes quitarlo del clúster de manera forzosa. Esta eliminación forzosa omite el paso anterior que ejecuta los comandos de restablecimiento y solo realiza el paso para quitar las referencias relacionadas con el nodo del grupo de nodos y de los recursos personalizados del clúster:

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

    Ahora puedes diagnosticar el nodo y corregir cualquier configuración incorrecta que haya causado la falla inicial.

  3. Si quitaste el nodo del clúster de manera forzosa en el paso anterior, vuelve a ejecutar el comando bmctl reset para restablecer los nodos:

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

Se perdió el quórum en el plano de control de alta disponibilidad

Si demasiados nodos de planos de control en un clúster de alta disponibilidad obtienen en un estado de error, el clúster pierde quórum y deja de estar disponible.

Cuando necesites restablecer los clústeres de administración, no proporciones el archivo kubeconfig en los comandos de restablecimiento. Si proporcionas el archivo kubeconfig para un clúster de administración, se fuerza a un clúster nuevo a realizar la operación de restablecimiento. Cuando restablezcas un clúster de usuario, proporciona la ruta de acceso al archivo kubeconfig.

  1. Para recuperar un clúster que perdió quórum, ejecuta el siguiente comando en un nodo que se mantiene en buen estado:

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

    Reemplaza lo siguiente:

    • CONTROL_PLANE_NODE: Son las direcciones IP de un nodo en buen estado que permanece como parte del clúster.
    • CLUSTER_NAME: Es el nombre del clúster de destino que contiene los nodos con errores.
    • KUBECONFIG_FILE: Si se recupera un clúster de usuario, es la ruta de acceso al archivo kubeconfig del clúster de usuario.
  2. Después de recuperar los nodos con errores, ejecuta el comando bmctl reset para restablecer los nodos:

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

    Reemplaza lo siguiente:

    • COMMA_SEPARATED_IP: Son las direcciones IP de los nodos que se restablecerán, como 10.200.0.8,10.200.0.9.
    • CLUSTER_NAME: Es el nombre del clúster de destino que contiene los nodos con errores.
    • KUBECONFIG_FILE: Es la ruta de acceso al archivo kubeconfig del clúster de administrador.

    Si los nodos con errores eran parte de los grupos de nodos del balanceador de cargas, después de que los nodos se recuperen, podrían competir por la dirección IP virtual del plano de control y hacer que el clúster nuevo sea inestable. Ejecuta los comandos de restablecimiento en los nodos con errores lo antes posible después de recuperar los nodos.

Este proceso solo controla la recuperación ante desastres para una implementación de alta disponibilidad del plano de control de 3 nodos. Este proceso no admite la recuperación para configuraciones de alta disponibilidad con 5 nodos o más.

¿Qué sigue?