Como limpar os recursos do EKS Anywhere sem o eksctl quando a criação do cluster falha?
Meu cluster do Amazon Elastic Kubernetes Service (Amazon EKS) Anywhere falhou no processo de criação e eu quero limpar meus recursos manualmente.
Breve descrição
Quando você tenta criar um cluster do Amazon EKS Anywhere, a criação do cluster pode falhar por vários motivos. Uma criação de cluster inacabada pode manter alguns recursos indesejados em sua máquina. Se você não puder usar o eksctl para remover esses recursos, poderá removê-los manualmente.
Quando você cria um cluster do EKS Anywhere, o processo também cria um cluster de bootstrap na máquina administrativa. Esse cluster de bootstrap é um cluster do Kubernetes in Docker (KinD) e facilita a criação do cluster do EKS Anywhere. Para limpar esse cluster do KinD, interrompa os contêineres do KinD e remova as imagens do contêiner do KinD. Esse fluxo de trabalho limpa com êxito os recursos que usam o Docker como provedor. Para outros provedores, você deve concluir etapas adicionais nas máquinas virtuais (VMs) do plano de controle e dos nós.
Resolução
Limpe os recursos na máquina administrativa (para o Docker)
Para limpar os recursos que permanecem na máquina administrativa, use o script a seguir para todos os casos de uso. Se você usar o Docker como seu provedor, essa etapa removerá com êxito todos os recursos indesejados que restaram da falha na criação do cluster.
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 do 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.
Etapas para Bare Metal, Nutanix, CloudStack e vSphere
O EKS Anywhere usa a API Kubernetes Cluster para provisionar os componentes do cluster do Kubernetes. Se alguma VM for criada durante o processo de criação e a criação falhar, você deverá limpar essas VMs manualmente.
Você pode criar e gerenciar clusters do EKS Anywhere com um cluster de gerenciamento separado ou sem um cluster de gerenciamento. Os clusters bare metal não oferecem suporte a um cluster de gerenciamento separado. Se você usa clusters Bare Metal, consulte a seção Cluster sem cluster de gerenciamento.
Para limpar suas VMs, siga as etapas relevantes, dependendo da configuração do cluster:
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: as VMs associadas aos clusters Nutanix, CloudStack e vSphere geralmente têm seus nomes prefixados com o nome do cluster.
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 carga de trabalho for desligada e encerrada, o cluster de gerenciamento detectará um problema de integridade. Em seguida, o cluster ativa uma nova máquina virtual para trazer o cluster de carga de trabalho de volta ao estado desejado.
Portanto, para limpar clusters com clusters de gerenciamento separados, exclua os Recursos Personalizados (CRDs) que representam o cluster de carga de trabalho do cluster de gerenciamento. Isso exclui todas as VMs do cluster de carga de trabalho específico.
Observação: nos comandos a seguir, substitua WORKLOAD_CLUSTER_NAME pelo cluster da carga de trabalho que você deseja excluir.
Substitua MANAGEMENT_CLUSTER_FOLDER pela pasta que o EKS Anywhere criou para o cluster de gerenciamento.
Substitua MANAGEMENT_CLUSTER_KUBECONFIG_FILE pelo arquivo kubeconfig gerado pelo serviço para o cluster de gerenciamento. O arquivo kubeconfig está na MANAGEMENT_CLUSTER_FOLDER.
Exclua o recurso da API de cluster do cluster de carga de trabalho:
kubectl delete clusters.cluster.x-k8s.io -n eksa-system WORKLOAD_CLUSTER_NAME --kubeconfig MANAGEMENT_CLUSTER_FOLDER/MANAGEMENT_CLUSTER_KUBECONFIG_FILE
Exclua o recurso clusters.anywhere.eks.amazonaws.com do cluster, se ele existir:
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"
Conteúdo relevante
- AWS OFICIALAtualizada há 2 anos
- AWS OFICIALAtualizada há 2 anos
- AWS OFICIALAtualizada há um ano
- AWS OFICIALAtualizada há um ano