在使用Kubernetes的时候,执行删除namespace命令后挂着不动,要删除namspace一直处于Terminating状态该怎么处理。出现问题的时候我的名称空间是eckal,下面我就把我解决问题的具体做法介绍一下:

首先使用命令行方式删除,执行如下命令:

#kubectl delete ns eckal

过了一会,通过命令kubectl get ns查看,名称空间eckal还处于Terminating状态,以为是删除慢,多等待了一会,但还是这个状态。

我使用如下指令,查看了一下资源,发现名称空间eckal下已没有资源了。

# kubectl api-resources -o name --verbs=list --namespaced | xargs -n 1 kubectl get --show-kind --ignore-not-found -n eckal

使用ctrl+c退出命令,然后在指令后添加强制删除参数,问题依然存在。

#kubectl delete ns eckal --grace-period=0 --force

注:这里也可以尝试在后面添加参数--ignore-not-found

接下来使用原生接口删除,竟然成功了,具体操作如下:

1、获取namespace描述,把spec的内容清空, 删除finalizers属性

#kubectl get namespace eckal -o json > tmp.json

2、启动一个API代理在本地的8088端口,注意端口不要有冲突

#kubectl proxy --port=8088

3、执行删除动作

#curl -k -H "Content-Type:application/json" -X PUT --data-binary @tmp.json https://127.0.0.1:8088/api/v1/namespaces/eckal/finalize

 

Logo

开源、云原生的融合云平台

更多推荐