跨集群配置 #
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。
此时进入SolarMesh的流量视图界面,您可以看到这样的一幅流量拓扑图。
接着我们在第二个集群中再次部署一套示例项目bookinfo,并且为它们接入sidecar。
如何接入业务集群请参考
快速开始/安装
进入SolarMesh的Services页面中,我们可以看到 cluster01、cluster02 分别都拥有一套示例项目bookinfo的服务。
现在进入在cluster02刚部署好的 reviews 服务中,可以看到当前的这个 reviews 服务业务范围是cluster02,也就是它所在的集群。
当我们想要让cluster01的 productpage 服务能够访问到cluster02的 reviews 服务时,我们需要扩展当前 reviews 服务的业务范围。
扩展完成之后,cluster01集群已经可以识别cluster02集群的 reviews 服务了。
让我们回到流量视图,选择cluster01、cluster02集群,可以看到2个集群的服务都展示在视图中,现在他们还没有产生联系。
打开cluster01的 reviews 服务的流量配置页面,输入host,可以看到系统已经在提示我们,目前有一个全局流量可以进行配置了。
我们将70%的流量配比到全局流量中,剩下的30%配置在当前集群的3个版本当中。
配置生效后,查看流量视图,发现cluster02集群的 reviews 服务已经接收到来自cluster01集群的 productpage 服务的请求了。
跨集群配置页面创建链路 #
进入SolarMesh的跨集群页面中,我们可以配置一条链路,声明这条链路上的流量是从某个集群出发,将要访问到目标集群的目标service。这里我们选择从cluster01出发,想要访问cluster02集群的 reviews 服务。
链路创建了之后,cluster01集群已经可以识别cluster02集群的 reviews 服务了。
让我们来到流量视图,选择cluster01、cluster02集群,可以看到2个集群的服务都展示在视图中,现在他们还没有产生联系。
打开cluster01的 reviews 服务的流量配置页面,输入host,可以看到系统已经在提示我们,目前有一个全局流量可以进行配置了。
我们将70%的流量配比到全局流量中,剩下的30%配置在当前集群的3个版本当中。
配置生效后,查看流量视图,发现cluster02集群的 reviews 服务已经接收到来自cluster01集群的 productpage 服务的请求了。