我们有一个基于地理位置的2个端点的系统。例如(east_url,west_url)。 我们的应用程序之一需要在这两个URL之间进行负载平衡。在使用者应用程序中,使用相同的映像但使用不同的环境变量(例如“ url = east_url”,“ url = west_url”)创建了2个部署。
部署后,我有以下正在运行的pod,它们每个都将带有标签:“ app = consumer-app”和“ region = east”或“ region = west”
当我使用选择器创建一个clusterIP服务:app = consumer-app时,它不知何故只能选择一个副本集。我很好奇,是否真的有可能在kubernates中允许不同部署备份Service?
我可以想到的另一种方法是创建2个服务,并使用入口控制器对其进行负载平衡,这可能吗?我们正在使用Kong作为入口控制器。我正在寻找像openshift这样的东西,它可以有“ alternativeBackends”来服务于路线。 https://docs.openshift.com/container-platform/4.1/applications/deployments/route-based-deployment-strategies.html
答案 0 :(得分:1)
在添加app:consumerAPP之后,我没有了东副本集的标签,现在可以正常使用了。 谢谢
答案 1 :(得分:0)
TL ; DR :使用 ISTIO
使用ISTIO,您可以创建Virtual Services:
VirtualService 定义了一组流量路由规则,这些规则将在以下情况下应用 主机已解决。每个路由规则都定义了以下匹配条件 特定协议的流量。如果流量匹配,则为 发送到已定义的命名目标服务(或其子集/版本) 在注册表中。
VirtualService允许您根据URI将流量发送到不同的后端。
现在,如果您打算执行类似 A / B TEST 的操作,则可以使用ISTIO(目标规则):[https://istio.io/docs/reference/config/networking/destination-rule/]。
DestinationRule (定义规则)定义了适用于针对 路由发生后的服务。
特定于版本的策略可以通过定义命名子集来指定 并覆盖服务级别上指定的设置
1.--如果您使用的是GKE,则可以在here中找到安装ISTIO的过程
2.-如果使用的是在虚拟机上运行的K8,则可以找到安装过程here