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 arquivokubeconfig
do cluster de administrador associado. Obmctl
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
:
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 porcluster-
. Por exemplo, se você nomear o clustertest
, o namespace terá um nome comocluster-test
.ADMIN_KUBECONFIG_PATH
: o caminho para o arquivokubeconfig
do cluster de administrador associado.
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-private-key-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ãobmctl
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étodoserviceAccounts.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 comandocreate 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
ehaproxy
. - Exclui os arquivos de configuração de
keepalived
ehaproxy
.
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.