我想在 K8S 中将 istio 与现有的 jaeger 跟踪系统一起使用,我开始按照官方链接安装 jaeger 系统,并使用 cassandra 作为后端存储。然后通过helm 方式安装 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
,完成后,它里面的所有 pod 都是这样的:
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
然后我按照链接将 bookinfo 示例部署到另一个istio-play
具有 label的名称空间中istio-injection=enabled
,但是无论我如何刷新productpage
页面,都没有将跟踪数据填充到 jaeger 中。
我想也许跟踪跨度是由混合器发送到 jaeger 的,就像 istio 做所有其他遥测东西的方式一样,所以我-set mixer.enabled=true
,但不幸的是,只有一些服务像istio-mixer
oristio-telementry
被显示。最后我清理了上面所有的安装并一步一步地完成了这个任务,但是 bookinfo 应用程序的跟踪数据仍然没有。
我的问题是:istio 究竟是如何向 jaeger 发送跟踪数据的?Sidecar 代理是否像envoy 那样直接将其发送到 jaeger-collector( zipkin.istio-system:9411
) ,或者数据流如下:?我如何调试 istio 网格内各种组件之间的数据流?sidecar-proxy -> mixer -> jaeger-collector
感谢您的帮助和信息:-)
更新:我再次尝试安装不带 helm 的 istio:,这次一切正常,和kubectl -n istio-system apply -f install/kubernetes/istio-demo.yaml
之间一定有不同。kubectl way
helm way