gpt4 book ai didi

kubernetes - istio 如何将跟踪跨度发送到 jaeger?

转载 作者:行者123 更新时间:2023-12-01 01:43:48 28 4
gpt4 key购买 nike

我想将 istio 与 K8S 中现有的 jaeger 跟踪系统一起使用,我开始按照 the official link 安装 jaeger 系统。使用 cassandra 作为后端存储。然后通过 the 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

Jaeger 和 istio 安装在同一个命名空间 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

然后我关注了 the link将 bookinfo 示例部署到另一个命名空间 istio-play ,其中有标签 istio-injection=enabled ,但无论我如何冲洗 productpage页面,没有追踪数据填入jaeger。

我想也许跟踪跨度是由混合器发送到 jaeger 的,就像 istio 执行所有其他远程控制的方式一样,所以我 -set mixer.enabled=true ,但不幸的是只有一些服务,如 istio-mixeristio-telementry显示。最后我清理了所有上述安装并关注 this task一步一步来,但是bookinfo app的追踪数据还是没有。

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

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

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

最佳答案

根据我的经验和在线阅读,我在 Istio mixer faq 中发现了这条有趣的线路

Mixer trace generation is controlled by command-line flags: trace_zipkin_url, trace_jaeger_url, and trace_log_spans. If any of those flag values are set, trace data will be written directly to those locations. If no tracing options are provided, Mixer will not generate any application-level trace information.



另外,如果你深入混音器 helm chart ,您会发现 Zipkin 和 Jaeger 的痕迹,这表明它是将跟踪信息传递给 Jaeger 的混合器。

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

Istio injects a sidecar proxy (Envoy) in the pod in which your application container is running. This sidecar proxy transparently intercepts (iptables magic) all network traffic going in and out of your application. Because of this interception, the sidecar proxy is in a unique position to automatically trace all network requests (HTTP/1.1, HTTP/2.0 & gRPC).



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

更新:您可以启用跟踪以了解 Istio 中的请求发生了什么,以及混合器和特使的角色。阅读更多信息 here

关于kubernetes - istio 如何将跟踪跨度发送到 jaeger?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53459759/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com