couldn't get resource list for external.metrics.k8s.io/v1beta1
如上图,有时候在执行 kubectl 命令时候会提示 "memcache.go:255] couldn't get resource list for external.metrics.k8s.io/v1beta1: the server is currently unable to handle the request"
错误。或者在某些系统组件的日志中也可以看到类似 couldn't get resource list for xxx.xxx.k8s.io/v1beta1
这样的错误。
根据以上信息可以知道此问题与 external.metrics.k8s.io/v1beta1
相关,从报错现象看是无法连接到 external metrics server 获取相关信息。
分析
rancher\rke\rke2 默认不会部署与 external.metrics 相关的资源,因此如果 k8s 提示 external.metrics.k8s.io/v1beta1 相关信息,那么可以说明集群中有人为部署 external.metrics 相关服务\应用。
- 执行 kubectl get apiservices.apiregistration.k8s.io | grep metrics,可以看到创建 external.metrics.k8s.io/v1beta1 资源对应的服务名称。根据如下的输出,可以看到第二列中列出了 metrics 相关的服务与命名空间。
root@rancher-1:~# kubectl get apiservices.apiregistration.k8s.io|grep metrics |
解决
根据上面的分析可以确定 external.metrics 与什么服务有关,然后在对应命名空间中查询此服务的运行状态是否正常。有时候可能此类服务已经被删除,但是对应的资源还残留在 k8s 中。如果可以确定不再使用对应服务,那直接把该 apiservices.apiregistration.k8s.io 资源删除。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 IT老男孩!