Durante a instalação de um cluster do Google Distributed Cloud, 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.
Nesta página, descrevemos essa operação de limpeza de nós específicos e como excluir um cluster.
Esta página é destinada a administradores, arquitetos e operadores que gerenciam o ciclo de vida da infraestrutura de tecnologia subjacente. Para saber mais sobre papéis comuns e tarefas de exemplo referenciados no conteúdo do Google Cloud , consulte Tarefas e funções de usuário comuns do GKE.
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 Google Distributed Cloud oferece os seguintes métodos de exclusão:
O console 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 é gerenciado pela API GKE On-Prem quando uma destas condições é verdadeira:
O cluster foi criado no console 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 nodespara redefinir nós específicos. Use
bmctl resetpara 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
bmctlpara 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.yamlSe você usou a sinalização
--workspace-dirpara 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 clusterpara 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 este 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 em 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 de um cluster de administrador:
gcloud container bare-metal admin-clusters unenroll CLUSTER_NAME \
--project=FLEET_HOST_PROJECT_ID \
--location=REGION \
--ignore-errors
Troque o seguinte:
FLEET_HOST_PROJECT_ID: o ID do projeto da frota da qual o cluster de administrador era membro.REGION: a Google Cloud região em que a API GKE On-Prem armazena metadados do cluster.
A flag --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ários que foram criados com
bmctl ou kubectl e que não estão registrados na API GKE On-Prem.
Execute este 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 arquivokubeconfigdo cluster de administrador associado. Obmctlé compatível com o uso de--kubeconfigcomo um alias para a flag--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 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 depois 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_PATHNo 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 do Google Distributed Cloud são o nome do cluster que incluicluster-. Por exemplo, se você nomear o clustertest, o namespace terá um nome comocluster-test.ADMIN_KUBECONFIG_PATH: o caminho para o arquivokubeconfigdo 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 as etapas abaixo para excluí-lo:
No console, acesse a página Visão geral dos clusters do Google Kubernetes Engine.
Selecione o projeto Google Cloud em que o cluster de usuário está.
Na lista de clusters, clique no cluster que você quer editar.
Na lista de clusters, clique no cluster que você quer editar. Se o Tipo for externo, isso indica que o cluster foi criado usando
bmctle não foi registrado na API GKE On-Prem. Nesse caso, siga as etapas na guiabmctloukubectlpara excluir o cluster.Se o ícone na coluna Status indicar um problema, siga as etapas na guia da CLI gcloud para excluir o cluster. Você vai precisar adicionar a flag
--ignore-errorsao comando de exclusão.Clique no nome da programação que você quer excluir.
No painel Details, perto da parte de cima da janela, clique em Delete.
Quando sua confirmação for solicitada, insira o nome do cluster e clique em Remover.
gcloud CLI
Se o cluster de usuário for gerenciado pela API GKE 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 container bare-metal clusters list \ --project=FLEET_HOST_PROJECT_ID \ --location=LOCATION
Troque o seguinte:
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.33.100-gke.89 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
Troque o seguinte:
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
--forcepermite 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-errorse tente executar o comando novamente.Também será necessário incluir
--ignore-errorsse o cluster tiver sido excluído usandobmctloukubectl, deixando os recursos da API GKE On-Prem em Google Cloud. Um sintoma é que o cluster continua a ser exibido na página Clusters do GKE no console em um estado não íntegro.
Para informações sobre outras flags, consulte a referência da gcloud CLI.
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 Artifact Registry. 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ãobmctlpara extrair imagens do Artifact 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 configcom 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
keepalivedehaproxysão excluídos. - Os arquivos de configuração de
keepalivedehaproxyforam excluídos.