Como limpar os recursos do EKS Anywhere sem o eksctl quando a criação do cluster falha?

4 minuto de leitura
0

Meu cluster do Amazon Elastic Kubernetes Service (Amazon EKS) Anywhere falhou no processo de criação. Quero limpar manualmente meus recursos porque não posso usar o eksctl.

Breve descrição

Quando você cria um cluster do EKS Anywhere, o processo também cria um cluster de bootstrap na máquina administrativa. Esse cluster de inicialização é um cluster Kubernetes no Docker (KinD) que facilita a criação do cluster do EKS Anywhere. Para limpar o cluster do KinD, pare os contêineres do KinD e remova as imagens do contêiner do KinD.

Para outros provedores, você deve concluir etapas adicionais nas máquinas virtuais (VMs) do plano de controle e dos nós.

Resolução

Limpar os recursos na máquina administrativa para o Docker

Para limpar todos os recursos indesejados da criação de cluster com falha, use o seguinte script para todos os casos de uso.

Como o comando kind delete cluster requer a instalação do KinD, esse script não usa o comando. Em vez disso, o EKS Anywhere usa binários KinD de contêineres temporários para configurar clusters:

EKSA_CLUSTER_NAME="YOUR_CLUSTER_NAME"
# Clean up KIND Cluster Containers  
kind_container_ids=$(docker ps -a | grep "${EKSA_CLUSTER_NAME}" | awk -F ' ' '{print $1}')  
for container_id in $kind_container_ids; do echo "deleting container with id ${container_id}"; docker rm -f ${container_id}; done

# Clean up EKS-A tools Containers  
tools_container_ids=$(docker ps -a | grep "public.ecr.aws/eks-anywhere/cli-tools" | awk -F ' ' '{print $1}')  
for container_id in $tools_container_ids; do echo "deleting container with id ${container_id}"; docker rm -f ${container_id}; done  

# Delete All EKS-Anywhere Images  
image_ids=$(docker image ls | grep "public.ecr.aws/eks-anywhere/" | awk -F ' ' '{print $3}')  
for image_id in $image_ids; do echo "deleting image with id ${image_id}"; docker image rm ${image_id}; done

# Delete Auto-generated Cluster Folder  
rm $EKSA_CLUSTER_NAME -rf

Observação: substitua YOUR_CLUSTER_NAME pelo nome do cluster do EKS Anywhere.

Limpar recursos na VM para Bare Metal, Nutanix, CloudStack e vSphere

Se alguma VM for criada durante o processo de criação e a criação falhar, você deverá limpar manualmente as VMs.

Se você usar um cluster de gerenciamento separado para criar e gerenciar clusters do EKS Anywhere, consulte a seguinte seção Clusters com um cluster de gerenciamento. Se o cluster do EKS Anywhere não for compatível com um cluster de gerenciamento separado, consulte a seguinte seção Clusters sem um cluster de gerenciamento.

Clusters sem um cluster de gerenciamento

Para clusters sem um cluster de gerenciamento separado, desligue e exclua todos os nós de processamento, as VMs etcd e o servidor da API.

Observação: o nome do cluster é comumente incluído como um prefixo nos nomes das VMs associadas aos clusters do Nutanix, CloudStack e vSphere.

Para clusters bare metal, desligue e exclua as máquinas de destino.

Clusters com um cluster de gerenciamento

Quando você usa um cluster de gerenciamento, um cluster separado monitora o estado do seu cluster de carga de trabalho. Se uma máquina que faz parte do cluster de workload for desligada e encerrada, o cluster de gerenciamento detectará um problema de integridade. Em seguida, o cluster gira uma nova máquina virtual para trazer o cluster de workload de volta ao estado desejado.

Portanto, para limpar os clusters com clusters de gerenciamento separados, exclua os recursos personalizados (CRDs) que representam o cluster da workload. Isso exclui todas as VMs do cluster da workload.

Observação: nos comandos a seguir, substitua WORKLOAD_CLUSTER_NAME pelo nome do seu cluster de workload. Substitua MANAGEMENT_CLUSTER_FOLDER por sua pasta de gerenciamento do EKS Anywhere. Substitua MANAGEMENT_CLUSTER_KUBECONFIG_FILE pelo arquivo kubeconfig do seu cluster de gerenciamento. O arquivo kubeconfig está na MANAGEMENT_CLUSTER_FOLDER.

Exclua o recurso da API de cluster do cluster da workload:

kubectl delete clusters.cluster.x-k8s.io -n eksa-system WORKLOAD_CLUSTER_NAME --kubeconfig MANAGEMENT_CLUSTER_FOLDER/MANAGEMENT_CLUSTER_KUBECONFIG_FILE

Se os recursos existirem, exclua o recurso clusters.anywhere.eks.amazonaws.com do cluster:

kubectl delete clusters.anywhere.eks.amazonaws.com WORKLOAD_CLUSTER_NAME --kubeconfig MANAGEMENT_CLUSTER_FOLDER/MANAGEMENT_CLUSTER_KUBECONFIG_FILE

Observação: se a criação do cluster falhar antes do provisionamento do recurso clusters.anywhere.eks.amazonaws.com, você receberá o seguinte erro:

"Erro do servidor (NotFound): clusters.anywhere.eks.amazonaws.com "WORKLOAD_CLUSTER_NAME" não encontrado"

AWS OFICIAL
AWS OFICIALAtualizada há 7 meses