我有两个 Istio 集群,它们使用运行 Kiali 的复制控制平面。在每个集群中,我有两个交互的应用程序,但我在 Kiali 仪表板中看不到它们之间的流量。相反,流量显示为通过直通集群。
应用程序使用 kubernetes 服务名称进行交互,并且它们交互正确,只是在 Kiali 中没有正确显示。
关于可能是什么问题的任何想法?或者这是一种预期的行为(我还是 Istio 的新手)。
我有两个 Istio 集群,它们使用运行 Kiali 的复制控制平面。在每个集群中,我有两个交互的应用程序,但我在 Kiali 仪表板中看不到它们之间的流量。相反,流量显示为通过直通集群。
应用程序使用 kubernetes 服务名称进行交互,并且它们交互正确,只是在 Kiali 中没有正确显示。
关于可能是什么问题的任何想法?或者这是一种预期的行为(我还是 Istio 的新手)。
据我所知,这是您使用 Passthrough 选项时的预期行为。检查下面的 istiobyexample 链接,它准确地显示了它是如何工作的。
启用ALLOW_ANY后, Istio使用名为 PassthroughCluster 的 Envoy 集群,由 sidecar 代理强制执行,以监控出口流量。
看看关于那个的 kiali文档
进入 PassthroughCluster(或 BlackHoleCluster)的请求是未路由到定义的服务或服务条目的请求,而是最终到达这些内置 Istio 请求处理程序之一。有关详细信息,请参阅监控被阻止和直通的外部服务流量。
到这些节点的意外路由并不表示 Kiali 问题,您看到的是 Istio 正在执行的实际路由。一般来说,这是由于配置错误和/或缺少 Istio sidecar。较少但可能是网格的实际问题,例如同步问题或被驱逐的 pod。
使用 Kiali 的工作负载列表视图来确保边车不丢失。使用 Kiali 的 Istio Config 列表视图来查找任何配置验证错误。
还有一个关于istiobyexample.dev的例子。
首先,让我们使用带有默认 ALLOW_ANY 选项的 Istio 安装。这意味着无需额外配置就允许 idgen 对 httpbin 的请求。启用 ALLOW_ANY 后,Istio 使用一个名为 PassthroughCluster 的 Envoy 集群,由 idgen 的 sidecar 代理强制执行,以监控出口流量。
Envoy 集群是一组后端(或“上游”)端点,代表一个外部服务。Istio sidecar Envoy 代理将过滤器应用于来自应用程序容器的拦截请求。基于这些过滤器,Envoy 将流量发送到特定路由。路由指定要向其发送流量的集群。
Istio Passthrough 集群设置为后端是原始请求目的地。因此,当为出口流量启用 ALLOW_ANY 时,Envoy 将简单地将 idgen 的请求“传递”到 httpbin。
有了这个配置,如果我们通过 IngressGateway 发送recipe ID 请求,idgen 就可以成功调用httpbin。此流量在 Kiali 服务图中显示为 PassthroughCluster 流量 - 我们需要添加一个 ServiceEntry 以便 httpbin 获得自己的服务级别遥测。(我们稍后会这样做。)
但是,如果我们在 Prometheus 中深入研究并找到 istio_total_requests 指标,我们可以看到 PassthroughCluster 流量将流向名为 httpbin.org 的目标服务。
希望您觉得这个有帮助。