当namespace在Kubernetes中无法完全删除时

命名空间不会消失。

在使用Sock-Shop时,遇到了故障问题,因此删除了整个命名空间时,以下错误信息被输出!

:~$ ks delete -f complete-demo.yaml
Warning: deleting cluster-scoped resources, not scoped to the provided namespace
namespace "sock-shop" deleted

一旦删除后再也没有显示,无奈只能中断,进入以下的状态。

~/sock-shop/microservices-demo/deploy/kubernetes$ kubectl get ns
NAME                 STATUS        AGE
default              Active        38d
kube-node-lease      Active        38d
kube-public          Active        38d
kube-system          Active        38d
prometheus           Active        124m
sock-shop            Terminating   93m
system-upgrade       Active        38d

「monitoring」と「sock-shop」仍然处于终止状态。
如果不删除它们,就无法创建新的相同命名空间。

删除的方法

可以考虑两种删除方法。

    1. 专注地等待终止。

 

    调整Kubernetes配置。

修改Kubernetes配置。

参考https://www.redhat.com/sysadmin/troubleshooting-terminating-namespaces并进行操作!

将需要删除的namespace写入json文件中的命令。

$ kubectl get namespace ${NAMESPACE} -o json > tmp.json

在编辑器中编辑tmp.json文件,并删除finalizer数组中的kubernetes。

$ vi tmp.json

在后续操作中以后台方式执行,打开对Kubernetes API服务器的代理,以便执行curl命令。

$ kubectl proxy &

为了引起反应,请执行以下命令。

$ curl -k -H "Content-Type: application/json" -X PUT --data-binary @tmp.json http://127.0.0.1:8001/api/v1/namespaces/${NAMESPACE}/finalize
bannerAds