如何在ISTIO的网格内调用服务?

时间:2019-12-16 17:01:54

标签: kubernetes istio

我正在使用安装在kubernetes顶部的服务网格https://istio.io/,并且已经安装了 ISTIO在其网站上提供的示例https://istio.io/docs/examples/bookinfo/

假设,我已经创建了一个服务 FOO ,并希望通过虚拟服务 ratings 调用该服务 ratings

enter image description here

  • 如何在 FOO 中调用评分?我必须到哪个地址 在 FOO 服务中提供http客户端以调用评级。做 我必须为评级创建虚拟服务吗? 评级应 在kubernetes cluser之外无法访问。

  • FOO 调用 ratings 时,请求将首先通过 自己的特使代理还是直接转到评级特使代理?

后续问题

以下是在kubernetes集群上安装的所有虚拟服务:

[{enter image description here 2

集群IP地址为:

enter image description here

问题是,如何在 FOO 服务中调用 ratings 服务?使用集群IP 地址?

3 个答案:

答案 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窗格。