删除处于Terminating状态的namespace

时间:2022-07-23
本文章向大家介绍删除处于Terminating状态的namespace,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

查看ns状态

1 2 3 4 5 6 7

# kubectl get ns NAME STATUS AGE default Active 48d kube-node-lease Active 48d kube-public Active 48d kube-system Active 48d monitoring Terminating 61m

可以看到monitoring这个namespace一直处于Terminating状态,一般情况下强删是删不掉的,强删的方法如下:

1

kubectl delete ns monitoring --force --grace-period=0

如果删不掉,就参考下面的方法

获取namespace的json文件

1

kubectl get ns monitoring -o json > /tmp/monitoring.json

查看monitoring.json的内容

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23

{ "apiVersion": "v1", "kind": "Namespace", "metadata": { "annotations": { "kubectl.kubernetes.io/last-applied-configuration": "{"apiVersion":"v1","kind":"Namespace","metadata":{"annotations":{},"name":"monitoring"}}n" }, "creationTimestamp": "2020-05-26T06:29:13Z", "deletionTimestamp": "2020-05-26T07:16:09Z", "name": "monitoring", "resourceVersion": "6710357", "selfLink": "/api/v1/namespaces/monitoring", "uid": "db09b70a-6198-443b-8ad7-5287b2483a08" }, "spec": { "finalizers": [ "kubernetes" ] }, "status": { "phase": "Terminating" } }

修改此monitoring.json文件内容为:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

{ "apiVersion": "v1", "kind": "Namespace", "metadata": { "annotations": { "kubectl.kubernetes.io/last-applied-configuration": "{"apiVersion":"v1","kind":"Namespace","metadata":{"annotations":{},"name":"monitoring"}}n" }, "creationTimestamp": "2020-05-26T06:29:13Z", "deletionTimestamp": "2020-05-26T07:16:09Z", "name": "monitoring", "resourceVersion": "6710357", "selfLink": "/api/v1/namespaces/monitoring", "uid": "db09b70a-6198-443b-8ad7-5287b2483a08" }, "spec": { }, "status": { "phase": "Terminating" } }

调用api-server接口进行删除

打开一个新的终端,或者把下面的命令放到后台执行

1

kubectl proxy

调用接口删除

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22

# curl -k -H "Content-Type: application/json" -X PUT --data-binary @monitoring.json http://127.0.0.1:8001/api/v1/namespaces/monitoring/finalize { "kind": "Namespace", "apiVersion": "v1", "metadata": { "name": "monitoring", "selfLink": "/api/v1/namespaces/monitoring/finalize", "uid": "db09b70a-6198-443b-8ad7-5287b2483a08", "resourceVersion": "6710357", "creationTimestamp": "2020-05-26T06:29:13Z", "deletionTimestamp": "2020-05-26T07:16:09Z", "annotations": { "kubectl.kubernetes.io/last-applied-configuration": "{"apiVersion":"v1","kind":"Namespace","metadata":{"annotations":{},"name":"monitoring"}}n" } }, "spec": { }, "status": { "phase": "Terminating" } }

输出以上内容表示删除成功。