我正在使用安装在kubernetes顶部的服务网格https://istio.io/,并且已经安装了 ISTIO在其网站上提供的示例https://istio.io/docs/examples/bookinfo/。
假设,我已经创建了一个服务 FOO ,并希望通过虚拟服务 ratings 调用该服务 ratings 。
如何在 FOO 中调用评分?我必须到哪个地址 在 FOO 服务中提供http客户端以调用评级。做 我必须为评级创建虚拟服务吗? 评级应 在kubernetes cluser之外无法访问。
当 FOO 调用 ratings 时,请求将首先通过 自己的特使代理还是直接转到评级特使代理?
后续问题
以下是在kubernetes集群上安装的所有虚拟服务:
[{ 2
集群IP地址为:
问题是,如何在 FOO 服务中调用 ratings 服务?使用集群IP 地址?
答案 0 :(得分:4)
如何在FOO中调用RATINGS?我必须在FOO服务中提供http客户端以调用RATINGS的地址。我必须为RATINGS创建虚拟服务吗?不能在kubernetes cluser之外访问RATINGS。
您仍然可以像不使用istio一样调用其他服务。由于只需要在集群内部访问该服务,因此您需要使用clusterIP service公开它。然后,您可以使用Kubernetes DNS按名称来调用服务。通常,该服务可从http(s)://{namespace}.{service-name}
获得。要在同一名称空间中调用服务,可以将{namespace}
排除在URL之外。
虽然不必创建虚拟服务it is advised by istio:
尽管默认的Istio行为可以方便地从 没有任何规则的目标服务所有版本的任何源 设置后,为每个服务器创建一个具有默认路由的VirtualService 从一开始就提供服务,通常被认为是最佳做法 在Istio中。
当FOO致电RATINGS时,请求将首先通过自己的特使代理还是直接转到RATINGS特使代理?
它将通过两个特使代理。 istio可以通过这种方式管理请求的路由并提供诸如跟踪之类的流量见解。
使用traffic.sidecar.istio.io/includeOutboundIPRanges annotation可以绕过出站特使代理。
答案 1 :(得分:0)
在虚拟服务的网关列表中使用“ mesh”关键字,服务间通信也将使用边车的这些规则,并实质上利用为特定服务配置的所有其他规则(例如重试)
答案 2 :(得分:-1)
我建议您使用Kubernetes DNS附加到具有Kubernetes service的BOO服务的selectors上,以便将您的流量重定向到BOO窗格。