K8S 中强制删除namespace 命名空间后 显示 Terminating 状态

K8S 中强制删除namespace 命名空间后 显示 Terminating 状态

1:现象

K8S 中强制删除namespace 命名空间后 显示 Terminating 状态。

并且报错 warning: Immediate deletion does not wait for confirmation that the running

故障现象:
warning: Immediate deletion does not wait for confirmation that the running resource has been terminated. The resource may continue to run on the cluster indefinitely.

[root@k8s-master ns]# kubectl delete ns nginx --force --grace-period=0
[root@k8s-master ns]# kubectl get ns
NAME              STATUS        AGE
default           Active        51d
kube-node-lease   Active        51d
kube-public       Active        51d
kube-system       Active        51d
metallb-system    Active        58m
nginx             Terminating   68s

2:解决方法

[root@k8s-master ns]# kubectl get ns nginx -o json > nginx-ns.json
[root@k8s-master ns]# cat nginx-ns.json 
{
    "apiVersion": "v1",
    "kind": "Namespace",
    "metadata": {
        "annotations": {
            "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"v1\",\"kind\":\"Namespace\",\"metadata\":{\"annotations\":{},\"name\":\"nginx\"}}\n"
        },
        "creationTimestamp": "2022-03-17T17:05:40Z",
        "deletionTimestamp": "2022-03-17T17:05:44Z",
        "labels": {
            "kubernetes.io/metadata.name": "nginx"
        },
        "name": "nginx",
        "resourceVersion": "11180",
        "uid": "88768b09-79a7-407b-a60d-4133d8cff9e8"
    },
    "spec": {
        "finalizers": [
            "kubernetes"
        ]
    },
    "status": {
        "phase": "Terminating"
    }
}


删除spec字段后,执行以下curl命令,使用kube-apiserver的8080端口,执行删除操作
[root@k8s-master ns]# cat nginx-ns.json 
{
    "apiVersion": "v1",
    "kind": "Namespace",
    "metadata": {
        "annotations": {
            "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"v1\",\"kind\":\"Namespace\",\"metadata\":{\"annotations\":{},\"name\":\"nginx\"}}\n"
        },
        "creationTimestamp": "2022-03-17T17:05:40Z",
        "deletionTimestamp": "2022-03-17T17:05:44Z",
        "labels": {
            "kubernetes.io/metadata.name": "nginx"
        },
        "name": "nginx",
        "resourceVersion": "11180",
        "uid": "88768b09-79a7-407b-a60d-4133d8cff9e8"
    },
    "status": {
        "phase": "Terminating"
    }
}

curl -k -H "Content-Type: application/json" -X PUT --data-binary @nginx-ns.json http://127.0.0.1:8080/api/v1/namespaces/nginxl/finalize

# 再次查看ns
[root@k8s-master ns]#kubectl get ns
NAME              STATUS   AGE
default           Active   51d
kube-node-lease   Active   51d
kube-public       Active   51d
kube-system       Active   51d
metallb-system    Active   63m

#备注:
如果kube-apiserver未开非安全端口,可以手动创建一个代理会话

kubectl proxy --port=8081

curl -k -H "Content-Type: application/json" -X PUT --data-binary @nginx-ns.json http://127.0.0.1:8081/api/v1/namespaces/nginx/finalize
posted @ 2022-03-18 01:11  Layzer  阅读(275)  评论(0)    收藏  举报