Quando um cluster do GKE em Bare Metal está em processo de instalação, os serviços binários e systemd são instalados nos nós que hospedam esse cluster, e os serviços 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.
O GKE em Bare Metal oferece 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 GKE On-Prem. Um cluster de usuário será gerenciado pela API GKE On-Prem se uma das seguintes condições for verdadeira:
O cluster foi criado no console do Google Cloud ou usando a CLI gcloud, que configura automaticamente a API GKE On-Prem para gerenciar o cluster.
O cluster foi criado usando
bmctl
, mas foi configurado para ser gerenciado pela API GKE On-Prem.
bmctl
:- Use
bmctl reset nodes
para redefinir nós específicos. Use
bmctl reset
para excluir os seguintes tipos de cluster:- Clusters de administração, híbridos e independentes (conhecidos como clusters autogerenciados). Isso inclui clusters de administrador gerenciados pela API GKE On-Prem.
- Clusters de usuário que não são gerenciados pela API GKE 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 GKE 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
Além de excluir o cluster, o comando exclui a associação do cluster da frota.
Para clusters de administrador gerenciados pela API GKE On-Prem, você também precisa excluir os recursos da API no Google Cloud. Caso contrário, o cluster será exibido na página Clusters do GKE no console do Google Cloud. Use o comando a seguir para excluir os recursos da API GKE On-Prem para um cluster de administrador:
gcloud container bare-metal admin-clusters unenroll CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID \ --location=REGION \ --ignore-errors
Substitua:
FLEET_HOST_PROJECT_ID
: o ID do projeto da frota em que o cluster de administrador era membro.REGION
: a região do Google Cloud em que a API GKE On-Prem armazena metadados do cluster.
Uma sinalização --ignore-errors
garante que o cancelamento do registro de um recurso de cluster de administrador bare metal seja bem-sucedido, mesmo que ocorram erros durante o cancelamento.
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
Se o cluster de usuário for gerenciado pela API GKE On-Prem, exclua o
cluster usando o console ou a CLI gcloud.
Caso contrário, use bmctl
ou kubectl
para excluir o cluster.
bmctl
É possível usar bmctl
para excluir clusters de usuário que foram criados com
bmctl
ou kubectl
e que não estão registrados na API GKE On-Prem.
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ário que foram criados com
bmctl
ou kubectl
e que não estão registrados na API GKE On-Prem. 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 USER_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 o GKE 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 GKE On-Prem, siga estas etapas para excluí-lo:
No console, acesse a página de visão geral dos clusters do Google Kubernetes Engine.
Selecione o projeto do Cloud em que o cluster de usuário está.
Na lista de clusters, clique no cluster que você quer editar.
Na lista de clusters, localize aquele que você quer excluir. Se o Tipo for externo, isso indica que o cluster foi criado usando
bmctl
e não foi registrado na API GKE On-Prem. Nesse caso, siga as etapas na guiabmctl
oukubectl
para excluir o cluster.Se o ícone na coluna Status indicar um problema, siga as etapas na guia da CLI gcloud para excluir o cluster. É necessário adicionar a sinalização
--ignore-errors
ao comando de exclusão.Clique no nome da programação que você quer excluir.
No painel Detalhes, perto da parte de cima da janela, clique em
Excluir.Quando solicitado a confirmar, insira o nome do cluster e clique em Remover.
CLI da gcloud
Se o cluster de usuário for gerenciado pela API GKE On-Prem, siga as etapas a seguir para excluí-lo em um computador que tenha a gcloud CLI 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 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.15.11 example-admin-cluster-1 RUNNING
Execute o comando a seguir para excluir o cluster:
gcloud 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. Para resolver problemas com o agente do Connect, confira Como coletar registros do agente do Connect.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 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.Também será necessário incluir
--ignore-errors
se o cluster foi excluído usandobmctl
oukubectl
, o que deixa os recursos da API GKE On-Prem no Google Cloud. Um sintoma disso é que o cluster ainda é exibido na página Clusters do GKE no console em um estado não íntegro.
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.