Amazon Elastic Kubernetes Service(Amazon EKS) Anywhere 클러스터가 생성 프로세스에 실패했습니다. eksctl을 사용할 수 없어서 리소스를 수동으로 정리하고 싶습니다.
간략한 설명
EKS Anywhere 클러스터 생성 시, 프로세스는 관리 컴퓨터에 부트스트랩 클러스터도 생성합니다. 이 부트스트랩 클러스터는 EKS Anywhere 클러스터를 쉽게 생성할 수 있는 Kubernetes in Docker(KinD) 클러스터입니다. 이 KinD 클러스터를 정리하려면 KinD 컨테이너를 중지하고 KinD 컨테이너 이미지를 제거하세요.
다른 공급자의 경우, 컨트롤 플레인 및 노드의 가상 머신에서 추가 단계를 완료해야 합니다.
해결 방법
Docker용 관리 머신에서 리소스 정리
실패한 클러스터 생성에서 원치 않는 리소스를 모두 정리하려면 모든 사용 사례에 대해 다음 스크립트를 사용하세요.
kind delete cluster 명령에는 KinD 설치가 필요하므로, 이 스크립트에서는 해당 명령을 사용하지 않습니다. 대신 EKS Anywhere는 임시 컨테이너의 KinD 바이너리를 사용하여 다음과 같이 클러스터를 설정합니다.
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
참고:****YOUR_CLUSTER_NAME을 EKS Anywhere 클러스터 이름으로 바꿉니다.
베어 메탈, Nutanix, CloudStack 및 vSphere용 VM의 리소스 정리
생성 프로세스 중에 생성된 VM이 하나라도 생성에 실패하면 이러한 VM을 수동으로 정리해야 합니다.
별도의 관리 클러스터를 사용하여 EKS Anywhere 클러스터를 생성하고 관리하는 경우 다음 관리 클러스터가 있는 클러스터 섹션을 참고하세요. EKS Anywhere 클러스터가 별도의 관리 클러스터를 지원하지 않는 경우 다음 관리 클러스터가 없는 클러스터 섹션을 참고하세요.
관리 클러스터 없는 클러스터
별도의 관리 클러스터가 없는 클러스터의 경우, 전원을 끄고 모든 워커 노드, etcd VM 및 API 서버를 삭제합니다.
참고: 클러스터 이름은 일반적으로 Nutanix, CloudStack 및 vSphere 클러스터와 연결된 VM의 이름에 접두사로 포함됩니다.
베어 메탈 클러스터의 경우, 전원을 끄고 대상 컴퓨터를 삭제합니다.
관리 클러스터가 있는 클러스터
관리 클러스터를 사용하는 경우, 별도의 클러스터가 워크로드 클러스터의 상태를 모니터링합니다. 워크로드 클러스터의 일부인 컴퓨터의 전원이 꺼지고 종료되면 관리 클러스터가 상태 문제를 감지합니다. 그런 다음, 클러스터는 새 가상 머신을 스핀업하여 워크로드 클러스터를 원하는 상태로 되돌립니다.
따라서 별도의 관리 클러스터를 사용하여 클러스터를 정리하려면 워크로드 클러스터를 나타내는 사용자 지정 리소스(CRD)를 삭제합니다. 이렇게 하면 워크로드 클러스터의 모든 VM이 삭제됩니다.
참고: 다음 명령에서 WORKLOAD_CLUSTER_NAME을 워크로드 클러스터의 이름으로 바꿉니다. MANAGEMENT_CLUSTER_FOLDER를 EKS Anywhere 관리 폴더로 바꿉니다. MANAGEMENT_CLUSTER_KUBECONFIG_FILE를 관리 클러스터의 kubeconfig 파일로 바꿉니다. kubeconfig 파일은 MANAGEMENT_CLUSTER_FOLDER에 있습니다.
워크로드 클러스터에 대한 클러스터 API 리소스 삭제:
kubectl delete clusters.cluster.x-k8s.io -n eksa-system WORKLOAD_CLUSTER_NAME --kubeconfig MANAGEMENT_CLUSTER_FOLDER/MANAGEMENT_CLUSTER_KUBECONFIG_FILE
clusters.anywhere.eks.amazonaws.com 리소스가 프로비저닝되기 전에 클러스터 생성에 실패하면 다음 오류가 발생합니다.
kubectl delete clusters.anywhere.eks.amazonaws.com WORKLOAD_CLUSTER_NAME --kubeconfig MANAGEMENT_CLUSTER_FOLDER/MANAGEMENT_CLUSTER_KUBECONFIG_FILE
참고: clusters.anywhere.eks.amazonaws.com 리소스를 프로비저닝하기 전에 해당 클러스터 생성이 실패하는 경우, 다음과 같은 오류가 표시됩니다.
"Error from server (NotFound): clusters.anywhere.eks.amazonaws.com "WORKLOAD_CLUSTER_NAME" not found"