Come faccio a ripulire le risorse di EKS Anywhere senza eksctl quando la creazione del cluster fallisce?

4 minuti di lettura
0

Il mio cluster Amazon Elastic Kubernetes Service (Amazon EKS) Anywhere non è riuscito nel processo di creazione e desidero ripulire manualmente le mie risorse.

Breve descrizione

Quando provi a creare un cluster Amazon EKS Anywhere, la creazione del cluster potrebbe non riuscire per vari motivi. Una creazione di cluster incompleta potrebbe mantenere alcune risorse indesiderate sul computer. Se non puoi usare eksctl per rimuovere queste risorse, puoi rimuoverle manualmente.

Quando si crea un cluster EKS Anywhere, il processo crea anche un cluster bootstrap sul computer amministrativo. Questo cluster bootstrap è un cluster Kubernetes in Docker (KIND) e facilita la creazione del cluster EKS Anywhere. Per ripulire questo cluster KinD, ferma i container KinD e rimuovi le immagini dei container KinD. Questo flusso di lavoro pulisce correttamente le risorse che utilizzano Docker come provider. Per gli altri provider, è necessario completare passaggi aggiuntivi sulle macchine virtuali (VM) per il piano di controllo (control plane) e i nodi.

Risoluzione

Pulisci le risorse sul computer amministrativo (per Docker)

Per ripulire le risorse che rimangono sul computer amministrativo, usa il seguente script per tutti i casi d'uso. Se utilizzi Docker come provider, questo passaggio rimuove correttamente tutte le risorse indesiderate che rimangono dalla creazione fallita del cluster.

Poiché il comando kind delete cluster richiede l'installazione di KinD, questo script non utilizza il comando. Invece, EKS Anywhere utilizza i binari KinD da contenitori temporanei per configurare i cluster:

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

Nota: sostituisci YOUR_CLUSTER_NAME con il nome del tuo cluster EKS Anywhere.

Passaggi per Bare Metal, Nutanix, CloudStack e vSphere

EKS Anywhere utilizza l'API Kubernetes Cluster per fornire i componenti del cluster Kubernetes. Se durante il processo di creazione vengono create delle macchine virtuali e la creazione fallisce, è necessario ripulirle manualmente.

È possibile creare e gestire i cluster EKS Anywhere con un cluster di gestione separato o senza un cluster di gestione. I cluster bare metal non supportano un cluster di gestione separato. Se utilizzi cluster Bare metal, consulta la sezione Cluster senza cluster di gestione.

Per ripulire le tue macchine virtuali, segui i passaggi pertinenti a seconda della configurazione del cluster:

Cluster senza un cluster di gestione

Per i cluster senza un cluster di gestione separato, spegni ed elimina tutti i nodi di lavoro, le macchine virtuali ecc. e il server API.

Nota: Le VM associate ai cluster Nutanix, CloudStack e vSphere di solito hanno il prefisso del nome del cluster.

Per i cluster Bare metal, spegni ed elimina i computer bersaglio.

Cluster con un cluster di gestione

Quando utilizzi un cluster di gestione, un cluster separato monitora lo stato del cluster di carico di lavoro. Se una macchina che fa parte del cluster del carico di lavoro si spegne e si interrompe, il cluster di gestione rileva un problema di integrità. Quindi, il cluster avvia una nuova macchina virtuale per riportare il cluster di carico di lavoro allo stato desiderato.

Pertanto, per ripulire i cluster con cluster di gestione separati, elimina le risorse personalizzate (CRD) che rappresentano il cluster di carico di lavoro dal cluster di gestione. In questo modo vengono eliminate tutte le macchine virtuali per il particolare cluster di carico di lavoro.

Nota: nei seguenti comandi, sostituisci WORKLOAD_CLUSTER_NAME con il cluster di carico di lavoro che desideri eliminare.
Sostituisci MANAGEMENT_CLUSTER_FOLDER con la cartella creata da EKS Anywhere per il cluster di gestione.
Sostituisci MANAGEMENT_CLUSTER_KUBECONFIG_FILE con il file kubeconfig generato dal servizio per il cluster di gestione. Il file kubeconfig si trova in MANAGEMENT_CLUSTER_FOLDER.

Elimina la risorsa API Cluster per il cluster di carico di lavoro:

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

Elimina la risorsa clusters.anywhere.eks.amazonaws.com per il cluster, se esiste:

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

Nota: se la creazione del cluster non è riuscita prima del provisioning della risorsa clusters.anywhere.eks.amazonaws.com, viene visualizzato il seguente errore:

"Errore dal server (NotFound): clusters.anywhere.eks.amazonaws.com "WORKLOAD_CLUSTER_NAME" non trovato"

AWS UFFICIALE
AWS UFFICIALEAggiornata 10 mesi fa