Restablece un nodo con errores en GKE en Bare Metal

Cuando los nodos de GKE en Bare Metal fallan, lo que puede suceder debido a problemas con la configuración incorrecta del almacenamiento, la red o el SO, debes restablecer el estado del clúster de manera eficiente. Después de restablecer el estado del clúster, puedes solucionar la falla del nodo. En este documento, se muestra cómo recuperarse de una situación de falla de nodo mediante el restablecimiento de un nodo y su eliminación forzosa si es necesario.

Si deseas agregar o quitar nodos de un clúster cuando un nodo no falle, 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: 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 correctamente, ahora puedes diagnosticar el nodo y corregir cualquier configuración incorrecta que causó la falla inicial. Omite los pasos restantes de esta sección.

  2. Si el paso anterior para restablecer el nodo falla, quita de manera forzosa el nodo del clúster. Esta eliminación forzada omite el paso anterior que ejecuta comandos de restablecimiento y solo realiza el paso de quitar las referencias relacionadas al 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 causó la falla inicial.

  3. Si quitaste de manera forzosa el nodo del clúster de nodos 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 el 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 quitar el nodo con errores. Para regresar 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: 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 correctamente, ahora puedes diagnosticar el nodo y corregir cualquier configuración incorrecta que causó la falla inicial. Omite los pasos restantes de esta sección.

  2. Si el paso anterior para restablecer el 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 causó la falla inicial.

  3. Si quitaste de manera forzosa el nodo del clúster de nodos 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 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, fuerza 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, 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: 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 formaban 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 maneja la recuperación ante desastres para una implementación de alta disponibilidad de un 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?