[root@k8s-master01 ~]# kubectl get namespace
NAME STATUS AGE
cattle-system Terminating 17h
default Active 63d
删除ns之后查看ns发现处于 Terminating 状态无法删除
解决方法:
使用接口删除
1、提取该ns信息
[root@k8s-master01 ~]# kubectl get ns cattle-system -o json > cattle-system.json
2、更改json文件
删除 spec 和 status 部分,以及 metadata 部分后面的 ‘,’逗号
删除后大概是这个样子
{
"apiVersion": "v1",
"kind": "Namespace",
"metadata": {
"annotations": {
"kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"v1\",\"kind\":\"Namespace\",\"metadata\":{\"annotations\":{},\"name\":\"cattle-system\"}}\n"
},
"creationTimestamp": "2021-09-23T09:15:16Z",
"deletionTimestamp": "2021-09-23T09:53:24Z",
"name": "cattle-system",
"resourceVersion": "177853",
"uid": "5dd792bb-cff4-4f77-9016-7fd210287076"
}
}
3、通过接口删除
首先启动一个接口
[root@k8s-master01 ~]# kubectl proxy --port=28081
然后再另启动一个终端执行下面命令
注意"Content-Type: application/json"这里冒号后是有个空格的
[root@k8s-master01 ~]# curl -k -H "Content-Type: application/json" -X PUT --data-binary @cattle-system.json http://127.0.0.1:28081/api/v1/namespaces/cattle-system/finalize
4、再次查看会发现已经删除了