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

Nginx Ingress Controller metrics服务Ingress路由返回404问题咨询

Nginx Ingress路由metrics服务404问题排查方案

核心问题排查点

  • 后端服务名称配置错误
    你提到部署后自动生成的metrics服务名为internal-controller-metrics,但当前Ingress配置中指定的backend service名称为nginx-internal-controller-metrics,二者名称不匹配是最常见的404原因。你可以执行kubectl get svc -A | grep metrics确认服务的实际名称和所属命名空间,修正Ingress中的service名称配置。
  • Ingress规则未被对应控制器加载
    如果控制器日志中没有相关请求的路由报错,说明请求没有匹配到你编写的这条Ingress规则:
    1. 执行kubectl describe ingress metrics-ingress查看事件列表,确认是否存在service不存在、端口不匹配、ingress class不匹配等配置错误
    2. 执行kubectl get ingress metrics-ingress确认ADDRESS字段已经正常分配控制器地址
  • metrics端口监听地址限制
    Nginx Ingress Controller的metrics服务默认仅监听127.0.0.1,仅允许本地访问,即使集群内部Service也无法转发。你可以检查控制器的启动参数,确认是否配置了--metrics-address=0.0.0.0:10254,确保metrics端口监听在所有网卡上。
  • 跨命名空间访问限制
    如果你的Ingress资源和metrics服务不在同一个命名空间,部分版本的Nginx Ingress Controller会默认禁止跨命名空间转发,你可以在Ingress的annotations中添加nginx.ingress.kubernetes.io/allow-cross-namespace: "true"开启权限。

修正后配置参考

确认服务名称正确后,可以使用如下配置:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /$2
    kubernetes.io/ingress.class: nginx-internal
    # 跨命名空间时开启下面的注解
    # nginx.ingress.kubernetes.io/allow-cross-namespace: "true"
  name: metrics-ingress
spec:
  rules:
  - host: dnsname.of.ingress.controller.com
    http:
      paths:
      - backend:
          service:
            # 替换为实际的metrics服务名称
            name: internal-controller-metrics
            port:
              number: 10254
        path: /metric(/|$)(.*)
        pathType: Prefix

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 06:27:04