叢集建立失敗時,如何在沒有 eksctl 的情況下清理 EKS Anywhere 資源?

2 分的閱讀內容
0

我的 Amazon Elastic Kubernetes Service (Amazon EKS) Anywhere 叢集無法建立處理程序。我想要手動清理我的資源,因為我無法使用 eksctl。

簡短說明

您建立 EKS Anywhere 叢集時,處理程序也會在管理機器上建立引導叢集。此引導叢集是 Docker (KinD) 叢集中的 Kubernetes,可協助建立 EKS Anywhere 叢集。若要清理 KinD 叢集,請停止 KinD 容器並移除 KinD 容器映像檔。

如果是其他提供者,您必須在控制平面和節點的虛擬機器 (VM) 上完成其他步驟。

解決方法

針對 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,清理虛擬機器上的資源

如果在建立處理程序期間建立了任何虛擬機器且建立失敗,則您必須手動清理這些虛擬機器。

如果您使用個別管理叢集來建立和管理 EKS Anywhere 叢集,則請參閱下列含管理叢集的叢集區段。如果 EKS Anywhere 叢集不支援個別管理叢集,則請參閱下列不含管理叢集的叢集區段。

不含管理叢集的叢集

針對不含個別管理叢集的叢集,關閉並刪除所有工作節點、etcd 虛擬機器和 API 伺服器。

**注意事項:**叢集名稱一般會作為字首併入與 Nutanix、CloudStack 和 vSphere 叢集相關聯的虛擬機器名稱中。

針對裸機叢集,關閉電源並刪除目標電腦。

含管理叢集的叢集

使用管理叢集時,個別的叢集會監控工作負載叢集的狀態。如果屬於工作負載叢集的機器關閉電源並終止,則管理叢集會偵測到運作狀態問題。然後,叢集會啟動新的虛擬機器,讓工作負載叢集恢復到所需的狀態。

因此,若要清理含個別管理叢集的叢集,則請刪除代表工作負載叢集的自訂資源 (CRD)。這樣即會刪除工作負載叢集的所有虛擬機器。

**注意事項:**在下列命令中,將 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"

AWS 官方
AWS 官方已更新 5 個月前