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

Lesedauer: 4 Minute
0

Der Erstellungsprozess meines Amazon-Elastic-Kubernetes-Service-(Amazon EKS)-Anywhere-Clusters ist fehlgeschlagen und ich möchte meine Ressourcen manuell bereinigen.

Kurzbeschreibung

Wenn Sie versuchen, einen Amazon-EKS-Anywhere-Cluster zu erstellen, schlägt die Clustererstellung möglicherweise aus verschiedenen Gründen fehl. Eine unvollendete Cluster-Erstellung kann dazu führen, dass einige unerwünschte Ressourcen auf Ihrem Computer verbleiben. Wenn Sie eksctl nicht verwenden können, um diese Ressourcen zu entfernen, können Sie sie manuell entfernen.

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. Dieser Workflow bereinigt erfolgreich Ressourcen, die Docker als Anbieter verwenden. 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 für alle Anwendungsfälle das folgende Skript, um Ressourcen zu bereinigen, die auf dem administrativen Computer verbleiben. Wenn Sie Docker als Ihren Anbieter verwenden, entfernt dieser Schritt erfolgreich alle unerwünschten Ressourcen, die von der fehlgeschlagenen Clustererstellung übrig geblieben sind.

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.

Schritte für Bare Metal, Nutanix, CloudStack und vSphere

EKS Anywhere verwendet die Kubernetes-Cluster-API, um die Komponenten des Kubernetes-Clusters bereitzustellen. Wenn während des Erstellungsprozesses virtuelle Maschinen erstellt werden und die Erstellung fehlschlägt, müssen Sie diese VMs manuell bereinigen.

Sie können EKS-Anywhere-Cluster entweder mit einem separaten Management-Cluster oder ohne Management-Cluster erstellen und verwalten. Bare-Metal-Cluster unterstützen keinen separaten Management-Cluster. Wenn Sie Bare-Metal-Cluster verwenden, finden Sie weitere Informationen im Abschnitt Cluster ohne Management-Cluster.

Um Ihre VMs zu bereinigen, befolgen Sie je nach Cluster-Setup die entsprechenden Schritte:

Cluster ohne Management-Cluster

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: VMs, die mit Nutanix-, CloudStack- und vSphere-Clustern verknüpft sind, haben in der Regel das Präfix des Clusternamens.

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

Cluster mit einem Management-Cluster

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 Management-Clustern zu bereinigen, löschen Sie daher die benutzerdefinierten Ressourcen (CRDs), die den Workload-Cluster darstellen, aus dem Management-Cluster. Hierdurch werden alle VMs für den jeweiligen Workload-Cluster gelöscht.

Hinweis: Ersetzen Sie in den folgenden Befehlen WORKLOAD_CLUSTER_NAME durch den Workload-Cluster, den Sie löschen möchten.
Ersetzen Sie MANAGEMENT_CLUSTER_FOLDER durch den Ordner, den EKS Anywhere für den Management-Cluster erstellt hat.
Ersetzen Sie MANAGEMENT_CLUSTER_KUBECONFIG_FILE durch die kubeconfig-Datei, die der Dienst für den Management-Cluster generiert hat. 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

Löschen Sie die Ressource clusters.anywhere.eks.amazonaws.com für den Cluster, falls vorhanden:

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:

„Fehler vom Server (NotFound): clusters.anywhere.eks.amazonaws.com „WORKLOAD_CLUSTER_NAME“ nicht gefunden“

AWS OFFICIAL
AWS OFFICIALAktualisiert vor einem Jahr