我有两个Istio集群,它们使用Kiali运行的复制控制平面。在每个集群中,我有两个交互的应用程序,但是在Kiali仪表板中看不到它们之间的流量。相反,流量显示为通过直通群集。
应用程序使用kubernetes服务名称进行交互,并且它们正在正确交互,只是在Kiali中无法正确显示。
关于可能是什么问题的任何想法?还是这是预期的行为(我还是Istio的新手)。
答案 0 :(得分:1)
据我所知,当您使用Passthrough选项时,这是预期的行为。检查下面的istiobyexample链接,该链接确切显示了它的工作方式。
启用 ALLOW_ANY 后,Istio使用名为SidethroughCluster的Envoy群集(由Sidecar代理强制实施)来监视出口流量。
看看kiali documentation
去往PassthroughCluster(或BlackHoleCluster)的请求是未路由到已定义的服务或服务条目的请求,而是最终到达这些内置Istio请求处理程序之一。有关更多信息,请参阅监视阻止的和通过的外部服务流量。
到这些节点的意外路由并不表示Kiali问题,您会看到Istio正在执行实际的路由。通常,这是由于配置错误和/或缺少Istio边车。网格出现实际问题的可能性较小,但可能是这样,例如同步问题或被驱逐的吊舱。
使用Kiali的“工作量”列表视图,以确保不会遗失辅助工具。使用Kiali的Istio Config列表视图查找任何配置验证错误。
还有example上的istiobyexample.dev。
首先,让我们使用带有默认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获得自己的服务级别遥测。 (我们稍后会做。)
但是,如果我们深入探查Prometheus,并找到istio_total_requests指标,则可以看到PassthroughCluster流量将流向名为httpbin.org的目的地服务。
希望您觉得这有用。