kubernetes - Istio 中的分布式跟踪 - 应用程序不传播标头时的预期行为
问题描述
我的应用程序(托管在安装了 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 的行为以便我得到我需要的东西?
谢谢你。
解决方案
推荐阅读
- bash - -echoctl 在分叉程序中未被确认
- amazon-lex - Amazon Lex - 接收语音拼写的单词,我应该使用哪种插槽类型?
- c# - 来自字节数组 Sharpdx 的 Texture2d
- mfc - 在 MFC 中,在向导生成的 WindowProc 中,如何确定消息发送方窗口句柄?
- javascript - Javascript API 数据检索
- elasticsearch - ElasticSearch NEST 多重匹配返回所有结果
- .net - 如何使用 Azure SAML2 Auth 从 Asp.Net Core 重定向到 Microsoft 登录页面
- docker - 无法从 docker 图像执行 Bokeh export_png
- azure - 从启用了软删除的 Azure Key Vault 中清除机密
- powerbi - 在 DAX Power BI 中计算 3 个月没有空白值的移动平均线