1.kubectl get namespace annoying-namespace-to-delete -o json > tmp.json
then edit tmp.json and remove"kubernetes"
curl -k -H "Content-Type: application/json" -X PUT --data-binary @tmp.json https://kubernetes-cluster-ip/api/v1/namespaces/annoying-namespace-to-delete/finalize
and it should delete your namespace,
2.Kubernetes强制删除一直处于Terminating状态的pod,namespace
手动搭建的Kubernetes,使用原生的Dashboard,感觉不舒服,于是使用Rancher2.0代理了Kubernetes的管理web页面。因未知原因,Rancher服务无法启用,删除Rancher依赖的namespace(cattle-system),状态一直是Terminating。此为背景。
解决方法:
- 可使用kubectl中的强制删除命令
# 删除POD
kubectl delete pod PODNAME --force --grace-period=0 # 删除NAMESPACE
kubectl delete namespace NAMESPACENAME --force --grace-period=0
- 若以上方法无法删除,可使用第二种方法,直接从ETCD中删除源数据(这是一种最暴力的方式,我们不建议直接操作etcd中的数据,在操作前请确认知道你是在做什么。)
# 删除default namespace下的pod名为pod-to-be-deleted-0
ETCDCTL_API=3 etcdctl del /registry/pods/default/pod-to-be-deleted-0 # 删除需要删除的NAMESPACE
etcdctl del /registry/namespaces/NAMESPACENAME