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 forma eficiente. Después de restablecer el estado del clúster, puedes solucionar problemas del nodo con errores. En este documento, se muestra cómo recuperarte de situaciones de falla de nodos mediante el restablecimiento de un nodo y su eliminación forzada si es necesario.

Si deseas agregar o quitar nodos de un clúster cuando este no falló, consulta Actualiza los clústeres.

Restablece 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 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 se ejecutan los comandos de restablecimiento.

Quita el 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: 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 cualquier configuración incorrecta que haya causado la falla inicial. Omite los pasos restantes de esta sección.

  2. Si falla el paso anterior para restablecer el nodo, quítalo 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 de forma 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
    

Cómo quitar un 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 estar en un estado con alta disponibilidad (HA) después de quitar el nodo con errores. Para volver a un estado con 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: 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 cualquier configuración incorrecta que haya causado la falla inicial. Omite los pasos restantes de esta sección.

  2. Si falla el paso anterior para restablecer el nodo, 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 de forma 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
    

    Cómo restablecer un nodo cuando no se puede acceder al plano de control

    Puedes ejecutar el siguiente comando para revertir una máquina a los estados preinstalados cuando no se puede 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

Reemplaza lo siguiente:

  • NODE_IP_ADDRESSES: Es una lista separada por comas de direcciones IP de nodos, una para cada nodo que restablecerás.

  • SSH_PRIVATE_KEY_PATH: Es la ruta de acceso al archivo de clave privada SSH.

  • LOGIN_USER: Es el nombre de usuario que se usa para el acceso SUDO sin contraseña a las máquinas de 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 usa root.

  • AR_SERVICE_ACCOUNT_KEY: Es la ruta de acceso al archivo de clave JSON de la cuenta de servicio de Artifact Registry.

Este comando no quita las referencias al nodo del grupo de nodos ni de los recursos personalizados del clúster. Después de restablecer el acceso al plano de control del clúster, debes quitar el nodo del clúster de forma forzada si deseas conservar el clúster.

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 obliga 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 recuperas 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: 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 se recuperen podrían entrar en conflicto con 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.

Nota: Este proceso solo ontrola 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 de configuraciones de alta disponibilidad con 5 nodos o más.

¿Qué sigue?

Para obtener más información sobre cómo agregar o quitar nodos de un clúster cuando no hay una falla y verificar el estado del nodo, consulta Actualiza los clústeres.

Si necesitas asistencia adicional, comunícate con Atención al cliente de Cloud. También puedes consultar Cómo 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 compatibles