【发布时间】:2019-03-21 13:43:59
【问题描述】:
假设我有两个部署,其中包含两个后端应用程序实例。 (而不是一个部署有多个副本,因为它们需要进行不同的配置)。
你们如何处理两者之间的负载平衡?经典的方法是使用两个后端设置 HAProxy。这在 Kubernetes 的环境中听起来正确吗?有没有更好的方法在单个 Ingress Controller 资源上公开两个部署?
【问题讨论】:
假设我有两个部署,其中包含两个后端应用程序实例。 (而不是一个部署有多个副本,因为它们需要进行不同的配置)。
你们如何处理两者之间的负载平衡?经典的方法是使用两个后端设置 HAProxy。这在 Kubernetes 的环境中听起来正确吗?有没有更好的方法在单个 Ingress Controller 资源上公开两个部署?
【问题讨论】:
您可以定义由labels selectors 确定的Service。对服务的请求将分布在各个部署中(与入口相同)
例子:
apiVersion: v1
kind: Service
metadata:
labels:
app: my-deployments
spec:
ports:
- port: 80
selector:
app: my-deployments
【讨论】:
理想情况下,您应该运行一个具有多个副本的部署。定义选择后端 pod 的服务对象。服务对象以循环方式自动对后端 pod 进行负载平衡。
如果您想对多个部署对象进行负载平衡,请分别为部署服务 A 和服务 B 定义一项服务。您应该运行 ha-proxy 负载平衡 ServiceA 和 serviceB 之间的流量。
我们建议您选择第一种方法,除非您有充分的理由考虑第二种方法
【讨论】: