Redefinir um nó com falha no GKE em bare metal

Quando os nós no GKE em Bare Metal falham, o que pode acontecer devido a problemas de armazenamento, rede ou configuração incorreta do SO, você quer restaurar com eficiência a integridade do cluster. Depois de restaurar a integridade do cluster, é possível solucionar problemas de falha do nó. Neste documento, mostramos como se recuperar de cenários de falha de nó redefinindo um nó e removendo-o à força, se necessário.

Se você quiser adicionar ou remover nós de um cluster quando um deles não tiver falhado, consulte Atualizar clusters.

Se precisar de mais ajuda, entre em contato com o Cloud Customer Care.

Redefinir nós

Quando há uma falha de nó, às vezes não é possível executar comandos de redefinição nele, porque o nó pode estar inacessível. Talvez seja necessário remover o nó do cluster à força.

Quando você redefine corretamente um nó e atualiza o cluster, as seguintes ações ocorrem:

  1. o nó é redefinido, de maneira semelhante a kubeadm reset, e a máquina retorna ao estado pré-instalado.
  2. as referências relacionadas ao nó são removidas dos recursos personalizados do pool de nós e do cluster.

Em alguns dos comandos bmctl a seguir para redefinir nós, o parâmetro --force indica se os comandos de redefinição (etapa 1) precisam ser ignorados. Se o parâmetro --force for usado, o bmctl vai realizar apenas a etapa de remoção (etapa 2) e não vai executar os comandos de redefinição.

Remover nó de trabalho

Para remover um nó de trabalho de um cluster, siga estas etapas:

  1. tente redefinir o nó de maneira limpa. Depois que o nó é redefinido, ele é removido do cluster:

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

    Substitua:

    • COMMA_SEPARATED_IP: os endereços IP dos nós a serem redefinidos, como 10.200.0.8,10.200.0.9.
    • CLUSTER_NAME: o nome do cluster de destino que contém os nós com falha.
    • ADMIN_KUBECONFIG: o caminho para o arquivo kubeconfig do cluster de administrador.

    Se esse comando for bem-sucedido, você poderá diagnosticar o nó e corrigir as configurações incorretas que causaram a falha inicial. Pule as etapas restantes nesta seção.

  2. Se a etapa anterior para redefinir o nó falhar, force a remoção dele do cluster. Essa remoção forçada ignora a etapa anterior que executa os comandos de redefinição e executa apenas a etapa para remover as referências relacionadas ao nó do pool de nós e dos recursos personalizados do cluster:

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

    Agora é possível diagnosticar o nó e corrigir configurações incorretas que causaram a falha inicial.

  3. Se você removeu à força o nó do cluster de nós na etapa anterior, execute o comando bmctl reset novamente para redefinir os nós:

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

Remover um único nó do plano de controle

O processo é o mesmo dos nós de trabalho. Para nós do plano de controle, bmctl também limpa a assinatura etcd.

O cluster deixa de estar em um estado de alta disponibilidade (HA, na sigla em inglês) depois que você remove o nó com falha. Para retornar a um estado de alta disponibilidade, adicione um nó íntegro ao cluster.

Para remover um nó de um cluster, siga estas etapas:

  1. tente redefinir o nó de maneira limpa. Depois que o nó é redefinido, ele é removido do cluster:

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

    Substitua os seguintes valores:

    • COMMA_SEPARATED_IP: os endereços IP dos nós a serem redefinidos, como 10.200.0.8,10.200.0.9.
    • CLUSTER_NAME: o nome do cluster de destino que contém os nós com falha.
    • ADMIN_KUBECONFIG: o caminho para o arquivo kubeconfig do cluster de administrador.

    Se esse comando for bem-sucedido, você poderá diagnosticar o nó e corrigir as configurações incorretas que causaram a falha inicial. Pule as etapas restantes nesta seção.

  2. Se a etapa anterior para redefinir o nó falhar, você poderá removê-lo à força do cluster. Essa remoção forçada pula a etapa anterior que executa os comandos de redefinição e executa apenas a etapa para remover as referências relacionadas ao nó dos recursos personalizados do pool de nós e do cluster:

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

    Agora é possível diagnosticar o nó e corrigir configurações incorretas que causaram a falha inicial.

  3. Se você removeu à força o nó do cluster de nós na etapa anterior, execute o comando bmctl reset novamente para redefinir os nós:

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

Quórum perdido no plano de controle de alta disponibilidade

Se muitos nós dos planos de controle em um cluster de alta disponibilidade entrarem em um estado com falha, o cluster perderá o quórum e ficará indisponível.

Quando você precisar restaurar clusters de gerenciamento, não forneça o arquivo kubeconfig nos comandos de redefinição. Se você fornecer o arquivo kubeconfig para um cluster de gerenciamento, ele forçará um novo cluster a executar a operação de redefinição. Ao restaurar um cluster de usuário, forneça o caminho para o arquivo kubeconfig.

  1. Para recuperar um cluster que perdeu o quórum, execute o seguinte comando em um nó íntegro:

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

    Substitua:

    • CONTROL_PLANE_NODE: os endereços IP de um nó íntegro que permanece como parte do cluster.
    • CLUSTER_NAME: o nome do cluster de destino que contém os nós com falha.
    • KUBECONFIG_FILE: se estiver recuperando um cluster de usuário, o caminho para o arquivo kubeconfig do cluster de usuário.
  2. Depois de recuperar os nós com falha, execute o comando bmctl reset para redefini-los:

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

    Substitua:

    • COMMA_SEPARATED_IP: os endereços IP dos nós a serem redefinidos, como 10.200.0.8,10.200.0.9.
    • CLUSTER_NAME: o nome do cluster de destino que contém os nós com falha.
    • KUBECONFIG_FILE: o caminho para o arquivo kubeconfig do cluster de administrador.

    Se os nós com falha faziam parte dos pools de nós do balanceador de carga, após a recuperação, eles podem competir pelo endereço IP virtual do plano de controle e tornar o novo cluster instável. Execute os comandos de redefinição nos nós com falha assim que possível depois de recuperá-los.

Esse processo lida apenas com a recuperação de desastres para uma implantação de alta disponibilidade do plano de controle de três nós. Esse processo não oferece suporte à recuperação de configurações de alta disponibilidade com cinco nós ou mais.

A seguir

  • Para mais informações sobre como adicionar ou remover nós de um cluster quando não houver falha e verificar o status do nó, consulte Atualizar clusters.

  • Se precisar de mais ajuda, entre em contato com o Cloud Customer Care.