我的应用程序(托管在安装了 Istio 的 Kubernetes 集群中)不传播分布式跟踪标头(如此处所述)。我的期望是 istio-proxy 仍应生成在 Jaeger 中可见的跟踪(由单个调用组成),即使整个调用链当然不会缝合在一起。但是,情况似乎并非如此,因为我在 Jaeger 中没有看到对我的应用程序的任何调用。
为了解决问题,我尝试了以下方法:
- istio-proxy 容器部署为我的应用程序容器的侧车的日志看起来不错,我可以看到 Envoy 注册的应用程序的传入请求:
kubectl logs -f helloworld-69b7f5b6f8-chp9n -c istio-proxy
[2019-01-29T21:29:18.925Z] - 444 289 45 "127.0.0.1:80" inbound|81||helloworld.default.svc.cluster.local 127.0.0.1:45930 10.244.0.54:80 10.244.0.1:33733
[2019-01-29T21:29:29.922Z] - 444 289 25065 "127.0.0.1:80" inbound|81||helloworld.default.svc.cluster.local 127.0.0.1:46014 10.244.0.54:80 10.240.0.5:56166
[2019-01-29T21:30:05.922Z] - 444 289 15051 "127.0.0.1:80" inbound|81||helloworld.default.svc.cluster.local 127.0.0.1:46240 10.244.0.54:80 10.240.0.6:48053
[2019-01-29T21:30:31.922Z] - 444 289 36 "127.0.0.1:80" inbound|81||helloworld.default.svc.cluster.local 127.0.0.1:46392 10.244.0.54:80 10.240.0.6:47009
我在 Mixer 的配置中启用了跟踪,现在我可以在 Jaeger UI 中看到 Mixer 的活动(但仍然没有调用我的应用程序的痕迹)。
我是 Istio 的新手,看来我已经没有选择的余地了。
首先,我的预期是否正确?当应用程序不传播分布式跟踪标头时,我是否应该在 Jaeger UI 中看到跟踪 - 每个都由一个调用组成?
如果我的预期是正确的,我该如何进一步排除故障?我能否以某种方式验证 Envoy 配置并检查它是否确实将数据跟踪到 Mixer?
如果我的期望不正确,是否可以覆盖 Istio 的行为以便我得到我需要的东西?
谢谢你。