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

Kubernetes 如何在ISTIO中调用网格内的服务?,kubernetes,istio,Kubernetes,Istio,我正在使用安装在kubernetes上的service mesh,并且已经安装了 ISTIO在其网站上提供的示例 假设,我已经创建了一个服务FOO,并希望通过虚拟服务ratings调用该服务ratings 如何在FOO中调用评级?我要去哪个地址 在FOO服务中提供http客户端以调用评级。做 我必须为评级创建虚拟服务评级应该 在kubernetes cluser之外无法访问 当FOO调用评级时,请求是否首先通过 拥有特使代理,还是直接进入评级特使代理 后续问题 以下是kubernetes群

我正在使用安装在kubernetes上的service mesh,并且已经安装了 ISTIO在其网站上提供的示例

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

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

  • FOO调用评级时,请求是否首先通过 拥有特使代理,还是直接进入评级特使代理

后续问题

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

[

群集IP地址为:


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

如何调用FOO中的ratings?我必须在FOO服务中提供http客户端来调用ratings。我必须为ratings创建虚拟服务吗?ratings应该无法在kubernetes cluser之外访问。

您仍然可以使用与不使用istio相同的方式调用其他服务。由于该服务只需要在集群内可访问,因此您需要使用公开它。然后,您可以使用按名称调用该服务。通常,该服务在http(s)://{service name}上可用。要调用同一命名空间中的服务,可以将
{namespace}
保留在url之外

虽然没有必要创建VirtualService,但:

虽然默认的Istio行为方便地从 任何源到目标服务的所有版本,无需任何规则 设置后,创建一个VirtualService,为每个 服务从一开始就被认为是最佳实践 在伊斯蒂奥

当FOO调用RATINGS时,请求将首先通过自己的特使代理还是直接发送到RATINGS特使代理?

它将通过两个特使代理。这就是istio如何管理您请求的路由,并提供跟踪等流量信息


但是可以绕过出站特使代理,使用。

我建议使用连接到具有for BOO服务的的,以便将您的流量重定向到BOO pods。

使用“mesh”关键字在虚拟服务的网关列表中,服务间通信还将在侧车上使用这些规则,并基本上利用为特定服务配置的所有附加规则(如重试)

我改变了我的问题。我添加了一些关于Kubernetes DNS的更多信息。但是我想通过
VirtualService
调用评级服务,然后我必须使用
ClusterIP
而不是
服务名称
?不,服务名称在为其创建
VirtualService
时仍然有效。您的服务不需要知道istio已部署。但我想通过
VirtualService
调用
Ratings
服务。如何操作?