本文最后更新于134 天前,其中的信息可能已经过时,如有错误请发送邮件到big_fw@foxmail.com
先试试:
kubectl delete pod (ns)–-force --grace-period=0
如果还删除不掉处于terminating状态
1.POD
先删除pod再删除ns,不然因为pod没有移除干净,ns依旧会一直处于terminating
kubectl patch pod podname -n namespace -p '{"metadata":{"finalizers":null}}'
kubectl delete pod (ns)–-force --grace-period=0
2.Namespace
首先生成一个tmp.json文件
kubectl get namespace <terminating-namespace> -o json >tmp.json
kubectl get pod -n namespace podname -o json > tmp.json
然后修改这个json文件,把finalizers的kubernetes删掉(删不掉的话就修改为[] 或者null)
之后把本机服务暴露在本地端口的8001端口上
# 打开新的会话窗口执行
kubectl proxy
kubectl proxy命令
-
用于在本地计算机和Kubernetes API服务器之间创建一个代理服务器。这个命令允许用户通过HTTP协议访问运行在Kubernetes集群中的API和服务,而无需将这些服务公开到外部网络。使用 kubectl proxy 可以简化调试和测试过程,因为它提供了一个直接的方式来与集群内部的资源进行交互。
-
当执行 kubectl proxy 命令时,它会在本地机器上启动一个监听服务,默认情况下,它会监听本地的8001端口。一旦代理服务器运行起来,用户就可以通过 http://localhost:8001 加上相应的API端点来访问Kubernetes API,或者通过 http://localhost:8001 加上服务名称和端口来直接访问集群中的服务。这个命令特别有用,当你需要在没有设置复杂网络访问规则的情况下快速检查或操作集群资源时.
新开一个terminal,把修改后的tmp.json到要删除的ns资源目录下
curl -k -H "Content-Type: application/json" -X PUT --data-binary @tmp.json http://127.0.0.1:8001/api/v1/namespaces/删除的名字/finalize
之后get ns 查看是否已经删除