Restablecer un nodo fallido en Google Distributed Cloud

Cuando fallan los nodos de Google Distributed Cloud, lo que puede ocurrir debido a problemas con el almacenamiento, la red o una configuración incorrecta del SO, es importante restaurar el estado del clúster de forma eficiente. Una vez que hayas restaurado el estado del clúster, podrás solucionar el problema del nodo. En este documento se explica cómo recuperarse de situaciones de fallo de nodos restableciendo un nodo y eliminándolo de forma forzada si es necesario.

Si quieres añadir o quitar nodos de un clúster cuando un nodo no ha fallado, consulta Actualizar clústeres.

Restablecer nodos

Cuando se produce un fallo en un nodo, a veces no puedes ejecutar comandos de restablecimiento en los nodos, ya que es posible que no se pueda acceder a ellos. Es posible que tengas que eliminar el nodo del clúster por la fuerza.

Cuando restableces un nodo correctamente 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 eliminan de los recursos personalizados de nodepool y clúster.

En algunos de los siguientes comandos 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.

Eliminar un nodo de trabajador

Para quitar un nodo de trabajo de un clúster, sigue estos pasos:

  1. Prueba a restablecer el nodo correctamente. Una vez que se haya restablecido el nodo, se eliminará del clúster:

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

    Haz los cambios siguientes:

    • COMMA_SEPARATED_IP: las direcciones IP de los nodos que se van a restablecer, como 10.200.0.8,10.200.0.9.
    • CLUSTER_NAME: el nombre del clúster de destino que contiene los nodos fallidos.
    • ADMIN_KUBECONFIG: la ruta al archivo del clúster de administrador. kubeconfig

    Si este comando se ejecuta correctamente, ya puedes diagnosticar el nodo y corregir cualquier error de configuración que haya provocado el fallo inicial. Sáltate los pasos restantes de esta sección.

  2. Si el paso anterior para restablecer el nodo falla, quita el nodo del clúster de forma forzada. Esta eliminación forzosa omite el paso anterior que ejecuta esos comandos de restablecimiento y solo realiza el paso para eliminar las referencias relacionadas al nodo de los recursos personalizados del grupo de nodos y del clúster:

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

    Ahora puedes diagnosticar el nodo y corregir los errores de configuración que han provocado el fallo inicial.

  3. Si has quitado el nodo del clúster de nodos de forma forzada 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
    

Eliminar un solo nodo del plano de control

El proceso es el mismo que para los nodos de trabajador. En el caso de los nodos del plano de control, bmctl también limpia la pertenencia a etcd.

El clúster deja de estar en un estado de alta disponibilidad después de quitar el nodo con errores. Para volver a un estado de alta disponibilidad, añade un nodo correcto al clúster.

Para quitar un nodo de un clúster, sigue estos pasos:

  1. Prueba a restablecer el nodo correctamente. Una vez que se haya restablecido el nodo, se eliminará del clúster:

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

    Sustituye los siguientes valores:

    • COMMA_SEPARATED_IP: las direcciones IP de los nodos que se van a restablecer, como 10.200.0.8,10.200.0.9.
    • CLUSTER_NAME: el nombre del clúster de destino que contiene los nodos fallidos.
    • ADMIN_KUBECONFIG: la ruta al archivo del clúster de administrador. kubeconfig

    Si este comando se ejecuta correctamente, ya puedes diagnosticar el nodo y corregir cualquier error de configuración que haya provocado el fallo inicial. Sáltate los pasos restantes de esta sección.

  2. Si el paso anterior para restablecer el nodo falla, puedes quitarlo del clúster de forma forzada. Esta eliminación forzosa se salta el paso anterior, que ejecuta los comandos de restablecimiento, y solo realiza el paso para eliminar las referencias relacionadas al nodo de los recursos personalizados del grupo de nodos y del clúster:

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

    Ahora puedes diagnosticar el nodo y corregir los errores de configuración que han provocado el fallo inicial.

  3. Si has quitado el nodo del clúster de nodos de forma forzada 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
    

    Restablecer un nodo cuando no se puede acceder al plano de control

    Puedes ejecutar el siguiente comando para restaurar el estado preinstalado de una máquina cuando no se pueda acceder al plano de control del clúster:

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

Haz los cambios siguientes:

  • NODE_IP_ADDRESSES: lista separada por comas de direcciones IP de nodos, una por cada nodo que quieras restablecer.

  • SSH_PRIVATE_KEY_PATH: la ruta del archivo de clave privada SSH.

  • LOGIN_USER: el nombre de usuario que se usa para el acceso SUDO sin contraseña a las máquinas de los nodos. A menos que especifiques explícitamente un nombre de usuario no raíz para el acceso al nodo en la configuración del clúster (nodeAccess.loginUser), se usará root.

  • AR_SERVICE_ACCOUNT_KEY: la ruta del archivo de clave JSON de la cuenta de servicio de Artifact Registry.

Este comando no elimina las referencias al nodo de los recursos personalizados del grupo de nodos y del clúster. Después de restaurar el acceso al plano de control del clúster, debes quitar el nodo del clúster si quieres conservarlo.

Se ha perdido el quórum en el plano de control de alta disponibilidad

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

Cuando necesites restaurar clústeres de gestión, no proporciones el archivo kubeconfig en los comandos de restablecimiento. Si proporcionas el archivo kubeconfig para un clúster de gestión, se obligará a un nuevo clúster a realizar la operación de restablecimiento. Cuando restaures un clúster de usuarios, proporciona la ruta al archivo kubeconfig.

  1. Para recuperar un clúster que ha perdido el quórum, ejecuta el siguiente comando en un nodo correcto que quede:

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

    Haz los cambios siguientes:

    • CONTROL_PLANE_NODE: las direcciones IP de un nodo en buen estado que sigue formando parte del clúster.
    • CLUSTER_NAME: el nombre del clúster de destino que contiene los nodos fallidos.
    • KUBECONFIG_FILE: si se recupera un clúster de usuarios, la ruta al archivo kubeconfig del clúster de usuarios.
  2. Después de recuperar los nodos fallidos, ejecuta el comando bmctl reset para restablecer los nodos:

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

    Haz los cambios siguientes:

    • COMMA_SEPARATED_IP: las direcciones IP de los nodos que se van a restablecer, como 10.200.0.8,10.200.0.9.
    • CLUSTER_NAME: el nombre del clúster de destino que contiene los nodos fallidos.
    • KUBECONFIG_FILE: la ruta al archivo del clúster de administrador. kubeconfig

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

Este proceso solo gestiona la recuperación tras fallos de una implementación de alta disponibilidad del plano de control de 3 nodos. Este proceso no admite la recuperación de configuraciones de alta disponibilidad con 5 nodos o más.

Siguientes pasos

Para obtener más información sobre cómo añadir o quitar nodos de un clúster cuando no hay ningún fallo y cómo comprobar el estado de los nodos, consulta Actualizar clústeres.

Si necesitas más ayuda, ponte en contacto con el servicio de atención al cliente de Cloud. También puedes consultar la sección Obtener asistencia para obtener más información sobre los recursos de asistencia, incluidos los siguientes:

  • Requisitos para abrir un caso de asistencia.
  • Herramientas para ayudarte a solucionar problemas, como la configuración de tu entorno, los registros y las métricas.
  • Componentes admitidos.