在TKE获取不到超级节点pod cpu/mem指标

2023-11-29 16:02:45 浏览数 (1)

问题背景:

经常有在TKE部署了metrics-server后,发现通过kubectl top 或者k9s看不到超级节点pod的cpu/mem,这些工具都依赖v1beta1.metrics.k8s.io apiservice接口获取监控指标。

问题原因

社区metrics-server默认是从<node_ip>:10251/stats/summary接口获取pod cpu/mem监控,但是超级节点没有暴露这个接口,所以无法获取。

TKE自身默认数据源已经做了适配,主要有2类apiservice:

  • v1beta1.custom.metrics.k8s.io: 暴露所有pod层级的指标
  • v1beta1.metrics.k8s.io: 暴露节点/pod cpu,内存使用量

解决方案

所以只需要修改apiservice v1beta1.metrics.k8s.io,指向TKE默认数据源kube-system/metrics-service

修改为:

代码语言:shell复制
kubectl edit apiservice v1beta1.metrics.k8s.io
代码语言:yaml复制
  service:
    name: metrics-service
    namespace: kube-system
    port: 443

全部yaml配置

代码语言:yaml复制
apiVersion: apiregistration.k8s.io/v1
kind: APIService
metadata:
  name: v1beta1.metrics.k8s.io
spec:
  group: metrics.k8s.io
  groupPriorityMinimum: 998
  insecureSkipTLSVerify: true
  service:
    name: metrics-service
    namespace: kube-system
    port: 443
  version: v1beta1
  versionPriority: 16

0 人点赞