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

在Kubernetes非根URL部署Jaeger遇Nginx 502错误求助

解决Jaeger非根URL访问的502 Bad Gateway问题

以下是排查和解决步骤:

1. 先验证集群内Jaeger服务的可达性

502通常意味着Ingress无法连接到后端服务,先确认Jaeger服务在集群内部能正常访问:

  • 启动一个临时测试Pod:
    kubectl run -it --rm busybox --image=busybox:1.36 --namespace=my-namespace
    
  • 在Pod内执行curl命令测试:
    curl -v http://jaeger:16868
    
    如果返回200和Jaeger UI的页面内容,说明服务本身没问题;如果返回连接失败/超时,检查:
    • Jaeger Pod是否正常运行(kubectl get pods -n my-namespace)
    • Service的selector是否匹配Pod的labels(kubectl describe service jaeger -n my-namespace对比Pod的labels)
    • Pod的端口是否正确暴露(Jaeger UI默认端口16868,确认Pod的containerPort配置)

2. 调整Jaeger的base path配置

仅设置QUERY_BASE_PATH不够,Jaeger UI和查询API需要统一的路径前缀,需同时配置两个环境变量:

# 在Jaeger Deployment的containers.env中添加
env:
  - name: QUERY_BASE_PATH
    value: "/xyz/jaeger"
  - name: JAEGER_UI_BASE_PATH
    value: "/xyz/jaeger"

这会让Jaeger的UI和API都以/xyz/jaeger作为路径前缀提供服务。

3. 修正Ingress的rewrite规则

当前的rewrite规则会把/xyz/jaeger开头的请求转发到后端的根路径,但Jaeger已经配置了前缀,需要调整rewrite规则让请求路径完整传递:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: my-ingress
  namespace: my-namespace
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /xyz/jaeger/$2
spec:
  rules:
    - host: somedomain.com
      http:
        paths:
          - path: /xyz/jaeger(/|$)(.*)
            pathType: Prefix
            backend:
              service: 
                name: jaeger
                port: 
                  number: 16868

或者更简洁的写法:

# 替换path和rewrite-target
annotations:
  nginx.ingress.kubernetes.io/rewrite-target: /$1
rules:
  - host: somedomain.com
    http:
      paths:
        - path: /xyz/jaeger/(.*)
          pathType: Prefix
          backend:
            service: 
              name: jaeger
              port: 
                number: 16868

这样访问https://somedomain.com/xyz/jaeger/search会被转发到http://jaeger:16868/search,匹配Jaeger配置的前缀路径。

4. 查看Ingress Controller日志定位细节

如果以上步骤仍未解决,查看Nginx Ingress Controller的日志,获取具体错误信息:

# 替换为你的Ingress Controller所在命名空间和Pod名
kubectl logs -n ingress-nginx nginx-ingress-controller-xxxxxx-xxxxx -f

日志中会显示连接后端服务的具体错误(比如连接被拒绝、超时、DNS解析失败等),进一步定位问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 21:00:48