负载均衡 Kubernetes 中的应用程序

Load Balancing an application in Kubernetes

假设我有两个部署,其中包含后端应用程序的两个实例。 (而不是让一个部署有多个副本,因为它们需要进行不同的配置)。

你们如何在两者之间进行负载平衡?经典的方法是使用两个后端设置 HAProxy。这在 Kubernetes 的上下文中听起来正确吗?有没有更好的方法在单个 Ingress Controller 资源上公开两个部署?

您可以定义一个Service that will be determined by labels selectors。对服务的请求将分布在部署中(与入口相同)

示例:

apiVersion: v1
kind: Service
metadata:
  labels:
    app: my-deployments
spec:
  ports:
  - port: 80
  selector:
    app: my-deployments

理想情况下,您应该 运行 一个具有多个副本的部署。定义选择后端的服务对象 pods。服务对象以循环方式自动负载平衡后端 pods。

如果您想对多个部署对象进行负载平衡,则为部署定义一个服务,ServiceA 和 serviceB。您应该 运行 ha-proxy 负载平衡 ServiceA 和 serviceB 之间的流量。

我们建议您选择第一种方法,除非您有充分的理由考虑第二种方法