istio 如何将跟踪范围发送到 jaeger?

shi*_*zhz 6 zipkin kubernetes istio jaeger envoyproxy

我想将 istio 与 K8S 中现有的 jaeger 跟踪系统一起使用,我开始按照cassandra 作为后端存储的官方链接安装 jaeger 系统。然后通过helm way安装 istio ,但只启用了一些选定的组件:

helm upgrade istio -i install/kubernetes/helm/istio --namespace istio-system \   
--set security.enabled=true \   
--set ingress.enabled=false \   
--set gateways.istio-ingressgateway.enabled=true \   
--set gateways.istio-egressgateway.enabled=false \   
--set galley.enabled=false \   
--set sidecarInjectorWebhook.enabled=true \  
--set mixer.enabled=false \   
--set prometheus.enabled=false \
--set global.proxy.envoyStatsd.enabled=false \
--set pilot.sidecar=true \ 
--set tracing.enabled=false
Run Code Online (Sandbox Code Playgroud)

Jaeger 和 istio 安装在同一个 namespace istio-sytem,完成后,里面的所有 pods 长这样:

kubectl -n istio-system get pods                           
NAME            READY     STATUS    RESTARTS   AGE 
istio-citadel-5c9544c886-gr4db      1/1       Running   0          46m 
istio-ingressgateway-8488676c6b-zq2dz     1/1       Running   0        51m 
istio-pilot-987746df9-gwzxw               2/2       Running   1    51m 
istio-sidecar-injector-6bd4d9487c-q9zvk   1/1       Running   0    45m 
jaeger-collector-5cb88d449f-rrd7b         1/1       Running   0    59m 
jaeger-query-5b5948f586-gxtk7             1/1       Running   0    59m
Run Code Online (Sandbox Code Playgroud)

然后我按照链接将 bookinfo sample 部署到另一个 namespace istio-play,它有 label istio-injection=enabled,但无论我如何刷新productpage页面,都没有跟踪数据填充到 jaeger 中。

我想也许跟踪跨度是由混合器发送到 jaeger 的,就像 istio 做所有其他远程控制的东西一样,所以我-set mixer.enabled=true,但不幸的是只有一些服务像istio-mixeristio-telementry被显示。最后我把上面的安装都清理干净了,按照这个任务一步一步来,但是bookinfo app的tracing数据还是没有。

我的问题是:istio 如何将追踪数据发送给 jaeger?Sidecar 代理是否zipkin.istio-system:9411envoy 那样直接将其发送到 jaeger-collector( ) ,或者数据流像这样:sidecar-proxy -> mixer -> jaeger-collector?以及如何调试 istio 网格内各种组件之间的数据流?

感谢您提供任何帮助和信息:-)


更新:我通过在没有 helm: 的情况下安装 istio 再次尝试kubectl -n istio-system apply -f install/kubernetes/istio-demo.yaml,这次一切正常,kubectl way和之间一定有什么不同helm way

Vid*_*lli 4

根据我的经验和在线阅读,我在 Istio 中发现了这一有趣的行混合器常见问题解答中发现了这一有趣的行

\n\n
\n

Mixer 跟踪生成由命令行标志控制:trace_zipkin_url、trace_jaeger_url 和trace_log_spans。如果设置了任何这些标志值,跟踪数据将直接写入这些位置。如果未提供跟踪选项,Mixer 将不会生成任何应用程序级跟踪信息。

\n
\n\n

另外,如果您深入查看 Mixer Helm Chart,您会发现 Zipkin 和 Jaeger 的痕迹,表明它\xe2\x80\x99s 混音器正在将跟踪信息传递给 Jaeger。

\n\n

我也很困惑在其中一篇文章中阅读这一行

\n\n
\n

Istio 在运行应用程序容器的 pod 中注入 sidecar 代理 (Envoy)。此 sidecar 代理透明地拦截(iptables 魔法)所有进出应用程序的网络流量。由于这种拦截,sidecar 代理处于一个独特的位置,可以自动跟踪所有网络请求(HTTP/1.1、HTTP/2.0 和 gRPC)。

\n
\n\n

在 Istio 混合器文档中,Envoy sidecar 在每个请求执行前提条件检查之前以及每个报告遥测请求之后逻辑上调用 Mixer。sidecar 具有本地缓存​​,因此可以从缓存执行大部分前提条件检查。此外,sidecar 会缓冲传出的遥测数据,这样它就不会频繁调用 Mixer。

\n\n

更新:您可以启用跟踪来了解 Istio 中请求发生的情况以及混合器和特使的角色。在这里阅读更多信息

\n