J'ai essayé de supprimer un espace de noms dans mon cluster Amazon Elastic Kubernetes Service (Amazon EKS). Toutefois, l'espace de noms est bloqué dans l'état « En cours de résiliation ».
Brève description
Pour supprimer un espace de noms, Kubernetes doit d'abord supprimer toutes les ressources qu'il contient. Il doit ensuite vérifier l'état des services d'API enregistrés. Un espace de noms reste bloqué dans l'état En cours de résiliation pour les raisons suivantes :
- L'espace de noms contient des ressources que Kubernetes ne peut pas supprimer.
- Le statut d'un service d'API est Faux.
Résolution
1. Enregistrez un fichier JSON comme dans l'exemple suivant :
kubectl get namespace TERMINATING_NAMESPACE -o json > tempfile.json
Remarque : Remplacez TERMINATING_NAMESPACE par le nom de votre espace de noms bloqué.
2. Supprimez le bloc de tableau des finalisateurs de la section des spécifications du fichier JSON :
"spec": {
"finalizers": [
"kubernetes"
]
}
Une fois que vous avez supprimé le bloc de tableau des finalisateurs, la section des spécifications du fichier JSON ressemble à ceci :
"spec" : {
}
3. Pour appliquer les modifications, exécutez la commande suivante :
kubectl replace --raw "/api/v1/namespaces/TERMINATING_NAMESPACE/finalize" -f ./tempfile.json
Remarque : Remplacez TERMINATING_NAMESPACE par le nom de votre espace de noms bloqué.
4. Vérifiez que l'espace de noms en cours de résiliation a été supprimé :
kubectl get namespaces
Répétez ces étapes pour tous les espaces de noms restants dont l'état est En cours de résiliation.
Informations connexes
Qu’est-ce qu’Amazon EKS ?
Espaces de noms (sur le site Kubernetes)