在使用kubernetes过程中,我们经常会遇到无法删除NameSpace的情况,但是如果一一去删除NameSpace中资源比较麻烦。下面我们给大家介绍强制删除NameSpace的方法。
一、查看已存在的NameSpace
经过查阅资料问题应该是monitoring这个namespace下应该还有其他资源没有删除干净。
二、获取需要强制删除的NameSpace信息
webedit@vm3:~$ kubectl get namespace monitoring -o json > tmp.json
webedit@vm3:~$ vim tmp.json
三、修改已获取的NameSpace信息文件
webedit@vm3:~$ cat tmp.json
{
"apiVersion": "v1",
"kind": "Namespace",
"metadata": {
"annotations": {
"kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"v1\",\"kind\":\"Namespace\",\"metadata\":{\"annotations\":{},\"name\":\"monitoring\"}}\n"
},
"creationTimestamp": "2022-06-16T10:19:02Z",
"deletionTimestamp": "2022-06-17T02:32:23Z",
"managedFields": [
{
"apiVersion": "v1",
"fieldsType": "FieldsV1",
"fieldsV1": {
"f:metadata": {
"f:annotations": {
".": {},
"f:kubectl.kubernetes.io/last-applied-configuration": {}
}
},
"f:status": {
"f:phase": {}
}
},
"manager": "kubectl-client-side-apply",
"operation": "Update",
"time": "2022-06-16T10:19:02Z"
},
{
"apiVersion": "v1",
"fieldsType": "FieldsV1",
"fieldsV1": {
"f:status": {
"f:conditions": {
".": {},
"k:{\"type\":\"NamespaceContentRemaining\"}": {
".": {},
"f:lastTransitionTime": {},
"f:message": {},
"f:reason": {},
"f:status": {},
"f:type": {}
},
"k:{\"type\":\"NamespaceDeletionContentFailure\"}": {
".": {},
"f:lastTransitionTime": {},
"f:message": {},
"f:reason": {},
"f:status": {},
"f:type": {}
},
"k:{\"type\":\"NamespaceDeletionDiscoveryFailure\"}": {
".": {},
"f:lastTransitionTime": {},
"f:message": {},
"f:reason": {},
"f:status": {},
"f:type": {}
},
"k:{\"type\":\"NamespaceDeletionGroupVersionParsingFailure\"}": {
".": {},
"f:lastTransitionTime": {},
"f:message": {},
"f:reason": {},
"f:status": {},
"f:type": {}
},
"k:{\"type\":\"NamespaceFinalizersRemaining\"}": {
".": {},
"f:lastTransitionTime": {},
"f:message": {},
"f:reason": {},
"f:status": {},
"f:type": {}
}
}
}
},
"manager": "kube-controller-manager",
"operation": "Update",
"time": "2022-06-17T02:32:45Z"
}
],
"name": "monitoring",
"resourceVersion": "161265704",
"selfLink": "/api/v1/namespaces/monitoring",
"uid": "4a87be5a-a8a6-422b-b173-fe5a70103004"
},
"spec": {
},
"status": {
"conditions": [
{
"lastTransitionTime": "2022-06-17T02:32:39Z",
"message": "Discovery failed for some groups, 1 failing: unable to retrieve the complete list of server APIs: metrics.k8s.io/v1beta1: the server is currently unable to handle the request",
"reason": "DiscoveryFailed",
"status": "True",
"type": "NamespaceDeletionDiscoveryFailure"
四、运行kube-proxy
webedit@vm3:~$ kubectl proxy
Starting to serve on 127.0.0.1:8001
五、通过API执行强制删除操作
webedit@vm3:~$ curl -k -H "Content-Type: application/json" -X PUT --data-binary @tmp.json http://127.0.0.1:8001/api/v1/namespaces/monitoring/finalize
六、强制删除确认
webedit@vm3:~$ kubectl get ns |grep monitoring