3. Jaeger 部署模式:All-in-one vs 生产级 Kubernetes 部署,选型对比

Jaeger 提供两种主流的部署模式:All-in-one 和 生产级 Kubernetes 部署。前者适用于本地开发与快速验证,后者则面向生产环境的高可用与大规模链路采集。本节将从架构、组件、资源消耗、可观测性 SLI 支撑能力等维度进行系统性对比。

3.1 All-in-one 模式:快速原型验证

All-in-one 将 Jaeger 的所有核心组件(Agent、Collector、Query、UI、Storage)打包在同一个二进制或容器进程中,默认使用内存存储。这种模式启动简单,适合开发者在笔记本或测试环境快速体验链路追踪。

适用场景:本地开发调试、功能验证、Demo 演示、小规模单机测试(trace 量 < 1000 spans/s)。

3.1.1 组件架构

All-in-one 单进程架构 应用服务 Jaeger Agent All-in-one 进程 Collector Query UI 内存存储 用户浏览器 ⚠ 所有组件共享同一进程,内存存储重启即丢失数据,不适合生产持久化。 默认端口:16686 (UI) / 14250 (gRPC) / 6831 (UDP Agent)。

3.1.2 启动方式

# Docker 单行启动
docker run -d --name jaeger \
  -p 16686:16686 \
  -p 14250:14250 \
  -p 6831:6831/udp \
  jaegertracing/all-in-one:1.60
快速验证技巧:启动后访问 http://localhost:16686 即可打开 Jaeger UI,配合 OpenTelemetry SDK 发送一条 trace 即可验证链路是否完整。

3.2 生产级 Kubernetes 部署:高可用与弹性

生产环境需要将 Jaeger 组件解耦为独立微服务,部署在 Kubernetes 集群中,支持水平扩展、持久化存储、多租户隔离与故障自愈。通常使用 Jaeger Operator 或 OpenTelemetry Collector 作为采集层。

关键差异:生产部署必须分离 Collector 与 Storage,避免单点故障;Agent 以 DaemonSet 形式运行在每个节点上,或通过 Sidecar 注入。

3.2.1 组件架构

生产级 Kubernetes 部署架构 应用 Pod (Sidecar Agent) Jaeger Agent 应用 Pod (Sidecar Agent) Jaeger Agent Collector 集群 Deployment (3副本) HPA 自动扩缩 存储后端 Elasticsearch 或 Cassandra Query + UI Deployment (2副本) 用户 / 运维人员 🔑 关键特性: • Collector 无状态,支持 HPA • 存储持久化,支持数据保留策略 • Agent 以 DaemonSet/Sidecar 部署

3.3 选型对比表

对比维度 All-in-one 生产级 Kubernetes 部署
部署复杂度 极低,单容器启动 较高,需 Operator / Helm Chart
组件隔离 单进程,无隔离 独立微服务,故障隔离
存储持久化 内存存储,重启丢失 Elasticsearch / Cassandra / S3
水平扩展 不支持 Collector / Query 支持 HPA
采集吞吐 < 1000 spans/s 10万+ spans/s(可调)
高可用 无,单点故障 多副本 + 健康检查 + 自动恢复
数据保留策略 无 支持 TTL、索引生命周期管理
多租户隔离 不支持 支持 / 命名空间隔离
SLI 可观测性 基础,仅 Jaeger 自身指标 完整:采集延迟、存储写入速率、查询 P99 延迟
运维成本 几乎为零 需维护存储集群、监控 Collector 健康

3.4 生产部署关键配置建议

  • Agent 部署模式:推荐使用 DaemonSet 在每个节点部署一个 Agent,减少 Sidecar 资源开销;对于需要独立采集配置的命名空间,可使用 Sidecar 注入。
  • Collector 副本数:至少 2 副本,根据每秒 span 数配置 HPA 阈值(例如 CPU > 70% 或每秒 span > 5000)。
  • 存储选型:Elasticsearch 适合中等规模(TB 级),Cassandra 适合超大规模写入;避免使用内存存储。
  • 采样策略:生产环境必须配置概率采样或自适应采样,避免全量采集导致存储爆炸。
SLI 口径优化关联:生产级部署模式下,Collector 暴露 jaeger_collector_spans_received_total、jaeger_collector_spans_saved_total、jaeger_query_latency_seconds 等指标,可直接用于构建基础设施 SLI 看板。All-in-one 模式不提供这些细粒度指标,无法支撑 SLI 口径优化。

3.5 选型决策树

Jaeger 部署模式选型决策 是否生产环境? 否 → All-in-one 本地开发 / 功能验证 是 → 生产级部署 Kubernetes + 持久化存储 💡 如果团队刚开始接触 Jaeger,建议先用 All-in-one 验证链路完整性, 再迁移到生产级部署。不要在生产环境使用 All-in-one 模式。

3.6 小结