Comment nettoyer les ressources EKS Anywhere sans eksctl lorsque la création du cluster échoue ?

Lecture de 4 minute(s)
0

Le processus de création de mon cluster Amazon Elastic Kubernetes Service (Amazon EKS) Anywhere a échoué. Je souhaite nettoyer manuellement mes ressources car je ne peux pas utiliser eksctl.

Brève description

Lorsque vous créez un cluster EKS Anywhere, le processus crée également un cluster d’amorçage sur la machine administrative. Ce cluster bootstrap est un cluster Kubernetes in Docker (KinD) qui facilite la création du cluster EKS Anywhere. Pour nettoyer le cluster KinD, arrêtez les conteneurs KinD et supprimez les images des conteneurs KinD.

Pour les autres fournisseurs, vous devez effectuer des étapes supplémentaires sur les machines virtuelles (VM) pour le plan de contrôle et les nœuds.

Résolution

Nettoyer les ressources de la machine administrative pour Docker

Pour nettoyer toutes les ressources indésirables résultant de l’échec de la création du cluster, utilisez le script suivant pour tous les cas d’utilisation.

Comme la commande kind delete cluster nécessite l’installation de KinD, ce script n’utilise pas la commande. EKS Anywhere utilise plutôt des fichiers binaires KinD provenant de conteneurs temporaires pour configurer des clusters :

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

Remarque : Remplacez YOUR_CLUSTER_NAME par le nom de votre cluster EKS Anywhere.

Nettoyez les ressources de la machine virtuelle pour Bare Metal, Nutanix, CloudStack et vSphere

Si des machines virtuelles sont créées pendant le processus de création et que la création échoue, vous devez les nettoyer manuellement.

Si vous utilisez un cluster de gestion distinct pour créer et gérer des clusters EKS Anywhere, consultez la section Clusters with a management cluster (Clusters dotés d’un cluster de gestion). Si votre cluster EKS Anywhere ne prend pas en charge un cluster de gestion distinct, consultez la section Clusters with a management cluster (Clusters dotés d’un cluster de gestion).

Clusters without a management cluster (Clusters sans cluster de gestion)

Pour les clusters sans cluster de gestion distinct, mettez hors tension et supprimez tous les nœuds de travail, etc., les machines virtuelles et le serveur d’API.

Remarque : le nom du cluster est généralement inclus en tant que préfixe dans les noms des machines virtuelles associées aux clusters Nutanix, CloudStack et vSphere.

Pour les clusters Bare Metal, éteignez et supprimez les machines cibles.

Clusters with a management cluster (Clusters dotés d’un cluster de gestion)

Lorsque vous utilisez un cluster de gestion, un cluster distinct surveille l’état de votre cluster de charge de travail. Si une machine faisant partie du cluster de charge de travail s’éteint et s’arrête, le cluster de gestion détecte un problème de santé. Ensuite, le cluster fait tourner une nouvelle machine virtuelle pour ramener le cluster de charge de travail à l’état souhaité.

Par conséquent, pour nettoyer les clusters dotés de clusters de gestion distincts, supprimez les ressources personnalisées (CRD) qui représentent le cluster de charge de travail. Cela supprime toutes les machines virtuelles du cluster de charge de travail.

Remarque : dans les commandes suivantes, remplacez WORKLOAD_CLUSTER_NAME par le nom de votre cluster de charge de travail. Remplacez MANAGEMENT_CLUSTER_FOLDER par votre dossier de gestion EKS Anywhere. Remplacez MANAGEMENT_CLUSTER_KUBECONFIG_FILE par le fichier kubeconfig de votre cluster de gestion. Le fichier kubeconfig se trouve dans le MANAGEMENT_CLUSTER_FOLDER.

Supprimez la ressource API Cluster pour le cluster de charge de travail :

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

Si les ressources existent, supprimez la ressource clusters.anywhere.eks.amazonaws.com pour le cluster :

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

Remarque : Si la création du cluster a échoué avant le provisionnement de la ressource clusters.anywhere.eks.amazonaws.com, l’erreur suivante s’affiche :

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

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a 6 mois