通过入口控制器访问服务时,x-b3采样的标头始终设置为0

问题描述

我已经安装了带有演示配置文件的Kubernetes 1.17.5和Istio 1.6.8。

这是我的测试设置[nginx-ingress-controller]-> [proxy ServiceA]-> [proxy ServiceB]

  • serviceA和serviceB的代理由Istio自动注入(istio-injection = enabled)
  • Nginx入口控制器未启用跟踪,也没有作为特派员的特使代理
  • ServiceA将跟踪标头向下传递到ServiceB
  • 我正在尝试跟踪从ServiceA到ServiceB的呼叫,暂时不关心Ingress-> ServiceA跨度

当我向入口控制器发送请求时,我可以看到ServiceA从代理接收了所有必需的跟踪标头

x-b3-traceid: d9bab9b4cdc8d0a7772e27bb7d15332f
x-request-id: 60e82827a270070cfbda38c6f30f478a
x-envoy-internal: true
x-b3-spanid: 772e27bb7d15332f
x-b3-sampled: 0
x-forwarded-proto: http

问题被 x-b3采样始终设置为0,并且没有跨度/迹线被推入Jaeger

我尝试过的几件事

  1. 我已将网关和VirtualService添加到ServiceA,以通过Istio ingressgateway公开它。当我通过Ingressgateway发送流量时,一切正常。我可以在JaegerUI中看到[ingress-gateway]-> [ServiceA]-> [ServiceB]的痕迹
  2. 我还尝试使用自定义配置安装Istio,并在不碰运气的情况下使用跟踪相关参数。

这是我尝试使用的配置

apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
  meshConfig:
    enableTracing: true
    defaultConfig:
      tracing:
        sampling: 100
  addonComponents:
    tracing:
      enabled: true
    grafana:
      enabled: false
    istiocoredns:
      enabled: false
    kiali:
      enabled: false
    prometheus:
      enabled: false
  values:
    tracing:
      enabled: true
    pilot:
      traceSampling: 100

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)