删除namespace一直处于Terminating状态

容器与中间件容器服务技术服务知识库
问题描述

删除 namespace 一直处于 Terminating 状态

运行环境
  • 容器服务 VKE
问题原因

可能原因1:资源发现

如果罗列资源发生报错,可能导致 namespace 卡主 Terminating 状态:

  • 查看 namespace 卡在 Terminating 的原因 - Discovery failed for some groups
$ kubectl get namespace <name> -o yaml
conditions:
  - lastTransitionTime: "2021-03-12T12:46:17Z"
    message: 'Discovery failed for some groups, 1 failing: unable to retrieve the
      complete list of server APIs: webhook.cert-manager.io/v1beta1: the server is
      currently unable to handle the request'
    reason: DiscoveryFailed
    status: "True"
    type: NamespaceDeletionDiscoveryFailure

  • 查看 apiservice 的状态
$ kubectl get apiservice
NAME                                   SERVICE                             AVAILABLE                 AGE
v1beta1.webhook.cert-manager.io        cert-manager/cert-manager-webhook   False (ServiceNotFound)   3d23h

解决方法:将异常的apiservice状态恢复成True或者删除不需要的apiservice,即可恢复。

可能原因2:finalizer

finalizer 导致 namespace Terminating 一般为以下两种情况: 1. namespace资源对象的spec.finalizer[] 列表中不为空 解决方法:手动清空finalizer列表

  $ kubectl get ns demo -o json | jq '.spec.finalizers=[]' > ns-without-finalizers.json
  cat ns-without-finalizers.json
  $ kubectl proxy &
  $ PID=$!
  $ curl -X PUT http://localhost:8001/api/v1/namespaces/demo/finalize -H "Content-Type: application/json" --data-binary @ns-without-finalizers.json
  $ kill $PID

2. namespace资源对象的metadata.finalizer[] 列表不为空 比如:将集群托管到 rancher 管理后,rancher 就会写 finalizer 到metadata.finalizer[] 列表,而当集群脱离 rancher 管理之后,手动删除namespace,往往就会发生 Terminating。 解决方法: 将 metadata.finalizer[]列表删除

$ kubelet edit ns <name>

如果您有其他问题,欢迎您联系火山引擎技术支持服务

0
0
0
0
关于作者

文章

0

获赞

0

收藏

0

所属团队号:
相关资源
大模型解决方案白皮书;社交陪伴场景全流程落地指南
随着大模型技术持续突破,AI正加速重塑社交娱乐的形态与体验。其中,陪伴式聊天因用户黏性强、互动频次高,成为大模型商业化落地的关键赛道。随着模型能力跃升至万亿参数级,AI从工具属性正迈向情感交互生态,现象级产品的诞生条件逐渐成熟。 本白皮书聚焦AI陪伴聊天应用开发,面向“从何起步、如何落地”的新手困惑,系统拆解从需求定义到产品上线的关键流程。我们结合工程化实践路径,打造模块化知识体系与渐进式开发框架,帮助开发者在30天内完成从技术认知到产品原型的跃升,快速构建具备基础交互能力的Web或App应用,迈出大模型
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论