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

主机向K8s中Jaeger Operator一体化实例发送追踪数据失败

问题分析与解决方案

Jaeger客户端访问Collector的核心机制

  • Jaeger客户端(此处为opentracing-spring-jaeger-cloud-starter实现)默认通过HTTP协议向Collector的14268端口上报追踪数据,固定上报路径为/api/traces
  • 客户端优先读取JAEGER_ENDPOINT环境变量或Spring配置jaeger.endpoint;若未配置,默认尝试连接本地localhost:14268
  • 集群内运行的服务可通过K8s Service的DNS解析直接访问Collector的集群内部地址,因此能正常上报

本地服务无法上报的原因及解决办法

1. 端口转发配置错误

确认端口转发命令将集群内Collector的14268端口映射到本地同端口:

kubectl port-forward service/jaeger-collector 14268:14268

注:若Jaeger Operator创建的Service名称不是jaeger-collector,需用kubectl get svc查询实际名称替换

2. Spring Boot客户端未明确配置上报端点

默认情况下客户端会连接localhost:14268,但需显式配置确保指向转发后的端口。在application.yml中添加:

opentracing:
  jaeger:
    endpoint: http://localhost:14268/api/traces

或设置环境变量:

JAEGER_ENDPOINT=http://localhost:14268/api/traces

3. Docker Desktop K8s网络隔离

Windows下Docker Desktop的K8s集群与本地主机存在网络隔离,可能导致端口转发失效:

  • 重启Docker Desktop的K8s集群
  • 检查防火墙是否拦截本地14268端口的请求
  • 用curl http://localhost:14268/api/traces测试连通性,返回405 Method Not Allowed为正常(该接口仅接受POST请求),若返回连接超时则说明网络或转发存在问题

4. 采样策略限制上报

默认采样策略可能设置为0(不采样),需临时配置100%采样率测试:

opentracing:
  jaeger:
    sampler:
      type: const
      param: 1

验证步骤

  1. 保持端口转发的终端窗口处于打开状态(关闭后转发停止)
  2. 配置好Jaeger端点与采样率后重启本地Spring Boot服务
  3. 调用Service-1的/path1接口,查看Jaeger UI是否出现追踪数据

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 09:50:16