Passthroughcluster

跨集群配置 (不支持 v1.7.1 以上版本) #

SolarMesh在默认的情况下各个集群之间是不允许通信的,但涉及到必要的跨集群调度需求时,需要用户经过一个简单的配置,打通一条链路允许跨集群流量的产生。

服务配置业务范围 #

实现跨集群链路有2种方式。

  • 在服务配置中扩大业务范围,允许其他集群的服务发现自己。
  • 在统一的跨集群配置页面创建一条链路允许跨集群流量的产生。

在 kubernetes 中,一个 service 会被集群内的其他 service 所识别,那么 service 的范围就是当前集群内,它的host全称是 <service name>.<namespace>.svc.cluster.local

如果扩大它的范围,使其能够被其他集群所识别,那么在其他集群中,它的host将会变成 <service name>.<namespace>.global

在SolarMesh中,您可以在页面上直接扩展它。

试试看 #

假设我们已经部署过bookinfo示例项目(见 快速开始/安装/使用solarctl安装示例项目),并且为bookinfo示例项目的服务接入了sidecar(见 快速开始/接管服务)

访问我们事先部署好的示例项目bookinfo的页面,多刷新几次,您会发现在没有任何策略干预的情况下,页面中 Book Reviews 一栏呈现三种状态: 红星、黑星和无星,它们的出现概率约为1:1:1。

bookinfo-productpage

此时进入SolarMesh的流量视图界面,您可以看到这样的一幅流量拓扑图。

流量视图

接着我们在第二个集群中再次部署一套示例项目bookinfo,并且为它们接入sidecar。

如何接入业务集群请参考 快速开始/安装

进入SolarMesh的Services页面中,我们可以看到 cluster01、cluster02 分别都拥有一套示例项目bookinfo的服务。

services

现在进入在cluster02刚部署好的 reviews 服务中,可以看到当前的这个 reviews 服务业务范围是cluster02,也就是它所在的集群。

reviews-cluster02

当我们想要让cluster01的 productpage 服务能够访问到cluster02的 reviews 服务时,我们需要扩展当前 reviews 服务的业务范围。

reviews-cluster02-业务范围

扩展完成之后,cluster01集群已经可以识别cluster02集群的 reviews 服务了。

reviews-cluster02-业务范围1

让我们回到流量视图,选择cluster01、cluster02集群,可以看到2个集群的服务都展示在视图中,现在他们还没有产生联系。

流量视图-多集群1

打开cluster01的 reviews 服务的流量配置页面,输入host,可以看到系统已经在提示我们,目前有一个全局流量可以进行配置了。

流量视图-多集群-reviews配置

我们将70%的流量配比到全局流量中,剩下的30%配置在当前集群的3个版本当中。

流量视图-多集群-reviews配置1

配置生效后,查看流量视图,发现cluster02集群的 reviews 服务已经接收到来自cluster01集群的 productpage 服务的请求了。

流量视图-多集群2

跨集群配置页面创建链路 #

进入SolarMesh的跨集群页面中,我们可以配置一条链路,声明这条链路上的流量是从某个集群出发,将要访问到目标集群的目标service。这里我们选择从cluster01出发,想要访问cluster02集群的 reviews 服务。

跨集群配置-配置

链路创建了之后,cluster01集群已经可以识别cluster02集群的 reviews 服务了。

让我们来到流量视图,选择cluster01、cluster02集群,可以看到2个集群的服务都展示在视图中,现在他们还没有产生联系。

流量视图-多集群1

打开cluster01的 reviews 服务的流量配置页面,输入host,可以看到系统已经在提示我们,目前有一个全局流量可以进行配置了。

流量视图-多集群-reviews配置

我们将70%的流量配比到全局流量中,剩下的30%配置在当前集群的3个版本当中。

流量视图-多集群-reviews配置1

配置生效后,查看流量视图,发现cluster02集群的 reviews 服务已经接收到来自cluster01集群的 productpage 服务的请求了。

流量视图-多集群2