Forzar eliminación de namespace Kubernetes en estado "Terminating"
Tres formas distintas de eliminar un namespace de Kubernetes que se queda en estado Terminating al ejecutar el comando kubectl delete namespace:
1º Forzar eliminación del namespace:
NAMESPACE=mynamespace
kubectl delete namespace $NAMESPACE --force=true --grace-period=0
2º Buscar recursos asociados al namespace para eliminarlos manualmente si queda alguno:
NAMESPACE=mynamespace
for rsType in $(kubectl api-resources --verbs=list --namespaced -o name 2>/dev/null)
do
echo Resource: $rsType;
kubectl get --show-kind --ignore-not-found -n $NAMESPACE $rsType;
done;
3º Eliminar los finalizers del namespace:
NAMESPACE=mynamespace
TEMP=$(mktemp)
kubectl get namespace $NAMESPACE -o json > $TEMP
jq 'del(.spec.finalizers[])' $TEMP
curl -H "Content-Type: application/json" -X PUT --data-binary @$TEMP http://127.0.0.1:8080/api/v1/namespaces/$NAMESPACE/finalize
wait 15
kubectl get namespaces
rm -f $TEMP
1º Forzar eliminación del namespace:
NAMESPACE=mynamespace
kubectl delete namespace $NAMESPACE --force=true --grace-period=0
2º Buscar recursos asociados al namespace para eliminarlos manualmente si queda alguno:
NAMESPACE=mynamespace
for rsType in $(kubectl api-resources --verbs=list --namespaced -o name 2>/dev/null)
do
echo Resource: $rsType;
kubectl get --show-kind --ignore-not-found -n $NAMESPACE $rsType;
done;
3º Eliminar los finalizers del namespace:
NAMESPACE=mynamespace
TEMP=$(mktemp)
kubectl get namespace $NAMESPACE -o json > $TEMP
jq 'del(.spec.finalizers[])' $TEMP
curl -H "Content-Type: application/json" -X PUT --data-binary @$TEMP http://127.0.0.1:8080/api/v1/namespaces/$NAMESPACE/finalize
wait 15
kubectl get namespaces
rm -f $TEMP
Etiquetas: Administracion, Kubernetes