【问题标题】:How to call the services within a mesh in ISTIO?如何在 ISTIO 中调用网格内的服务?
【发布时间】:2020-04-09 04:26:25
【问题描述】:

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

假设,我创建了一个服务 FOO,并想通过虚拟服务 ratings 调用服务 ratings。

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

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

跟进问题

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

[2

集群IP地址为:

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

【问题讨论】:

    标签: kubernetes istio


    【解决方案1】:

    如何在 FOO 中调用 RATINGS?我必须在FOO服务中提供哪个地址才能调用RATINGS。我必须为 RATINGS 创建虚拟服务吗? RATINGS 不应在 kubernetes 集群之外访问。

    您仍然可以像没有 istio 时一样调用其他服务。由于该服务只需要在集群内可访问,因此您需要使用clusterIP service 公开它。然后,您可以使用Kubernetes DNS 按名称调用服务。一般情况下,该服务可通过http(s)://{namespace}.{service-name} 获得。要调用同一命名空间中的服务,您可以将{namespace} 留在url 之外。

    虽然不需要创建 VirtualService,it is advised by istio:

    虽然默认的 Istio 行为方便地从 目标服务的所有版本的任何源,没有任何规则 被设置,为每个虚拟服务创建一个默认路由 服务从一开始就被认为是最佳实践 在 Istio 中。

    当 FOO 调用 RATINGS 时,请求是先通过自己的 envoy 代理还是直接通过 RATINGS envoy 代理?

    它将通过两个特使代理。这就是 istio 如何管理您的请求路由并提供流量洞察(如跟踪)的方式。

    但可以使用 traffic.sidecar.istio.io/includeOutboundIPRanges annotation 绕过出站特使代理。

    【讨论】:

    • 我已经改变了我的问题。
    • 我添加了一些关于 Kubernetes DNS 的更多信息。
    • 但是我想通过VirtualService调用收视率服务,那么我必须使用ClusterIP而不是service-name?
    • 不,服务名称在为其创建 VirtualService 时应该仍然有效。您的服务不需要知道已经部署了 istio。
    • 但是我想通过VirtualService调用Ratings服务。怎么办?
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      我建议使用 Kubernetes DNS 附加到具有 selectors 的 Kubernetes service 用于 BOO 服务,以便将您的流量重定向到 BOO pod。

      【讨论】:

        猜你喜欢
        • 2020-01-09
        • 1970-01-01
        • 2021-11-14
        • 2023-03-03
        • 1970-01-01
        • 2020-10-07
        • 2019-08-26
        • 2021-03-15
        • 1970-01-01
        相关资源
        最近更新 更多