Redefinir nós do cluster

Durante a instalação de um cluster, os binários e os serviços systemd são instalados em nós que hospedam esse cluster, e os serviços começam a detectar as portas nesses nós.

No entanto, se a instalação do cluster falhar, todos esses binários e serviços precisam ser excluídos. Em outras palavras, os nós precisam ser redefinidos ou limpos na preparação de uma nova tentativa de instalação do cluster. Se os nós não forem redefinidos dessa forma, a próxima tentativa de instalar um cluster neles vai falhar.

O comando bmctl reset realiza essa operação de limpeza de nós. É possível executar o comando bmctl reset em um cluster inteiro ou em nós específicos de um cluster. Neste documento, você aprenderá a executar o comando nos dois modos.

É importante observar que, quando o comando bmctl reset é aplicado a um cluster, ele é excluído porque o comando limpa os nós de todos os binários e serviços do cluster.

Redefinir clusters com bmctl reset cluster

A redefinição de um cluster faz com que ele seja excluído. Após a exclusão, faça as alterações de configuração necessárias para reinstalar o cluster.

Redefinir clusters autogerenciados

Para redefinir clusters de administrador, híbridos ou independentes, execute o seguinte comando:

bmctl reset --cluster CLUSTER_NAME

No comando, substitua CLUSTER_NAME pelo nome do cluster que você quer redefinir.

Quando a redefinição for concluída, você vai poder criar um novo cluster. Para detalhes, consulte a Visão geral da criação de cluster.

Redefinir clusters de usuários

É possível redefinir ou excluir clusters de usuários com os comandos bmctl reset ou kubectl delete. Nos dois casos, o cluster é excluído. Recomendamos usar bmctl reset.

Como usar bmctl para redefinir ou excluir um cluster de usuário

Execute o seguinte comando para redefinir ou excluir um cluster de usuário com bmctl:

bmctl reset --cluster CLUSTER_NAME --admin-kubeconfig ADMIN_KUBECONFIG_PATH

No comando, substitua as seguintes entradas por informações específicas ao ambiente:

  • CLUSTER_NAME: o nome do cluster de usuário que você está redefinindo.

  • ADMIN_KUBECONFIG_PATH: o caminho para o arquivo kubeconfig do cluster de administrador associado. O bmctl tem suporte para o uso de --kubeconfig como um alias para a sinalização --admin-kubeconfig.

Como usar kubectl para excluir um cluster de usuário

Para usar kubectl para excluir um cluster de usuário, primeiro exclua o objeto do cluster e, em seguida, o namespace dele. Caso contrário, os jobs para redefinir máquinas não poderão ser criados, e o processo de exclusão poderá ficar travado indefinidamente.

Para excluir um cluster de usuário com kubectl:

  1. Execute este comando para excluir o objeto do cluster:

    kubectl delete cluster CLUSTER_NAME -n CLUSTER_NAMESPACE \
        --kubeconfig ADMIN_KUBECONFIG_PATH

    No comando, substitua as seguintes entradas por informações específicas ao ambiente:

    • CLUSTER_NAME: o nome do cluster de usuário que você está excluindo.

    • CLUSTER_NAMESPACE: o namespace do cluster. Por padrão, os namespaces do cluster para os clusters do Anthos em bare metal são o nome do cluster precedido por cluster-. Por exemplo, se você nomear o cluster test, o namespace terá um nome como cluster-test.

    • ADMIN_KUBECONFIG_PATH: o caminho para o arquivo kubeconfig do cluster de administrador associado.

  2. Depois que o cluster for excluído, execute o seguinte comando para excluir o namespace:

    kubectl delete namespace CLUSTER_NAMESPACE --kubeconfig ADMIN_KUBECONFIG_PATH

Redefinir nós de cluster específicos

A redefinição de nós específicos é útil se, por exemplo, um cluster de administrador for excluído, mas os clusters de usuário gerenciados por esse cluster de administrador permanecerem. Nesse caso, não é possível excluir os clusters de usuário como um todo porque o cluster de administrador foi excluído. Assim, os nós dos clusters de usuário precisam ser redefinidos individualmente.

Redefinir nós usando a chave JSON da conta de serviço do GCR

Para redefinir nós individuais de um cluster, execute o seguinte comando:

bmctl reset nodes --addresses NODE_1_IP_ADDRESS,NODE_2_IP_ADDRESS \
    --ssh-key-private-path SSH_KEY_PATH \
    --gcr-service-account-key SERVICE_ACCOUNT_KEY_PATH \
    --login-user root

No comando, substitua as seguintes entradas por informações específicas ao ambiente:

  • NODE_1_IP_ADDRESS , NODE_2_IP_ADDRESS: lista separada por vírgulas de endereços IP de nós que você quer excluir.

  • SSH_KEY_PATH: caminho para a chave privada SSH.

  • SERVICE_ACCOUNT_KEY_PATH: caminho para o arquivo JSON que contém a chave da conta de serviço. A chave concede a permissão bmctl para extrair imagens do Google Container Registry (GCR). É possível criar uma chave da conta de serviço usando o Console do Google Cloud, a CLI gcloud, o método serviceAccounts.keys.create() ou uma das bibliotecas de cliente. Veja detalhes em Como criar e gerenciar chaves da conta de serviço. Outra maneira de criar o arquivo de chave da conta de serviço é executando o comando create config com a sinalização --create-service-accounts. Veja detalhes sobre esse comando em Criar e configurar o cluster de administrador com o bmctl.

Redefinir detalhes do cluster

A saída do comando bmctl cluster reset será semelhante a esta amostra:

bmctl reset --cluster cluster1
Creating bootstrap cluster... OK
Deleting GKE Hub member admin in project my-gcp-project...
Successfully deleted GKE Hub member admin in project my-gcp-project
Loading images... OK
Starting reset jobs...
Resetting: 1    Completed: 0    Failed: 0
...
Resetting: 0    Completed: 1    Failed: 0
Flushing logs... OK

Durante a operação de redefinição, bmctl primeiro exclui o registro de associação do GKE Hub e limpa os nós afetados. Durante a redefinição, as ativações de armazenamento e os dados do anthos-system StorageClass também são excluídos.

Para todos os nós, o bmctl executa kubeadm reset, remove as interfaces de túnel usadas para a rede de cluster e exclui os seguintes diretórios:

  • /etc/kubernetes
  • /etc/cni/net.d
  • /root/.kube
  • /var/lib/kubelet

Para os nós do balanceador de carga, bmctl também executa as seguintes ações:

  • Desativa os serviços keepalived e haproxy.
  • Exclui os arquivos de configuração de keepalived e haproxy.

O comando bmctl reset espera que o arquivo de configuração do cluster esteja no diretório de trabalho atual. Por padrão, o caminho é semelhante a este: bmctl-workspace/CLUSTER_NAME/CLUSTER_NAME.yaml

Se você usou a sinalização --workspace-dir para especificar um diretório diferente durante a criação do cluster, use a sinalização para especificar o diretório de trabalho durante a redefinição do cluster.