不同部署/副本之间的K8s负载平衡

时间:2020-02-05 16:37:47

标签: docker kubernetes google-kubernetes-engine kubernetes-ingress

我们有一个基于地理位置的2个端点的系统。例如(east_url,west_url)。 我们的应用程序之一需要在这两个URL之间进行负载平衡。在使用者应用程序中,使用相同的映像但使用不同的环境变量(例如“ url = east_url”,“ url = west_url”)创建了2个部署。

部署后,我有以下正在运行的pod,它们每个都将带有标签:“ app = consumer-app”和“ region = east”或“ region = west”

  • consumer-east-pod-1
  • consumer-east-pod-2
  • consumer-west-pod-1
  • consumer-west-pod-2

当我使用选择器创建一个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

2 个答案:

答案 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