Wie bereinige ich EKS-Anywhere-Ressourcen ohne eksctl, wenn die Clustererstellung fehlschlägt?

Lesedauer: 3 Minute
0

Der Erstellungsprozess meines Amazon Elastic Kubernetes Service (Amazon EKS) Anywhere-Clusters ist fehlgeschlagen. Ich möchte meine Ressourcen manuell bereinigen, da ich eksctl nicht verwenden kann.

Kurzbeschreibung

Wenn Sie einen EKS-Anywhere-Cluster erstellen, erstellt der Prozess auch einen Bootstrap-Cluster auf dem administrativen Computer. Dieser Bootstrap-Cluster ist ein Kubernetes-in-Docker-(KiND)-Cluster und erleichtert die Erstellung des EKS-Anywhere-Clusters. Um diesen KiND-Cluster zu bereinigen, stoppen Sie die KiND-Container und entfernen Sie die KiND-Container-Images.

Bei anderen Anbietern müssen Sie zusätzliche Schritte auf den virtuellen Maschinen (VMs) für die Steuerebene und die Knoten ausführen.

Lösung

Ressourcen auf dem administrativen Computer bereinigen für Docker

Verwenden Sie das folgende Skript für alle Anwendungsfälle, um alle unerwünschten Ressourcen aus der fehlgeschlagenen Clustererstellung zu entfernen.

Da für den Befehl kind delete cluster eine KinD-Installation erforderlich ist, verwendet dieses Skript den Befehl nicht. Stattdessen verwendet EKS Anywhere KiNd-Binärdateien aus temporären Containern, um Cluster einzurichten:

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

Hinweis: Ersetzen Sie YOUR_CLUSTER_NAME durch Ihren EKS-Anywhere-Clusternamen.

Bereinigen Sie die Ressourcen auf der VM für eine Bare-Metal-Instance, Nutanix, CloudStack und vSphere

Wenn während des Erstellungsprozesses virtuelle Maschinen erstellt werden und die Erstellung fehlschlägt, müssen Sie diese VMs manuell bereinigen.

Wenn Sie einen separaten Verwaltungscluster verwenden, um EKS Anywhere-Cluster zu erstellen und zu verwalten, lesen Sie den folgenden Abschnitt Cluster mit einem Verwaltungscluster. Wenn Ihr EKS Anywhere-Cluster keinen separaten Verwaltungscluster unterstützt, lesen Sie den folgenden Abschnitt Cluster ohne Verwaltungscluster.

Cluster ohne Verwaltungscluster

Schalten Sie bei Clustern ohne separaten Management-Cluster alle Worker-Knoten, etcd-VMs usw. und den API-Server aus und löschen Sie sie.

Hinweis: Der Clustername ist üblicherweise als Präfix in Namen für VMs enthalten, die Nutanix-, CloudStack- und vSphere-Clustern zugeordnet sind.

Schalten Sie bei Bare-Metal-Clustern die Zielmaschine aus und löschen Sie sie.

Cluster mit einem Verwaltungscluster

Wenn Sie einen Management-Cluster verwenden, überwacht ein separater Cluster den Status Ihres Workload-Clusters. Wenn eine Maschine, die Teil des Workload-Clusters ist, ausgeschaltet und beendet wird, erkennt der Verwaltungscluster ein Integritätsproblem. Anschließend startet der Cluster eine neue virtuelle Maschine, um den Workload-Cluster wieder in den gewünschten Zustand zu bringen.

Um Cluster mit separaten Verwaltungsclustern zu bereinigen, löschen Sie daher die benutzerdefinierten Ressourcen (CRDs), die den Workload-Cluster darstellen, aus dem Verwaltungscluster. Dadurch werden alle VMs für den Workload-Cluster gelöscht.

**Hinweis:**Ersetzen Sie in den folgenden Befehlen WORKLOAD\ _CLUSTER\ _NAME durch den Namen Ihres Workload-Clusters. Ersetzen Sie MANAGEMENT\ _CLUSTER\ _FOLDER durch Ihren EKS Anywhere-Verwaltungsordner. Ersetzen Sie MANAGEMENT\ _CLUSTER\ _KUBECONFIG\ _FILE durch die kubeconfig-Datei Ihres Verwaltungsclusters. Die kubeconfig-Datei befindet sich im MANAGEMENT_CLUSTER_FOLDER.

Löschen Sie die Cluster-API-Ressource für den Workload-Cluster:

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

Wenn die Ressourcen vorhanden sind, löschen Sie die Ressource clusters.anywhere.eks.amazonaws.com für den Cluster:

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

Hinweis: Wenn die Clustererstellung fehlgeschlagen ist, bevor die Ressource clusters.anywhere.eks.amazonaws.com bereitgestellt wurde, wird die folgende Fehlermeldung angezeigt:

"Error from server (NotFound): clusters.anywhere.eks.amazonaws.com "WORKLOAD_CLUSTER_NAME" not found"

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 6 Monaten