如何修复 删除Kubernetes名称空间时卡在终止状态

如何修复 删除Kubernetes名称空间时卡在终止状态

最近重新部署了k8s环境, 之前用的是内置etcd cluster。现在需要转换成外部etc cluster方案,提高系统的稳定性, 尤其是master节点可以部署多台,提升整体系统的搞可用性。

首先部署五个节点的etcd cluster, 然后部署两台k8s 的master节点, 然后添加worker节点。一切都看起来很棒,并且部署了好几个一应用都很棒,工作正常。直到部署storage os作为k8s的存贮系统系统时,麻烦出现了。

有几个storage os 的pod死活无法启动, 整个存贮系统系统就是起不来。几乎在整整一天的时间, 我增加部署、删除部署、移动节点、终止节点,修改配置等等,整个弄乱了。头大, 最终放弃,决定第二天再来搞。

第二天,大雨滂沱,空气里弥漫着潮湿的味道,走在雨中,就算打着伞,衣服和裤子都淋湿了,运动鞋变成了水鞋。我决定,删了整个 storage os 部署。重新来一遍。

kubectl delete -f comeonk8s/storage/

一切似乎都正常,毕竟破坏比建设容易多了。然鹅,还是太naive,有一个 storage os 的 name space “storageos-operator”, 过去一个小时了还在,一直处于“Terminating” 状态,又等了半个小时,还是“Terminating” 状态。事情复杂啦。沮丧之余转向谷歌,开始寻找是否有人有同样的问题。查找了一通,有相当多的类似情况,尝试了大多数都没有效果,直到找到github这个问题:https://github.com/kubernetes/kubernetes/issues/60807, 尝试上面的各个方法,没有解决。最后的最后,找到了这篇文章How to fix — Kubernetes namespace deleting stuck in Terminating state。 按照步骤做下来,解决了。方法如下:

第一步 将name space 作为JSON转储到一个文件中

kubectl get namespace storageos-operator -o json > so.json

vi so.json

       "name": "storageos-operator",
        "resourceVersion": "183682",
        "selfLink": "/api/v1/namespaces/storageos-operator",
        "uid": "8f62002c-044a-4b07-968f-02cbfe821901"
    },
    "spec": {
        "finalizers": [
           "kubernetes"
        ]
    },
    "status": {
        "conditions": [
            {

从 “finalizers”: [
“kubernetes”
]

删除 “kubernetes”

        "name": "storageos-operator",
        "resourceVersion": "183682",
        "selfLink": "napi/v1/naespaces/storageos-operator",
        "uid": "8f62002c-044a-4b07-968f-02cbfe821901"
    },
    "spec": {
        "finalizers": [
        ]
    },
    "status": {
        "conditions": [
            {

第二步 执行清理命令

现在有了这个修改后的json文件,可以指示k8s集群删除那个烦人的名称空间storageos-operator 啦。

kubectl replace --raw "/api/v1/namespaces/storageos-operator/finalize" -f ./so.json

记得替换你的k8s cluster自己的名称空间:/api/v1/namespaces/<your_namespace_here>/finalize

运行该命令后,storageos-operator名称空间现在终于删除成功。然后重新检查了好几遍 comeonk8s/storageos/ 下相关的文件。

kubectl apply -f comeonk8s/storageos/

一切正常!!

k8s其它 resource

这里要注意的关键是您要修改的资源,在我的例子中,它是用于名称空间的。猜测 pods, deployments, services,等等。应该也可以用同样的方法, 也可以删除 这些处于“Terminating”状态的资源

szit0755

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值