Kubernetes EKS部署Prometheus和adapter后无法获取custom metrics如何解决
EKS集群Prometheus Adapter无法获取自定义指标排查方案
- 第一步 检查Prometheus Adapter运行状态
首先确认Adapter Pod正常运行:kubectl get pods -n monitoring -l app.kubernetes.io/name=prometheus-adapter
若Pod状态非Running,排查Pod启动失败原因;若正常运行,查看Pod日志确认是否存在报错:kubectl logs -n monitoring <替换为实际的Adapter Pod名称>
日志中通常会明确打印Prometheus连接失败、指标规则加载失败等核心问题。 - 第二步 验证Prometheus连通性
确认Adapter配置中填写的Prometheus访问地址正确,且网络可达:
进入Adapter Pod执行连通性测试:kubectl exec -it -n monitoring <替换为实际的Adapter Pod名称> -- curl <替换为配置的Prometheus服务地址>/api/v1/status/config
若无法连通,排查EKS集群网络策略、安全组是否拦截了Adapter到Prometheus的访问请求。 - 第三步 检查自定义指标转换规则
Prometheus Adapter不会自动同步所有Prometheus指标,需要显式配置转换规则,才能将Prometheus侧的指标映射为Kubernetes可识别的custom metrics。
如果你通过Helm安装Adapter,需确认values.yaml中rules字段已配置对应指标的转换逻辑,包含指标匹配规则、关联的Kubernetes资源类型、指标重命名规则等内容。规则配置错误会导致Adapter无法生成任何custom metrics。 - 第四步 校验RBAC权限
确认Adapter使用的ServiceAccount已绑定包含对应资源访问权限的ClusterRole,例如需要暴露Pod维度的指标时,ServiceAccount需要拥有pods资源的get、list权限,权限缺失会导致Adapter无法关联指标与Kubernetes资源。
补充说明:你执行的
kubectl get --raw /metrics命令本身是错误的,该路径为Kubernetes APIServer自身的指标接口,并非自定义指标查询入口。当Adapter配置正确时,执行kubectl get --raw /apis/custom.metrics.k8s.io/v1beta1会返回所有可用的自定义指标列表。
内容的提问来源于stack exchange,提问作者zxc157
相关产品推荐
相关产品推荐

