我有一个“卡住”的名称空间,我删除显示在这个永恒的“终止”状态。


当前回答

你可以运行一些东西。但这通常意味着,命名空间的自动删除无法完成,并且有一个正在运行的进程必须手动删除。要找到它,你可以做这些事情:

把所有的资料都集中到这个名字空间。如果这没有任何结果,继续下一个建议

$ kubectl get all -n your-namespace

一些命名空间附加了apiserivces,删除起来很麻烦。这可以是你想要的任何资源。然后,如果发现任何信息,就删除该资源

$ kubectl get apiservice|grep False

但主要的收获是,可能有一些东西没有完全去除。因此,您可以看到最初在该名称空间中有什么,然后可以看到yaml旋转了哪些内容以查看进程。或者你可以开始谷歌为什么不适当删除服务X,你会发现事情。

其他回答

单行命令

kubectl patch ns <Namespace_to_delete> -p '{"metadata":{"finalizers":null}}'

简单的技巧

你只能在控制台编辑命名空间kubectl编辑<命名空间名称>删除/删除“Kubernetes”从终结器部分(应该像“finalizers”:[])并按enter或保存/应用更改。

你也可以一步完成。

诀窍:1

Kubectl获取命名空间烦扰-命名空间-删除-o json > tmp.json 然后编辑tmp。从终结器中删除“kubernetes 打开另一个终端运行命令kubectl代理,在Curl下面运行

curl -k -H "Content-Type: application/json" -X PUT——data-二进制 @tmp。json https://localhost:8001/api/v1/namespaces/<NAMESPACE NAME TO DELETE>/finalize . json

它应该删除您的名称空间。

循序渐进指南

使用命令启动代理:

kubectl代理

kubectl代理&开始服务 127.0.0.1:8001

找到名称空间

Kubectl得到ns

{您的命名空间名称}终止1d

把它归档

kubectl获取命名空间{您的命名空间名称}-o json > tmp.json

编辑tmp文件。Json并删除终结器

"spec" "finalizers" "kubernetes"

编辑之后,它应该是这样的

,“规范”:{“终结者”:[]},

我们现在只需运行curl并更新其中的名称空间值就差不多了

curl -k -H "Content-Type: application/json" -X PUT——data-二进制 @tmp。json http://127.0.0.1:8001/api/v1/namespaces/{Your namespace 名称}/完成

它消失了

**

curl -k -H "Content-Type: application/json" -X PUT --data-binary @tmp.json 127.0.0.1:8001/k8s/clusters/c-mzplp/api/v1/namespaces/rook-ceph/finalize

这对我来说很有效,命名空间消失了。

详细的解释可以在https://github.com/rook/rook/blob/master/Documentation/ceph-teardown.md链接中找到。

这发生在我中断kubernetes安装(Armory Minnaker)时。然后我继续删除名称空间并重新安装它。由于终结器的原因,我被困在豆荚的终止状态中。我把命名空间放到了tmp中。Json,从tmp删除终结器。Json文件,并执行curl命令。 解决这个问题后,我使用脚本卸载集群以消除残留,并重新安装。

需要移除kubernetes的终结器。

步骤1:

kubectl get namespace <YOUR_NAMESPACE> -o json > <YOUR_NAMESPACE>.json

将kubernetes从finalizers数组中移除

步骤2:

kubectl replace --raw "/api/v1/namespaces/<YOUR_NAMESPACE>/finalize" -f ./<YOUR_NAMESPACE>.json

步骤3:

kubectl get namespace

您可以看到烦人的名称空间消失了。

删除下面列出的所有资源:

kubectl delete -n YOURNAMESPACE —-all

使用kubectl delete -n YOURNAMESPACE <resource> <id>,或者(如果你从上面的输出复制粘贴)kubectl delete -n YOURNAMESPACE <resource>/<id>,对于你看到的列出的每个资源。

kubectl delete -n YOURNAMESPACE <resource>/<id1> <resource>/<id2> <resource2>/<id3> <resource2>/<id4> <resource3>/<id5>等。

可能您试图删除资源,但由于部署或复制集资源,它们正在被重新创建,从而阻止名称空间释放依赖的资源并被清理。

这是由于名称空间控制器无法删除名称空间中仍然存在的资源。

这个命令(使用kubectl 1.11+)将显示名称空间中保留的资源:

kubectl api-resources --verbs=list --namespaced -o name \
  | xargs -n 1 kubectl get --show-kind --ignore-not-found -n <namespace>

一旦找到并解析并删除这些名称空间,该名称空间就会被清理