Quando um cluster do Google Distributed Cloud está em processo de instalação, os ficheiros binários e os serviços systemd são instalados nos nós que alojam esse cluster, e os serviços começam a monitorizar as portas nos nós.
No entanto, se uma instalação de cluster falhar, todos estes ficheiros binários e serviços têm de ser eliminados. Por outras palavras, os nós têm de ser repostos ou limpos para os preparar para uma nova tentativa de instalação do cluster. Se os nós não forem repostos desta forma, a próxima tentativa de instalar um cluster neles falha.
Esta página descreve como fazer esta operação de limpeza de nós específicos e como eliminar um cluster.
Esta página destina-se a administradores, arquitetos e operadores que gerem o ciclo de vida da infraestrutura tecnológica subjacente. Para saber mais sobre as funções comuns e as tarefas de exemplo a que fazemos referência no Google Cloud conteúdo, consulte o artigo Funções e tarefas comuns do utilizador do GKE.
Escolha um método de eliminação
O método que usa para eliminar um cluster depende do seguinte:
- O tipo de cluster.
- Se quiser limpar apenas nós específicos e não eliminar todo o cluster.
- Como o cluster foi criado.
O Google Distributed Cloud oferece os seguintes métodos de eliminação:
A Google Cloud consola ou a CLI do Google Cloud:
Use a consola ou a CLI gcloud para eliminar clusters de utilizadores geridos pela API GKE On-Prem. Um cluster de utilizadores é gerido pela API GKE On-Prem se uma das seguintes condições for verdadeira:
O cluster foi criado na Google Cloud consola ou através da CLI gcloud, que configura automaticamente a API GKE On-Prem para gerir o cluster.
O cluster foi criado com o
bmctl
, mas foi configurado para ser gerido pela API GKE On-Prem.
bmctl
:- Use
bmctl reset nodes
para repor nós específicos. Use
bmctl reset
para eliminar os seguintes tipos de clusters:- Clusters de administrador, híbridos e autónomos (denominados clusters autogeridos). Isto inclui clusters de administrador geridos pela API GKE On-Prem.
- Clusters de utilizadores que não são geridos pela API GKE On-Prem.
Se usar
bmctl
para repor nós ou eliminar um cluster, o comando espera que o ficheiro de configuração do cluster esteja no diretório de trabalho atual. Por predefinição, o caminho é semelhante ao seguinte:bmctl-workspace/CLUSTER_NAME/CLUSTER_NAME.yaml
Se usou a flag
--workspace-dir
para especificar um diretório diferente durante a criação do cluster, tem de usar a flag para especificar o diretório de trabalho durante a reposição do cluster.- Use
kubectl
:- Use
kubectl delete cluster
para eliminar apenas clusters de utilizadores que não sejam geridos pelos clusters da API GKE On-Prem. Não execute o comando noutros tipos de clusters. - Tenha em atenção que, se usar o
kubectl delete cluster
, também tem de eliminar o espaço de nomes em que o cluster se encontra depois de eliminar o cluster.
- Use
Depois de eliminar um cluster, pode reinstalá-lo após fazer as alterações de configuração necessárias.
Elimine clusters autogeridos
Para eliminar 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 quer repor.
A saída do comando bmctl cluster reset
tem um aspeto 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 eliminar o cluster, o comando elimina a associação do cluster à frota.
Para clusters de administrador geridos pela API GKE On-Prem, também tem de eliminar os recursos da API em Google Cloud. Caso contrário, o cluster é apresentado na página Clusters do GKE na consola Google Cloud . Use o seguinte comando para eliminar 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 o seguinte:
FLEET_HOST_PROJECT_ID
: O ID do projeto da frota na qual o cluster de administrador era membro.REGION
: A Google Cloud região na qual a API GKE On-Prem armazena metadados de clusters.
A flag --ignore-errors
garante que a anulação da inscrição de um recurso de cluster de administrador bare metal é bem-sucedida, mesmo que ocorram erros durante a anulação da inscrição.
Após a conclusão da eliminação do cluster, pode criar um novo cluster. Para mais detalhes, consulte o artigo Vista geral da criação de clusters.
Elimine clusters de utilizadores
Se o cluster de utilizadores for gerido pela API GKE On-Prem, elimine o cluster através da consola ou da CLI gcloud. Caso contrário, use bmctl
ou kubectl
para eliminar o cluster.
bmctl
Pode usar bmctl
para eliminar clusters de utilizadores que foram criados com bmctl
ou kubectl
e que não estão inscritos na API GKE On-Prem.
Execute o seguinte comando para eliminar um cluster de utilizadores com bmctl
:
bmctl reset --cluster USER_CLUSTER_NAME --admin-kubeconfig ADMIN_KUBECONFIG_PATH
No comando, substitua as seguintes entradas por informações específicas do seu ambiente:
USER_CLUSTER_NAME
: o nome do cluster de utilizadores que está a eliminar.ADMIN_KUBECONFIG_PATH
: o caminho para o ficheirokubeconfig
do cluster de administrador associado. Obmctl
suporta a utilização de--kubeconfig
como um alias para a flag--admin-kubeconfig
.
A saída do comando bmctl cluster reset
tem um aspeto 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
Pode usar kubectl
para eliminar clusters de utilizadores que foram criados com bmctl
ou kubectl
e que não estão inscritos na API GKE On-Prem. Para usar
kubectl
para eliminar um cluster de utilizadores, primeiro tem de eliminar o objeto de cluster e, em seguida, o respetivo espaço de nomes. Caso contrário, não é possível criar as tarefas para repor as máquinas e o processo de eliminação pode ficar bloqueado indefinidamente.
Para eliminar um grupo de utilizadores com kubectl
:
Execute o seguinte comando para eliminar o objeto de 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 do seu ambiente:
USER_CLUSTER_NAME
: o nome do cluster de utilizadores que está a eliminar.USER_CLUSTER_NAMESPACE
: o espaço de nomes do cluster. Por predefinição, os espaços de nomes do cluster para o Google Distributed Cloud são o nome do cluster precedido decluster-
. Por exemplo, se der o nometest
ao seu cluster, o espaço de nomes tem um nome comocluster-test
.ADMIN_KUBECONFIG_PATH
: o caminho para o ficheirokubeconfig
do cluster de administrador associado.
Depois de o cluster ser eliminado com êxito, execute o seguinte comando para eliminar o espaço de nomes:
kubectl delete namespace USER_CLUSTER_NAMESPACE --kubeconfig ADMIN_KUBECONFIG_PATH
Consola
Se o cluster de utilizadores for gerido pela API GKE On-Prem, siga os passos abaixo para eliminar o cluster:
Na consola, aceda à página Vista geral dos clusters do Google Kubernetes Engine.
Selecione o Google Cloud projeto no qual o cluster de utilizadores se encontra.
Na lista de clusters, clique no cluster que quer eliminar.
Na lista de clusters, localize o cluster que quer eliminar. Se o Tipo for externo, isto indica que o cluster foi criado através do
bmctl
e não foi inscrito na API GKE On-Prem. Neste caso, siga os passos no separadorbmctl
oukubectl
para eliminar o cluster.Se o ícone na coluna Estado indicar um problema, siga os passos no separador da CLI gcloud para eliminar o cluster. Tem de adicionar o sinalizador
--ignore-errors
ao comando de eliminação.Clique no nome do cluster que quer eliminar.
No painel Detalhes, perto da parte superior da janela, clique em
Eliminar.Quando lhe for pedido que confirme, introduza o nome do cluster e clique em Remover.
CLI gcloud
Se o cluster de utilizadores for gerido pela API GKE On-Prem, siga os passos abaixo para eliminar o cluster num computador que tenha a CLI gcloud instalada:
Inicie sessão com a sua Conta Google:
gcloud auth login
Atualize os componentes:
gcloud components update
Aceda a uma lista de clusters para ajudar a garantir que especifica o nome do cluster correto no comando de eliminação:
gcloud container bare-metal clusters list \ --project=FLEET_HOST_PROJECT_ID \ --location=LOCATION
Substitua o seguinte:
FLEET_HOST_PROJECT_ID
: o ID do projeto no qual o cluster foi criado.LOCATION
: a localização Google Cloud associada ao cluster de utilizadores.
O resultado é semelhante ao seguinte:
NAME LOCATION VERSION ADMIN_CLUSTER STATE example-user-cluster-1a us-west1 1.33.100-gke.89 example-admin-cluster-1 RUNNING
Execute o seguinte comando para eliminar o cluster:
gcloud container bare-metal clusters delete USER_CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID \ --location=LOCATION \ --force \ --allow-missing
Substitua o seguinte:
USER_CLUSTER_NAME
: o nome do cluster de utilizadores a eliminar.FLEET_HOST_PROJECT_ID
: o ID do projeto no qual o cluster foi criado.LOCATION
: a localização Google Cloud associada ao cluster de utilizadores.
A flag
--force
permite-lhe eliminar um cluster com node pools. Sem a flag--force
, tem de eliminar os conjuntos de nós primeiro e, em seguida, eliminar o cluster.A flag
--allow-missing
é uma flag da API Google padrão. Quando inclui esta flag, o comando devolve êxito se o cluster não for encontrado.Se o comando devolver um erro que contenha o texto
failed connecting to the cluster's control plane
, isto indica problemas de conetividade com o cluster de administrador, o agente Connect ou o ambiente no local. Para resolver problemas com o agente de ligação, consulte o artigo Recolher registos do agente de ligação.Se considerar que o problema de conetividade é transitório, por exemplo, devido a problemas de rede, aguarde e tente novamente o comando.
Se souber que o cluster de administrador foi eliminado ou se as máquinas dos nós do cluster de administrador ou de utilizador foram encerradas ou colocadas offline, inclua a flag
--ignore-errors
e tente novamente o comando.Também tem de incluir
--ignore-errors
se o cluster tiver sido eliminado através dobmctl
ou dokubectl
, o que deixa recursos da API GKE On-Prem em Google Cloud. Um sintoma disto é que o cluster continua a ser apresentado na página Clusters do GKE na consola num estado não saudável.
Para obter informações sobre outras flags, consulte a referência da CLI gcloud.
Reponha nós de cluster específicos
Pode querer repor nós específicos de um cluster se, por exemplo, um cluster de administrador tiver sido eliminado, mas os clusters de utilizadores geridos por esse cluster de administrador permanecerem. Neste caso, não é possível eliminar os clusters de utilizadores como um todo porque o cluster de administrador foi eliminado. Consequentemente, os nós dos clusters de utilizadores têm de ser repostos individualmente.
Para repor nós, precisa de uma conta de serviço com acesso de leitura ao Artifact Registry. O comando
bmctl
espera o ficheiro de chave JSON para esta conta de serviço como um argumento. Para repor 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 do seu ambiente:
NODE_1_IP_ADDRESS , NODE_2_IP_ADDRESS
: lista separada por vírgulas de endereços IP dos nós que quer eliminar.SSH_KEY_PATH
: caminho para a chave privada de SSH. Esta é a chave que vai ser usada para estabelecer ligações SSH com os nós durante a reposição.SERVICE_ACCOUNT_KEY_PATH
: caminho para o ficheiro JSON que contém a chave da conta de serviço. Esta chave concede autorização aobmctl
para obter imagens do Artifact Registry. Pode criar uma chave de conta de serviço através da consola ou da CLI gcloud. Para ver detalhes, consulte o artigo Criar e gerir chaves de contas de serviço. O ficheiro de chave da conta de serviço também pode ser criado se executar o comandocreate config
com a flag--create-service-accounts
. Para ver detalhes sobre esse comando, consulte o artigo Crie e administre uma configuração de cluster com o bmctl.
Detalhes da eliminação de clusters
Durante a eliminação, o registo de associação da frota do cluster, as montagens de armazenamento e os dados do anthos-system StorageClass
são eliminados.
Para todos os nós, as interfaces de túnel usadas para a rede de clusters são removidas e os seguintes diretórios são eliminados:
/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 eliminados. - Os ficheiros de configuração de
keepalived
ehaproxy
são eliminados.