You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Prometheus Adapter自定义指标异常:FailedDiscoveryCheck问题求助

GKE集群Prometheus自定义指标Adapter故障排查与解决

核心问题

部署Prometheus Custom Metrics Adapter后,所有Pod运行正常,但出现以下异常:

  • Adapter日志显示请求Prometheus返回空数据,无可用指标列表
  • 访问/apis/custom.metrics.k8s.io/v1返回404
  • APIService v1.custom.metrics.k8s.io状态为FailedDiscoveryCheck

逐步排查与修复

1. 确认Prometheus指标采集状态

Adapter无法获取数据的核心原因是Prometheus未采集到目标指标,先验证这一点:

  • 端口转发Prometheus服务:
    kubectl port-forward -n fb-poster svc/prometheus-service 9090:9090
    
  • 查询关键指标:访问http://localhost:9090/api/v1/query?query=selenium_grid_node_count,若返回空数组:
    • 检查Selenium Hub导出服务可用性:在任意集群Pod内执行curl selenium-hub-export-service:9104/metrics,确认能返回指标数据
    • 查看Prometheus抓取状态:访问http://localhost:9090/targets,确认selenium-hub job状态为UP
    • 检查Prometheus配置中的scrape target地址、端口是否正确

2. 修复自定义规则与Adapter配置

当前Adapter配置存在两个关键问题:

  • 自定义指标free_nodes_percentage无kubernetes_namespace/kubernetes_pod_name标签,但Adapter规则强制要求这些标签非空
  • 缺少metricsQuery字段,Adapter无法正确查询指标

修改ConfigMap中的config.yml:

rules:
  - seriesQuery: 'free_nodes_percentage'
    resources:
      # 若指标是命名空间级,调整为实际存在的标签;若为集群级可移除overrides
      overrides:
        namespace: {resource: "namespace"}
    name:
      matches: "free_nodes_percentage"
      as: "free_nodes_percentage"
    metricsQuery: 'free_nodes_percentage'

同时优化自定义规则避免除以0错误:

# custom_rules.yml
groups:
  - name: custom.rules
    rules:
      - record: free_nodes_percentage
        expr: 100 * (selenium_grid_node_count - selenium_grid_session_count) / max(selenium_grid_node_count, 1)

3. 适配Adapter与API版本

你使用的Adapter版本v0.5.0对v1.custom.metrics.k8s.io的支持有限,可先回退到v1beta1验证功能:

# 修改APIService配置
apiVersion: apiregistration.k8s.io/v1
kind: APIService
metadata:
  name: v1beta1.custom.metrics.k8s.io
spec:
  service:
    name: prometheus-adapter-monitor
    namespace: fb-poster
  group: custom.metrics.k8s.io
  version: v1beta1
  insecureSkipTLSVerify: true
  groupPriorityMinimum: 100
  versionPriority: 100

若需使用v1版本,需给Adapter添加启动参数--api-version=custom.metrics.k8s.io/v1

4. 修正防火墙规则错误

之前创建规则时源网段写错,正确命令:

gcloud compute firewall-rules create allow-prometheus-adapter --action ALLOW --direction INGRESS --source-ranges 10.82.128.0/17 --rules tcp:6443 --network default

注:非私有集群中控制平面访问集群服务通常无需额外防火墙规则,此步骤为补充验证。

5. 验证Adapter API端点

端口转发Adapter服务直接测试:

kubectl port-forward -n fb-poster svc/prometheus-adapter-monitor 6443:443
curl -k https://localhost:6443/apis/custom.metrics.k8s.io/v1

若返回指标列表则配置正常,若仍404则回到第一步确认指标采集状态。


内容的提问来源于stack exchange,提问作者Kacper

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 02:57:01