问题背景:
经常有在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