【问题标题】:Why is my inter-service traffic showing in the Passthrough Cluster in Kiali为什么我的服务间流量显示在 Kiali 的 Passthrough 集群中
【发布时间】:2020-08-21 07:06:00
【问题描述】:

我有两个使用复制控制平面并运行 Kiali 的 Istio 集群。在每个集群中,我有两个交互的应用程序,但我在 Kiali 仪表板中看不到它们之间的流量。相反,流量显示为通过直通集群。

应用程序使用 kubernetes 服务名称进行交互,并且它们交互正确,只是在 Kiali 中显示不正确。

关于可能是什么问题的任何想法?或者这是一种预期的行为(我还是 Istio 的新手)。

【问题讨论】:

    标签: kubernetes istio kiali


    【解决方案1】:

    据我所知,这是您使用 Passthrough 选项时的预期行为。检查下面的 istiobyexample 链接,它显示了它是如何工作的。


    启用 ALLOW_ANY 后,Istio 使用名为 PassthroughCluster 的 Envoy 集群,由 Sidecar 代理强制执行,以监控出口流量。


    看看 kiali documentation 关于那个

    为什么我会看到 PassthroughCluster 的流量?

    发送到 PassthroughCluster(或 BlackHoleCluster)的请求是未路由到定义的服务或服务条目的请求,而是最终到达这些内置 Istio 请求处理程序之一。有关详细信息,请参阅监控被阻止和直通的外部服务流量。

    到这些节点的意外路由并不表示 Kiali 问题,您看到的是 Istio 正在执行的实际路由。一般来说,这是由于配置错误和/或缺少 Istio sidecar。较少但可能是网格的实际问题,例如同步问题或被驱逐的 pod。

    使用 Kiali 的工作负载列表视图确保边车不丢失。使用 Kiali 的 Istio Config 列表视图查找任何配置验证错误。


    还有一个example istiobyexample.dev

    选项 1 - 直通

    首先,让我们使用带有默认 ALLOW_ANY 选项的 Istio 安装。这意味着无需额外配置就允许 idgen 对 httpbin 的请求。启用 ALLOW_ANY 后,Istio 使用名为 PassthroughCluster 的 Envoy 集群,由 idgen 的 sidecar 代理强制执行,以监控出口流量。

    Envoy 集群是一组后端(或“上游”)端点,代表一个外部服务。 Istio sidecar Envoy 代理将过滤器应用于来自应用程序容器的拦截请求。基于这些过滤器,Envoy 将流量发送到特定路由。并且路由指定要向其发送流量的集群。

    Istio Passthrough 集群设置为后端为original request destination。因此,当为出口流量启用 ALLOW_ANY 时,Envoy 将简单地将 idgen 的请求“传递”到 httpbin。

    通过这个配置,如果我们通过IngressGateway发送recipe ID请求,idgen就可以成功调用httpbin。此流量在 Kiali 服务图中显示为 PassthroughCluster 流量 - 我们需要添加一个 ServiceEntry 以便 httpbin 获得自己的服务级别遥测。 (我们稍后会这样做。)

    但如果我们深入到 Prometheus 并找到 istio_total_requests 指标,我们可以看到 PassthroughCluster 流量将流向名为 httpbin.org 的目标服务。


    希望你觉得这很有用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-12
      • 2020-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-17
      • 2019-07-15
      • 2013-09-20
      相关资源
      最近更新 更多