65 K8S的namespace一直处于terminating状态怎么办

文章介绍了当K8S的namespace处于terminating状态时的四种解决方法,包括使用kubectl命令强制删除、通过patch命令修改finalizers、直接编辑etcd以及通过kubectl的raw接口清除finalizers。这些方法用于处理命名空间无法正常删除的情况。

一、K8S的namespace一直处于terminating状态怎么办?

目前公司使用的k8s版本是v1.18.2,由于规定将namespace命名为项目名称,故:将不规范的namespace做了修改,由于是一个小项目在变更日做了如下修改,使用粗暴的方式:

`[root@k8s-master1 ~]``#kubectl delete namespace gf-prod``[root@k8s-master1 ~]``# kubectl get ns``NAME             STATUS    AGE``aammini            Active    353d``cattle-impersonation-system  Active    150d``cattle-system         Active    150d``default            Active    2y10d``gf-prod            Terminating  62d  异常状态`
1、方法一
# 第一种办法:
[root@master01 ~]#  kubectl delete namespace  <terminating-namespace> 
# 第二种方法:
首先可以尝试使用–force --grace-period=0 参数强制删除
[root@master01 ~]#  kubectl delete namespace  <terminating-namespace> --force --grace-period=0
但是在某些情况下,即使命名空间下没有运行的资源,但依然无法删除Terminating状态的命名空间的情况,它会一直卡在Terminating状态下,即使用–force --grace-period=0 也删除不了。
2、方法二
# patch命令
[root@master01 ~]#  kubectl patch ns/<terminating-namespace> -p '{"metadata":{"finalizers":[]}}' --type=merge
同理其它资源也可以
kubectl patch crd/ -p '{"metadata":{"finalizers":[]}}' --type=merge
先导出json的方法
# 导出namespace配置保存为json文件
kubectl get namespace <terminating-namespace> -o json >tmp.json
#编辑这个json文件,删除finalizers 字段为kubernetes 的值,编辑完这部分的值如下。
#编辑之前
"spec": {
   
   
    "finalizers": [
        "kubernetes"
    ]
},
#编辑之后

"spec": {
   
   
    "finalizers": [
     ]
},
#启动一个临时的proxy
#kubectl proxy
Starting to serve on 127.0.0.1:8001
# 通过将json文件PUT 到API 修改配置
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
#删除spec及status部分的内容还有metadata字段后的","号,切记!

  "spec": {
   
   
    
  },
 至此,这个状态一直处于terminating 的namespace 应该是被删除了。验证 kubectl get namespaces
3、方法三
# 1、直接修改etcd(删除前先备份etcd)
删除terminating-namespace

[root@master01 ~]# etcdctl del /registry/namespaces/<terminating-namespace>
4、方法四

(1)尝试了强制删除 kubectl delete namespace [namespace] --force --grace-period=0 和通过接口删除不怎么好使,下来有时间再做详细研究。

(2)直接问我们公司大佬,平常在工作中帮

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

FikL919

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

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

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

打赏作者

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

抵扣说明:

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

余额充值