在 Service Mesh 中使用 Instrumentation CR

当你在 Service Mesh 中使用 Instrumentation 自定义资源(CR)时,所需的传播器取决于 Istio 中配置的 tracing 协议。

Istio 利用 Envoy 的分布式 tracing 能力,开箱即用地提供 tracing 集成。如今,大多数 tracing 后端都接受 OpenTelemetry 协议来接收 trace,不过 Istio 也支持诸如 Zipkin 之类的旧版 tracing 协议。

Istio 使用 OpenTelemetry 协议

如果 Istio 配置为使用 OpenTelemetry 协议导出 trace,则无需在 Instrumentation CR 中额外更改传播器。默认的传播器设置将继续按预期工作。

Istio 使用 Zipkin 协议

如果 Istio 配置为使用 Zipkin 协议导出 trace,则必须在 Instrumentation 资源中配置 b3multi 传播器,以便 trace 上下文能够在整个 mesh 中正确传播。

apiVersion: opentelemetry.io/v1alpha1
kind: Instrumentation
metadata:
  name: my-instrumentation
spec:
  ...
  propagators:
    - tracecontext
    - baggage
    - b3multi
  1. 当 Istio 使用 Zipkin 协议进行 trace 传播时,请配置 b3multi