Une minute
Forcer l’effacement d’un namespace Kubernetes
Introduction
Parfois lorsqu’on tente d’effacer un namespace, il ne s’efface pas vraiment et reste dans l’état terminated.
Si vous essayez d’exécuter la commande kubectl delete ns mon_namespace
et que vous recevez un message comme ci-dessous, ce tutoriel est fait pour vous:
Error from server (Conflict): Operation cannot be fulfilled on namespaces "mon_namespace": The system is ensuring all content is removed from this namespace. Upon completion, this namespace will automatically be purged by the system.
Steps
1. Exporter le contenu du namespace au format json
kubectl get namespace mon_namespace -o json > mon_namespace.json
2. Ouvrir le fichier mon_namespace.json
et retirer kubernetes
des finalizers
3. Appelez l’API de votre cluster et mettez à jour votre namespace
- Option 1
Puis exécuter la commande.kubectl cluster-info
Si vous n’avez pas l’erreur suivante, votre namespace va s’effacer.curl -k -H "Content-Type: application/json" -X PUT --data-binary @/tmp/mon_namespace.json http(s)://[IP]:[PORT]/api/v1/namespaces/[NAMESPACE]/finalize
Si vous recevez le message précédent, suivez les instructions de l’option 2.namespaces "mon_namespace" is forbidden: User "system:anonymous" cannot update namespaces/finalize in the namespace "mon_namespace"
- Option 2
Puis exécuter la commande:kubectl proxy
curl -k -H "Content-Type: application/json" -X PUT --data-binary @/tmp/mon_namespace.json http://127.0.0.1:8001/api/v1/namespaces/[NAMESPACE]/finalize
4. Final check
kubectl get namespaces
Et voilà.