Pourquoi ne puis-je pas supprimer les ressources de mon cluster Amazon EKS ?
Je n'arrive pas à supprimer une ressource de mon cluster Amazon Elastic Kubernetes Service (Amazon EKS).
Résolution
Remarque : Si des erreurs surviennent lorsque vous exécutez des commandes de l'interface de la ligne de commande AWS (AWS CLI), consultez la section Résoudre des erreurs liées à l’AWS CLI. Vérifiez également que vous utilisez bien la version la plus récente de l’AWS CLI.
Effectuez les actions de dépannage suivantes en fonction de la ressource Amazon EKS bloquée à l’état En cours de résiliation. Les finalisateurs alertent les contrôleurs pour qu'ils suppriment des ressources et empêchent toute suppression accidentelle. Si votre ressource est bloquée à l’état En cours de résiliation, vous devez en supprimer les finalisateurs avant de la supprimer. Pour plus d'informations sur les finalisateurs, consultez la page Finalisateurs sur le site Web de Kubernetes.
Résoudre les problèmes liés à la suppression des espaces de noms
Pour vérifier si certaines ressources de l'espace de noms sont bloquées à l'état En cours de résiliation, exécutez la commande suivante :
kubectl get all -n namespace-name | grep Terminating
Remarque : Remplacez namespace-name par l'espace de noms.
Pour supprimer manuellement la ressource, exécutez la commande suivante :
kubectl delete resource resource-name -n namespace-name
Remarque : Remplacez resource par le type de ressource, resource-name par le nom de la ressource et namespace-name par l'espace de noms.
Pour vérifier la présence d'erreurs dans le finalisateur ou le service d'API, exécutez la commande suivante :
kubectl get ns namespace-name -o json
Remarque : Remplacez namespace-name par l'espace de noms.
Si vous recevez des erreurs dans la sortie de commande, consultez la section Comment résoudre les problèmes liés aux espaces de noms à l’état résilié dans mon cluster Amazon EKS ?
Résoudre les problèmes de suppression d’entrée
Supprimez les équilibreurs de charge ou les groupes cibles associés à la ressource d'entrée.
Pour supprimer les finalisateurs d'une ressource d'entrée, exécutez la commande suivante :
kubectl patch ingress ingress-name -n namespace-name -p '{"metadata":{"finalizers":[]}}' --type=merge
Remarque : Remplacez ingress-name par le nom d'entrée et namespace-name par l'espace de noms.
Puis, exécutez la commande suivante pour supprimer la ressource d'entrée :
kubectl delete ingress ingress-name -n namespace-name
Remarque : Remplacez ingress-name par le nom d'entrée et namespace-name par l'espace de noms.
Résoudre les problèmes de suppression de service
Pour supprimer les finalisateurs de la ressource de service, exécutez la commande suivante :
kubectl patch svc service-name -n namespace-name -p '{"metadata":{"finalizers":[]}}' --type=merge
Remarque : Remplacez service-name par le nom de votre service et namespace-name par l'espace de noms.
Utilisez la console Amazon EC2 pour désactiver la protection contre la suppression sur l'équilibreur de charge associé au service. Vous pouvez également utiliser l'annotation service.beta.kubernetes.io/aws-load-balancer-attributes pour désactiver la protection contre la suppression. Pour plus d'informations, consultez la page Attributs de ressource sur le site Web de Kubernetes.
Puis, exécutez la commande suivante pour supprimer le service :
kubectl delete svc service-name -n namespace-name
Remarque : Remplacez service-name par le nom de votre service et namespace-name par l'espace de noms.
Résoudre les problèmes de suppression de PV et de PVC
Si vous ne parvenez pas à supprimer le PersistentVolume (PV) ou le PersistentVolumeClaim (PVC), recherchez les problèmes suivants :
- Vérifier si vous avez supprimé le PV avant de retirer le PVC lié
- Vérifier si vous avez retiré le PVC alors qu'un pod était encore exécuté et attaché à ce dernier
Vous avez supprimé le PV
Pour résoudre ce problème, supprimez le PVC lié au PV.
Pour identifier le PVC associé au PV bloqué à l'état En cours de résiliation, exécutez la commande suivante pour décrire le PV :
kubectl get pv pv-name
Remarque : Remplacez pv-name par le nom du PV. La commande affiche le nom et l'espace de noms du PVC au format NAMESPACE/PVC_NAME.
Exemple de sortie :
default/ebs-claim
Pour supprimer le PVC, exécutez la commande suivante :
kubectl delete pvc -n namespace-name pvc-name
Remarque : Remplacez namespace-name par l'espace de noms du PVC et pvc-name par le nom du PVC.
Si vous ne parvenez toujours pas à supprimer le PV, exécutez la commande suivante pour supprimer ses finalisateurs :
kubectl patch pv -p '{"metadata":{"finalizers":null}}' pv-name
Remarque : Remplacez pv-name par le nom du PV.
Vous avez retiré le PVC
Pour résoudre ce problème, supprimez le pod qui est attaché au PVC.
Pour identifier les pods associés au PVC, exécutez la commande suivante pour décrire le PVC :
kubectl describe pvc -n namespace-name pvc-name
Remarque : Remplacez namespace-name par l'espace de noms du PVC et pvc-name par le nom du PVC. Dans la sortie, cochez l'attribut Utilisé par.
Exemple de sortie :
Name: ebs-claim Namespace: default StorageClass: ebs-sc Status: Bound Volume: pvc-3402cc47-c4d7-42c3-8965-f9e1e08f8b95 Labels: <none> Annotations: pv.kubernetes.io/bind-completed: yes pv.kubernetes.io/bound-by-controller: yes volume.beta.kubernetes.io/storage-provisioner: ebs.csi.aws.com volume.kubernetes.io/selected-node: ip-192-168-33-43.ec2.internal volume.kubernetes.io/storage-provisioner: ebs.csi.aws.com Finalizers: [kubernetes.io/pvc-protection] Capacity: 4Gi Access Modes: RWO VolumeMode: Filesystem Used By: ebs-app-59c74d8d45-z65kj Events: <none>
Dans l'exemple précédent, le pod ebs-app-59c74d8d45-z65kj utilise le PVC.
Pour supprimer le pod, exécutez la commande suivante :
kubectl delete pod -n namespace-name pod-name
Remarque : Remplacez namespace-name par l'espace de noms du PVC et pod-name par le nom du pod.
Si vous ne parvenez toujours pas à supprimer le PVC, exécutez la commande suivante pour supprimer ses finalisateurs :
kubectl patch pvc -p '{"metadata":{"finalizers":null}}' -n namespace-name pvc-name
Remarque : Remplacez namespace-name par l'espace de noms du PVC et pvc-name par le nom du PVC.
Résoudre les problèmes de suppression de pod
Si vous ne parvenez pas à supprimer le pod, recherchez les problèmes suivants :
- Vérifiez si le pod ne répond pas aux signaux de terminaison
- Vérifiez si le pod est associé à un finalisateur qui n'est pas terminé
Le pod ne répond pas aux signaux de terminaison
Important : La résolution suivante supprime immédiatement le pod sans vérifier que vous avez arrêté le pod en cours d'exécution. Assurez-vous que le pod n’est pas en cours d’exécution. Sinon, le pod risque de s’exécuter indéfiniment sur le cluster.
Les pods sont généralement supprimés après la période de grâce par défaut de 30 secondes. Si votre pod n'est pas supprimé au bout de 30 secondes, exécutez la commande suivante pour forcer la suppression du pod :
kubectl delete pod --force --grace-period=0 -n namespace-name pod-name
Remarque : Remplacez namespace-name par l'espace de noms du pod et pod-name par le nom du pod. Vous devez définir l'indicateur --grace-period sur 0 pour supprimer immédiatement le pod.
Le pod est associé à un finalisateur qui n'est pas terminé
Pour vérifier si le pod inclut des finalisateurs, exécutez la commande suivante :
kubectl get pod -o yaml -n namespace-name pod-name
Remarque : Remplacez namespace-name par l'espace de noms du pod et pod-name par le nom du pod. Dans la sortie, vérifiez metadata.finalizers pour identifier les finalisateurs.
Exemple de sortie :
apiVersion: v1 kind: Pod metadata: creationTimestamp: "2024-09-16T19:32:01Z" finalizers: - kubernetes labels: app: nginx pod-template-hash: 7c79c4bf97 namespace: default spec: containers: - image: nginx:latest imagePullPolicy: Always name: nginx ports: - containerPort: 80 protocol: TCP
Pour supprimer les finalisateurs, exécutez la commande suivante :
kubectl patch pod -p '{"metadata":{"finalizers":null}}' -n namespace-name pod-name
Remarque : Remplacez namespace-name par l'espace de noms du pod et pod-name par le nom du pod.
Résoudre les problèmes de suppression de cluster
En règle générale, les problèmes de suppression du cluster se produisent parce que des groupes de nœuds gérés sont attachés au cluster. Pour résoudre ce problème, supprimez les groupes de nœuds gérés. Pour plus d'informations, consultez la section Pourquoi ne puis-je pas supprimer mon cluster Amazon EKS ?
Si un scraper géré est associé à un cluster, vous pouvez également rencontrer des problèmes de suppression. Dans ce scénario, vous ne pouvez pas supprimer le réseau privé virtuel (VPC) ou l'interface réseau Elastic utilisés par le scraper.
Pour identifier l'ID du scraper, exécutez la commande list-scrapers suivante de l'AWS CLI :
aws amp list-scrapers
Puis, exécutez la commande delete-scraper pour supprimer le scraper :
aws amp delete-scraper --scraper-id scraper-example
Remarque : Remplacez scraper-example par l'ID du scraper.
Résoudre les problèmes de suppression de groupes de nœuds gérés par Amazon EKS
Si vous ne parvenez pas à supprimer le groupe de nœuds gérés, vérifiez l’existence des problèmes suivants :
- Vérifiez si la ressource comprend un objet dépendant
- Vérifiez si le processus Résilier du groupe Auto Scaling Amazon EC2 est suspendu
- Vérifier si votre groupe de nœuds présente des erreurs d’état
- Vérifier si les pods sont bloqués dans les nœuds
La ressource comprend un objet dépendant
Le problème de dépendance se produit lorsqu'une ressource créée par le groupe de nœuds géré est associée à une autre ressource du compte AWS. Généralement, la ressource est un groupe de sécurité. Pour résoudre ce problème, identifiez les objets associés au groupe de sécurité. Puis, dissociez le groupe de sécurité de la ressource. Si vous rencontrez des problèmes, consultez la section Pourquoi ne puis-je pas supprimer un groupe de sécurité associé à mon Amazon VPC ?
Le processus de résiliation du groupe Auto Scaling EC2 est suspendu
Pour résoudre ce problème, redémarrez le processus de résiliation.
Votre groupe de nœuds présente des erreurs d’état
Pour plus d'informations sur les types d'erreurs d'état qui peuvent survenir dans votre groupe de nœuds gérés, consultez la section Problème.
Pour résoudre les problèmes de santé, consultez la section Comment résoudre les erreurs de groupe de nœuds gérés dans un cluster Amazon EKS ?
Les pods sont bloqués dans les nœuds
Lorsque vous supprimez le groupe de nœuds gérés, le message d'erreur suivant peut s'afficher :
« 1 pods are unevictable from node ip-192-168-29-140.ec2.internal » (1 pods ne peuvent pas être évincés du nœud ip-192-168-29-140.ec2.internal)
Ce problème peut se produire si un pod du cluster est bloqué à l'état En cours de résiliation. Pour résoudre ce problème, obtenez un accès via kubectl au cluster, puis exécutez la commande suivante :
kubectl get pod -A
L’erreur Impossible d’évincer les pods peut se produire parce que vous avez mal configuré le PodDisruptionBudget ou le nombre de perturbations disponibles est insuffisant pour permettre l'éviction du pod. Pour résoudre ce problème, consultez la section Comment résoudre les problèmes de mise à jour des groupes de nœuds gérés pour Amazon EKS ?
- Sujets
- Containers
- Langue
- Français

Contenus pertinents
demandé il y a 3 ans
- Réponse acceptée
demandé il y a 2 ans
demandé il y a 3 ans
AWS OFFICIELA mis à jour il y a 4 ans
AWS OFFICIELA mis à jour il y a 3 ans