Quando um cluster bare metal do Anthos está em processo de instalação, os serviços binários e systemd são instalados nos nós que hospedam esse cluster e começam a detectar as portas nos 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.
Nesta página, descrevemos essa operação de limpeza de nós específicos e como excluir um cluster.
Escolher um método de exclusão
O método usado para excluir um cluster depende do seguinte:
- O tipo de cluster.
- Se você quiser limpar apenas nós específicos e não excluir todo o cluster.
- Como o cluster foi criado.
Clusters do Anthos em bare metal oferecem os seguintes métodos de exclusão:
O console do Google Cloud ou a Google Cloud CLI:
Use o console ou a CLI gcloud para excluir clusters de usuário gerenciados pela API Anthos On-Prem. Um cluster de usuário será gerenciado pela API Anthos On-Prem se uma das condições a seguir for verdadeira:
O cluster foi criado no console do Google Cloud ou usando a CLI gcloud, que configura automaticamente a API Anthos On-Prem para gerenciar o cluster.
O cluster foi criado usando
bmctl
, mas foi configurado para ser gerenciado pela API Anthos On-Prem.
bmctl
:- Use
bmctl reset nodes
para redefinir nós específicos. - Use
bmctl reset
para excluir clusters de administradores, híbridos e autônomos e clusters de usuários que não são gerenciados pela API Anthos On-Prem.
Se você usar
bmctl
para redefinir nós ou excluir um cluster, o comando 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.- Use
kubectl
:- Use
kubectl delete cluster
para excluir apenas clusters de usuário que não são gerenciados pelos clusters da API Anthos On-Prem. Não execute o comando em outros tipos de clusters. - Se você usar
kubectl delete cluster
, também precisará excluir o namespace em que o cluster está depois de excluir o cluster.
- Use
Depois de excluir um cluster, reinstale-o depois de fazer as alterações de configuração necessárias.
Excluir clusters autogerenciados
Para excluir um cluster de administrador, híbrido ou autônomo, execute o seguinte comando:
bmctl reset --cluster CLUSTER_NAME
No comando, substitua CLUSTER_NAME
pelo nome do
cluster que você quer redefinir.
A saída do comando bmctl cluster reset
será semelhante a esta amostra:
Please check the logs at bmctl-workspace/example-cluster-1/log/reset-20221025-184705/reset.log [2022-10-25 18:47:11+0000] Creating bootstrap cluster... OK [2022-10-25 18:48:18+0000] Loading images... OK [2022-10-25 18:48:18+0000] Waiting for reset jobs to finish... [2022-10-25 18:48:28+0000] Operation reset in progress: 1 Completed: 0 Failed: 0 ... [2022-10-25 18:50:08+0000] Operation reset in progress: 0 Completed: 1 Failed: 0 [2022-10-25 18:50:08+0000] Flushing logs... OK [2022-10-25 18:50:08+0000] Deleting GKE Hub member example-cluster-1 in project example-project-12345... [2022-10-25 18:50:11+0000] Successfully deleted GKE Hub member example-cluster-1 in project example-project-12345 [2022-10-25 18:50:11+0000] Deleting bootstrap cluster... OK
Depois que a exclusão do cluster for concluída, você poderá criar um novo cluster. Para detalhes, consulte a Visão geral da criação de cluster.
Excluir clusters de usuários
bmctl
É possível usar bmctl
para excluir clusters de usuários criados com
bmctl
ou kubectl
.
Execute o seguinte comando para excluir um cluster de usuário com bmctl
:
bmctl reset --cluster USER_CLUSTER_NAME --admin-kubeconfig ADMIN_KUBECONFIG_PATH
No comando, substitua as seguintes entradas por informações específicas ao ambiente:
USER_CLUSTER_NAME
: o nome do cluster de usuário que você está excluindo.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
.
A saída do comando bmctl cluster reset
será semelhante a esta amostra:
Please check the logs at bmctl-workspace/example-cluster-1/log/reset-20221025-184705/reset.log [2022-10-25 18:47:11+0000] Creating bootstrap cluster... OK [2022-10-25 18:48:18+0000] Loading images... OK [2022-10-25 18:48:18+0000] Waiting for reset jobs to finish... [2022-10-25 18:48:28+0000] Operation reset in progress: 1 Completed: 0 Failed: 0 ... [2022-10-25 18:50:08+0000] Operation reset in progress: 0 Completed: 1 Failed: 0 [2022-10-25 18:50:08+0000] Flushing logs... OK [2022-10-25 18:50:08+0000] Deleting GKE Hub member example-cluster-1 in project example-project-12345... [2022-10-25 18:50:11+0000] Successfully deleted GKE Hub member example-cluster-1 in project example-project-12345 [2022-10-25 18:50:11+0000] Deleting bootstrap cluster... OK
kubectl
É possível usar kubectl
para excluir clusters de usuários que foram criados com
bmctl
ou kubectl
. 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 USER_CLUSTER_NAME -n CLUSTER_NAMESPACE \ --kubeconfig ADMIN_KUBECONFIG_PATH
No comando, substitua as seguintes entradas por informações específicas ao ambiente:
USER_CLUSTER_NAME
: o nome do cluster de usuário que você está excluindo.USER_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 USER_CLUSTER_NAMESPACE --kubeconfig ADMIN_KUBECONFIG_PATH
Console
Se o cluster de usuário for gerenciado pela API Anthos On-Prem, siga as etapas abaixo para excluí-lo:
No console, acesse a página de clusters do Anthos.
Selecione o projeto do Cloud em que o cluster de usuário está.
Na lista de clusters, clique no cluster que você quer editar.
No painel Detalhes, se o Tipo for Anthos (Bare metal User), siga estas etapas para excluir o cluster:
No painel Detalhes, clique em Ver detalhes.
Próximo à parte superior da janela, clique em
Excluir.Quando solicitado a confirmar, clique em Excluir novamente.
Se o Tipo for externo, isso indica que o cluster foi criado usando uma ferramenta de linha de comando e que ele não é gerenciado pela API Anthos On-Prem. Nesse caso, use
bmctl
oukubectl
para excluir o cluster.
CLI da gcloud
Se o cluster de usuário for gerenciado pela API Anthos On-Prem, execute as etapas a seguir para excluir o cluster em um computador que tenha a CLI gcloud instalada:
Faça login com sua Conta do Google:
gcloud auth login
Atualize os componentes:
gcloud components update
Receba uma lista de clusters para garantir que seja especificado o nome correto do cluster no comando de exclusão:
gcloud beta container bare-metal clusters list \ --project=FLEET_HOST_PROJECT_ID \ --location=LOCATION
Substitua:
FLEET_HOST_PROJECT_ID
: o ID do projeto em que o cluster foi criado.LOCATION
: o local do Google Cloud associado ao cluster de usuário.
O resultado será assim:
NAME LOCATION VERSION ADMIN_CLUSTER STATE example-user-cluster-1a us-west1 1.13.10 example-admin-cluster-1 RUNNING
Execute o comando a seguir para excluir o cluster:
gcloud beta container bare-metal clusters delete USER_CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID \ --location=LOCATION \ --force \ --allow-missing
Substitua:
USER_CLUSTER_NAME
: o nome do cluster de usuário a ser verificado.FLEET_HOST_PROJECT_ID
: o ID do projeto em que o cluster foi criado.LOCATION
: o local do Google Cloud associado ao cluster de usuário.
A sinalização
--force
permite excluir um cluster que tenha pools de nós. Sem a sinalização--force
, é necessário excluir os pools de nós primeiro e, em seguida, excluir o cluster.A sinalização
--allow-missing
é uma sinalização padrão da API do Google. Ao incluir essa sinalização, o comando retornará que a operação foi bem-sucedida, se o cluster não for encontrado.Se o comando retornar um erro que contenha o texto
failed connecting to the cluster's control plane
, isso indica problemas de conectividade com o cluster de administrador, o agente do Connect ou no ambiente local.Se você acha que o problema de conectividade é temporário, por exemplo, por causa de problemas de rede, aguarde e execute o comando novamente.
Se a tentativa de comando continuar a falhar, consulte Como coletar registros do agente do Connect para resolver problemas com o agente.
Se você souber que o cluster de administrador foi excluído e se as máquinas de nós do administrador ou do cluster de usuário tiverem sido encerradas ou off-line, inclua a sinalização
--ignore-errors
e tente executar o comando novamente.
Para informações sobre outras sinalizações, consulte a referência da CLI gcloud.
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.
Para redefinir nós, você precisa de uma conta de serviço com acesso de leitura ao Google Container
Registry (GCR). O comando bmctl
espera que o arquivo de chave JSON dessa conta de serviço seja um argumento. 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. Essa é a chave que será usada para estabelecer conexões SSH com nós durante a redefinição.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. É possível criar uma chave de conta de serviço usando o console ou a CLI gcloud. 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.
Detalhes de exclusão do cluster
Durante a exclusão, o registro de associação à frota, as ativações de armazenamento e os dados do anthos-system StorageClass
do cluster são excluídos.
Para todos os nós, as interfaces de túnel usadas para a rede do cluster são removidas, e os seguintes diretórios são excluídos:
/etc/kubernetes
/etc/cni/net.d
/root/.kube
/var/lib/kubelet
Para nós do balanceador de carga:
- Os serviços
keepalived
ehaproxy
são excluídos. - Os arquivos de configuração de
keepalived
ehaproxy
foram excluídos.