kubernetes
在删除namespace
时,或多或少出现过删除后一直处于Terminating
状态,这时又该如何删除呢?
本文介绍各种手段删除处于Terminating
状态的namespace
。
一般删除
kubectl delete namespace NAMESPACENAME
强制删除
kubectl delete namespace NAMESPACENAME --force --grace-period=0
删除finalizers
修改
namespace
配置,删除红色框中内容
kubectl edit namespace NAMESPACE_NAME
调用接口删除
也有可能,上述方法中没有看到
finalizers
,这时可以通过调用接口的方式删除
- 第一步:将namespace内容导出到tmp.json文件中:
kubectl get namespace NAMESPACE_NAME -o json > tmp.json
- 第二步:修改tmp.json内容,删除json中以下内容:
{
//删除spec整个内容
"spec": {
"finalizers": [
"kubernetes"
]
},
"status": {
"phase": "Terminating"
}
}
- 第三步:开启k8s接口代理,新开一个窗口,执行
[root@k8s-master ~]# kubectl proxy
Starting to serve on 127.0.0.1:8001
- 第四步:调用接口删除
Namespace
,注意URL中修改成要删除的NAMESPACE_NAME
curl -k -H "Content-Type: application/json" -X PUT --data-binary @tmp.json http://127.0.0.1:8001/api/v1/namespaces/NAMESPACE_NAME/finalize