问题解决:k8s删除namespace一直处于Terminating状态

正常删除

kubectl delete namespace NAMESPACENAME

强制删除

kubectl delete namespace NAMESPACENAME --force --grace-period=0

如果强制删除也没有用的话

修改finalizers,删除下面红色框内容

kubectl edit namespace NAMESPACE_NAME

问题解决:k8s删除namespace一直处于Terminating状态

如果这个方法也不行的话

通过调用接口删除

kubectl get namespace <terminating-namespace> -o json >tmp.json

编辑tmp.json,删除finalizers 字段的值

{
    "apiVersion": "v1",
    "kind": "Namespace",
    "metadata": {
        "annotations": {
            "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"v1\",\"kind\":\"Namespace\",\"metadata\":{\"annotations\":{},\"name\":\"kubernetes-dashboard\"}}\n"
        },
        "creationTimestamp": "2022-05-29T14:35:19Z",
        "deletionTimestamp": "2022-05-30T06:51:16Z",
        "name": "kubernetes-dashboard",
        "resourceVersion": "1048583",
        "selfLink": "/api/v1/namespaces/kubernetes-dashboard",
        "uid": "2320611c-1eec-4903-80e9-e30850b9b5c7"
    },
    "spec": {
    "finalizers": []
  },
  "status": {
    "phase": "Terminating"
  }
}

开启 proxy

kubectl proxy

打开新的terminal 窗口,运行以下命令:

curl -k -H "Content-Type: application/json" -X PUT --data-binary @tmp.json http://127.0.0.1:8001/api/v1/namespaces/<terminating-namespace>/finalize

处理pod无法删除一直处在Terminating问题

(1)强制删除

kubectl delete pod xxx -n xxx --force --grace-period=0

(2)如果强制删除还不行,设置finalizers为空(如果一个容器已经在运行,这时需要对一些容器属性进行修改,又不想删除容器,或不方便通过replace的方式进行更新。kubernetes还提供了一种在容器运行时,直接对容器进行修改的方式,就是patch命令。)

kubectl patch pod xxx -n xxx -p ‘{“metadata”:{“finalizers”:null}}’

这样pod就可以删除了。

发布者:LJH,转发请注明出处:https://www.ljh.cool/37317.html

(0)
上一篇 2023年5月5日 上午12:19
下一篇 2023年6月15日 下午7:45

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注