EKS集群使用Bitnami Metrics Server时HPA指标获取失败求助
EKS集群HPA结合Bitnami Metrics Server报错排查方案
一、先确认Metrics Server核心运行状态
- 检查Pod状态:执行
kubectl get pods -n kube-system | grep metrics-server,确保Pod处于Running状态,无CrashLoopBackOff或Error异常 - 查看Pod日志:执行
kubectl logs -n kube-system <metrics-server-pod-name>,重点排查证书验证、Kubelet连接相关报错(比如x509: certificate signed by unknown authority)
二、解决「the server could not find the requested resource (get pods.metrics.k8s.io)」错误
该错误表示metrics.k8s.io API资源未注册或Metrics Server未正确暴露API:
- 验证API资源是否存在:执行
kubectl api-resources | grep metrics,若未返回pods.metrics.k8s.io和nodes.metrics.k8s.io,说明API资源未注册 - 检查Helm配置:EKS节点默认使用自签证书,需确保Metrics Server启动参数包含
--kubelet-insecure-tls。查看当前配置:helm get values metrics-server -n kube-system,若缺少该参数,执行更新:helm upgrade metrics-server bitnami/metrics-server -n kube-system --set args[0]=--kubelet-insecure-tls - 确认APIService状态:执行
kubectl get apiservices v1beta1.metrics.k8s.io,状态必须为Available=True;若为Failed,查看事件详情:kubectl describe apiservices v1beta1.metrics.k8s.io,通常是Pod未就绪或证书信任问题
三、解决「no metrics returned from resource metrics API」错误
该错误表示Metrics Server能连接API,但无法从Kubelet获取指标:
- 检查节点端口访问权限:确认EKS节点安全组允许
kube-system命名空间的Pod访问Kubelet的10250端口 - 验证指标获取能力:执行
kubectl top nodes和kubectl top pods,若这两个命令报错,优先解决Metrics Server本身的指标采集问题 - 排查Kubelet状态:通过CloudWatch日志或节点登录查看Kubelet运行状态,确认是否有指标暴露相关异常
- 检查HPA配置合理性:确认HPA引用的Pod标签正确,且目标Pod已配置CPU/内存资源请求(HPA需依赖资源请求计算利用率)
四、其他通用排查点
- 版本兼容性:确认Metrics Server版本与EKS集群版本匹配,Bitnami Chart默认适配主流版本,旧集群可指定兼容版本安装
- 端口配置:若EKS节点Kubelet端口非默认10250,需在Helm values中设置
kubeletPort参数 - 强制重启Pod:配置更新后未生效时,执行
kubectl delete pod -n kube-system <metrics-server-pod-name>触发Pod重启加载新配置
内容的提问来源于stack exchange,提问作者Kaizendae
相关产品推荐
相关产品推荐

