k8s的namespace无法被正常回收
最近在工作中遇到k8s namespace删不掉,一直 Terminating 状态的解决方法
1.kubectl get namespace -o json > tmp.json
2.vim tmp.json 删除finalizers 中的参数
{
“apiVersion”: “v1”,
“kind”: “Namespace”,
“metadata”: {
…
},
“spec”: {
“finalizers”: [
“kubernetes” -> 这行删除
]
},
“status”: {
“phase”: “Terminating”
}
}
3.通过kubectl proxy 命令暴露api端口,若端口被占就加上-p 参数指定一个端口
kubectl proxy -p 8002 &(如果存在多个ns要删,这个命令只需要执行一次,执行完会在命令行输出一个进程号,记下这个进程号)
4.通过curl命令调用api,注意http地址的端口和namespace后面接的名称需要和上面对应
curl -k -H “Content-Type: application/json” -X PUT --data-binary @tmp.json http://localhost:8002/api/v1/namespaces//finalize
5.所有terminating的namespace都删除后,将proxy服务停掉
kill -15 <第3步的pid>