为什么我的服务间流量显示在Kiali的直通群集中

时间:2020-05-06 10:43:25

标签: kubernetes istio kiali

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

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

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

1 个答案:

答案 0 :(得分:1)

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


启用 ALLOW_ANY 后,Istio使用名为SidethroughCluster的Envoy群集(由Sidecar代理强制实施)来监视出口流量。


看看kiali documentation

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

去往PassthroughCluster(或BlackHoleCluster)的请求是未路由到已定义的服务或服务条目的请求,而是最终到达这些内置Istio请求处理程序之一。有关更多信息,请参阅监视阻止的和通过的外部服务流量。

到这些节点的意外路由并不表示Kiali问题,您会看到Istio正在执行实际的路由。通常,这是由于配置错误和/或缺少Istio边车。网格出现实际问题的可能性较小,但可能是这样,例如同步问题或被驱逐的吊舱。

使用Kiali的“工作量”列表视图,以确保不会遗失辅助工具。使用Kiali的Istio Config列表视图查找任何配置验证错误。


还有example上的istiobyexample.dev

选项1-直通

首先,让我们使用带有默认ALLOW_ANY选项的Istio安装进行出口。这意味着无需其他配置即可允许idgen向httpbin发出的请求。启用ALLOW_ANY后,Istio将使用由idgen的sidecar代理实施的名为PassthroughCluster的Envoy群集来监视出口流量。

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

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

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

enter image description here

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

enter image description here


希望您觉得这有用。