您现在的位置是:首页 > 编程

k8s namespace 无法删除一直是处于Terminating状态

编程作者:chenli日期:2022-01-18 11:40:51点击:131

Kubernetes中namespace有两种常见的状态,即Active和Terminating状态,其中Terminating状态一般会比较少见,当对应的命名空间下还存在运行的资源,但该命名空间被删除时才会出现所谓的Terminating状态,这种情况下只要等待Kubernetes本身将命名空间下的资源回收后,该命名空间将会被系统自动删除。

但是在某些情况下,即使命名空间下没有运行的资源,但依然无法删除Terminating状态的命名空间的情况,它会一直卡在Terminating状态下。

解决办法是使用原生接口删除

第一步:将namespace内容导出到tmp.json文件中:

  1. kubectl get namespace NAMESPACE_NAME -o json > tmp.json

第二步:修改tmp.json内容,删除json中以下内容:

  1. {
  2. //删除spec整个内容
  3. "spec": {
  4. "finalizers": [
  5. "kubernetes"
  6. ]
  7. },
  8. "status": {
  9. "phase": "Terminating"
  10. }
  11. }

第三步:开启k8s接口代理,新开一个窗口,执行

  1. [root@k8s-master ~]# kubectl proxy
  2. Starting to serve on 127.0.0.1:8001

第四步:调用接口删除Namespace,注意URL中修改成要删除的NAMESPACE_NAME

  1. curl -k -H "Content-Type: application/json" -X PUT --data-binary @tmp.json http://127.0.0.1:8001/api/v1/namespaces/NAMESPACE_NAME/finalize

文章评论