问题描述

在k8s中删除命名空间时,有时候会遇到卡在terminating状态,命名空间永远无法完成删除操作,即使加了--force等强制删除的参数也无济于事。

常见解决方法

在google等搜索引擎搜索,可以得到一种常见的解决办法:

大致思路如下:

  1. 清理ns的finalizers
  2. 调用apiserver强删

治本方案

  1. kubectl get ns xxx -o yaml

  2. 看到有如下提示

     conditions:
       - lastTransitionTime: "2022-11-16T09:35:55Z"
         message: 'Discovery failed for some groups, 1 failing: unable to retrieve the
           complete list of server APIs: metrics.k8s.io/v1beta1: the server is currently
           unable to handle the request'
         reason: DiscoveryFailed
         status: "True"
         type: NamespaceDeletionDiscoveryFailure
  3. 推测是metrics-server不能正常运行,删掉metrics-server负载无效

  4. 需要删除该api组:k delete apiservice v1beta1.metrics.k8s.io

  5. 所有删除卡住的namespace,都可以describe查看到具体哪些资源没删掉。然后describe该具体资源,一般是有finalizer,将finalizer删掉即可删除该资源。命名空间下的所有子资源删除掉后,命名空间会自动完成删除。

参考

Namespace 一直 Terminating - Kubernetes 实践指南 (imroc.cc)

文章目录