k8s集群namespace一直处于Terminating状态不释放解决办法

Kubernetes中namespace有两种常见的状态,即Active和Terminating状态,其中Terminating状态一般会比较少见,当对应的命名空间下还存在运行的资源,但该命名空间被删除时才会出现所谓的Terminating状态,这种情况下只要等待Kubernetes本身将命名空间下的资源回收后,该命名空间将会被系统自动删除。

问题:
想要删除kuboard这个命名空间,但是命名空间却一直处于Terminating状态不释放
在这里插入图片描述
解决

  1. 查看是否有pod未被删除
kubectl get pod,deployment -n kuboard

在某些情况下,即使命名空间下没有运行的资源,但依然无法删除Terminating状态的命名空间的情况,它会一直卡在Terminating状态下,这时候就需要强制删除了。

  1. 强制删除的几种方法:
  • 1. 使用--force --grace-period=0 强制删除
kubectl delete ns kuboard --force --grace-period=0
#kuboard为命名空间

但大部分时候,这些资源也杀不掉,最好的解决办法是使用原生接口删除。

  • 2. 原生接口删除
1.获取namespace的详情信息
kubectl  get ns kuboard -o json >kuboard.json

编辑json文件,删除.metadata.finalizers字段及其内容:
删除前:
在这里插入图片描述
删除后:
在这里插入图片描述

2.开启k8s apiserver的一个http代理,以免必须带上证书才能访问
kubectl proxy --port=8081
#开启请单独打开一个窗口,默认前台执行,不可以退出

3.通过curl json提交接口删除
curl -k -H "Content-Type: application/json" -X PUT --data-binary @kuboard.json  http://127.0.0.1:8081/api/v1/namespaces/kuboard/finalize

例子: curl -k -H "Content-Type: application/json" -X PUT --data-binary @命名空间.json  http://127.0.0.1:8081/api/v1/namespaces/命名空间/finalize
#将cattle-system.json 以及url中的cattle-system命名空间地址进行替换成对应的命名空间

4.查看是否删除
kubectl  get ns

成功截图如下:
在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我是小bā吖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值