¿Cómo puedo limpiar los recursos de EKS Anywhere sin eksctl cuando se produce un error durante la creación de un clúster?

5 minutos de lectura
0

Se ha producido un error durante el proceso de creación de mi clúster de Amazon Elastic Kubernetes Service (Amazon EKS) Anywhere y quiero limpiar los recursos manualmente.

Descripción corta

La creación de un clúster de Amazon EKS Anywhere podría fallar por varios motivos. Si no se completa la creación del clúster, podrían quedar recursos no deseados en el equipo. Si no puede utilizar eksctl para eliminarlos, hágalo manualmente.

Al crear un clúster de EKS Anywhere, el proceso también crea un clúster de arranque en el equipo administrador. Este clúster de arranque es un clúster de KinD (Kubernetes in Docker) y facilita la creación del clúster de EKS Anywhere. Para limpiar este clúster de KinD, detenga los contenedores de KinD y elimine sus imágenes. Este flujo de trabajo limpia correctamente los recursos que utilizan Docker como proveedor. Para los demás proveedores, deberá realizar pasos adicionales con relación al plano de control y los nodos en las máquinas virtuales (VM).

Resolución

Limpieza de los recursos del equipo administrador (para Docker)

Para limpiar los recursos que se queden en el equipo administrador, utilice el siguiente script en todos los casos de uso. Si utiliza Docker como proveedor, con este paso eliminará correctamente todos los recursos no deseados que queden tras la creación fallida del clúster.

Dado que el comando kind delete cluster requiere que se instale KinD, este script no lo utiliza. En su lugar, EKS Anywhere utiliza binarios de KInD de contenedores temporales para configurar clústeres:

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: Sustituya YOUR_CLUSTER_NAME por el nombre de su clúster de EKS Anywhere.

Pasos para Bare Metal, Nutanix, CloudStack y vSphere

EKS Anywhere utiliza la API de clúster de Kubernetes para aprovisionar los componentes del clúster de Kubernetes. Si se crea alguna VM durante el proceso de creación y se produce un error durante la creación, deberá limpiar las VM manualmente.

Puede crear y administrar clústeres de EKS Anywhere con un clúster de administración independiente o sin él. Los clústeres de Bare Metal no son compatibles con un clúster de administración independiente. Si utiliza clústeres de Bare Metal, consulte la sección Clúster sin clúster de administración.

Para limpiar las VM, siga los pasos pertinentes según la configuración del clúster:

Clústeres sin clúster de administración

En el caso de los clústeres sin un clúster de administración independiente, apague todos los nodos de trabajo, las VM de etcd y el servidor de API, y elimínelos.

Nota: Las VM asociadas a clústeres de Nutanix, CloudStack y vSphere suelen tener nombres predefinidos según el nombre del clúster.

En el caso de los clústeres de Bare Metal, apague los equipos de destino y elimínelos.

Clústeres con clúster de administración

Si utiliza un clúster de administración, otro clúster independiente supervisará el estado del clúster de carga de trabajo. Si se apaga y se detiene un equipo que forma parte del clúster de carga de trabajo, el clúster de administración detectará un problema con el estado. A continuación, el clúster pondrá en marcha una nueva máquina virtual para que el clúster de carga de trabajo vuelva al estado deseado.

Por lo tanto, para limpiar los clústeres con clústeres de administración independientes, elimine del clúster de administración los recursos personalizados (CRD) que representen el clúster de carga de trabajo. Esto eliminará todas las VM de ese clúster de carga de trabajo en concreto.

Nota: En los siguientes comandos, sustituya WORKLOAD_CLUSTER_NAME por el clúster de carga de trabajo que desee eliminar.
Sustituya MANAGEMENT_CLUSTER_FOLDER por la carpeta creada por EKS Anywhere para el clúster de administración.
Sustituya MANAGEMENT_CLUSTER_KUBECONFIG_FILE por el archivo kubeconfig generado por el servicio para el clúster de administración. El archivo kubeconfig se encuentra en MANAGEMENT_CLUSTER_FOLDER.

Elimine el recurso API del clúster de carga de trabajo:

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

Elimine el recurso clusters.anywhere.eks.amazonaws.com del clúster, si existe:

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

Nota: Si se produce un error durante la creación del clúster antes de aprovisionar el recurso clusters.anywhere.eks.amazonaws.com, se mostrará este mensaje de error:

«Error del servidor (no encontrado): No se ha encontrado clusters.anywhere.eks.amazonaws.com "WORKLOAD_CLUSTER_NAME"»

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace un año