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

Traefik Ingress 后端无法访问 Jaeger UI 的问题排查求助

诊断与修复Jaeger UI无法通过Ingress访问的问题

从你提供的信息来看,问题主要出在Ingress配置的注解混用和路径重写规则错误上,另外还有Ingress控制器的匹配问题,具体分析和修复步骤如下:

1. 修正Ingress控制器的Class匹配

从你提供的ingress-nginx服务状态可以看到,集群中实际运行的是nginx-ingress控制器,但你的Ingress配置里指定了kubernetes.io/ingress.class: traefik,这会导致nginx-ingress控制器忽略这个Ingress规则,请求无法转发到Jaeger服务,最终被myhost.com的默认站点处理,所以跳转到了其他网站。

修复:把Ingress的class改成nginx:

kubernetes.io/ingress.class: nginx

2. 清理冲突的注解

你同时添加了nginx和traefik的混合注解,比如nginx.ingress.kubernetes.io/rewrite-target: /是nginx-ingress的注解,但之前的class是traefik,这完全冲突了。另外,ingress.kubernetes.io/auth-type这类是旧版Ingress的注解,nginx-ingress的认证注解应该用nginx.ingress.kubernetes.io/auth-type,所以需要统一注解:

annotations:
  kubernetes.io/ingress.class: nginx
  # 修正路径重写规则(见下一点)
  nginx.ingress.kubernetes.io/rewrite-target: /$2
  nginx.ingress.kubernetes.io/auth-type: basic
  nginx.ingress.kubernetes.io/auth-secret: my-auth-secret

3. 修复路径重写规则

Jaeger UI的所有静态资源(CSS、JS、图标)都是基于根路径/加载的,如果直接把/jaeger重写到/,浏览器会尝试从myhost.com/而不是myhost.com/jaeger/加载这些资源,同时也会导致页面跳转异常。

需要调整路径规则,用正则匹配来保留子路径:

rules:
- host: myhost.com
  http:
    paths:
    - path: /jaeger(/|$)(.*)
      pathType: ImplementationSpecific
      backend:
        service:
          name: jaeger-query
          port:
            number: 80

这个规则会把/jaeger/xxx重写成/xxx,让Jaeger服务能正确处理请求,同时浏览器加载资源时的路径也会被正确转发。

4. 验证Ingress配置生效

修改完Ingress配置后,应用更新:

kubectl apply -f your-ingress-file.yaml -n monitoring

然后查看Ingress的状态,确认是否绑定到了nginx-ingress控制器:

kubectl get ingress jaegerquery-ingress -n monitoring

检查ADDRESS字段是否显示nginx-ingress的外部IP(17.168.1.181),如果显示正常,说明Ingress规则已经被控制器识别。

额外验证点

  • 确认myhost.com的DNS解析指向了nginx-ingress的外部IP(17.168.1.181),可以在本地PC用ping myhost.com测试。
  • 检查jaeger-query服务是否正常运行:kubectl get pods -n monitoring | grep jaeger-query,确保Pod处于Running状态。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 14:22:32