k8s集群名称空间无法删除,显示Terminating的解决方案

一,名称空间无法删除,显示Terminating,如下所示

 二,解决方案

1,导出json文件

kubectl get namespace cattle-system -o json > tmp.json

将cattle-system替换为要删除的名称空间

2,编辑导出的json文件

vim tmp.json

找到finalizers字段,大概在第23行,用/finalizers搜索,删除finalizers字段。

 

 删除后结果如图所示

3,调用api删除名称空间

打开另外的终端执行kubectl proxy启动代理

 启动代理之后不动,回刚才那个字段执行以下命令删除名称空间

curl -k -H "Content-Type: application/json" -X PUT --daa-binary @tmp.json http://127.0.0.1:8001/api/v1/namespaces/cattle-system/finalize

其中@tmp.json是刚才导出来的文件,注意不要删除前面的@,

将api中的cattle-system替换为要删除的名称空间。

 看到没有报错基本就是删除成功了,执行kubectl get ns查看名称空间,发现已经被删除了,完结。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如果你想删除一个名称空间,但是它的状态一直显示Terminating,那么可以尝试以下步骤: 1. 等待一段时间。删除一个名称空间可能需要一些时间,特别是当该名称空间中有很多资源需要删除时。你可以等待一段时间,直到名称空间状态变成了"NotFound",表示名称空间已经被删除。 2. 强制删除名称空间。如果名称空间一直处于Terminating状态,你可以尝试使用下面的命令来强制删除它: kubectl delete namespace <namespace-name> --force --grace-period=0 这个命令会强制删除名称空间,即使它还没有完全停止。 3. 删除名称空间的Finalizers。如果名称空间一直处于Terminating状态,并且你无法使用kubectl delete命令删除它,那么你可以尝试删除名称空间的Finalizers。Finalizers是一种用于确保在删除资源之前执行某些操作的机制。你可以使用下面的命令来删除名称空间的Finalizers: kubectl get namespace <namespace-name> -o json > namespace.json 然后编辑namespace.json文件,找到spec.finalizers字段,将其删除并保存文件。 最后使用下面的命令将修改后的json文件应用到Kubernetes中: kubectl replace --raw "/api/v1/namespaces/<namespace-name>/finalize" -f ./namespace.json 这个命令会删除名称空间的Finalizers,从而允许你删除名称空间。 注意:在进行任何删除操作之前,请确保你已经备份了相关的数据。如果你不确定如何操作,请咨询Kubernetes管理员或者开发人员。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值