如何扩展 nginx-ingress/负载均衡器?

时间:2021-01-18 13:59:36

标签: kubernetes kubernetes-ingress nginx-ingress

所以我正在使用 kubernetes NGINX Ingress Controller 并通过 helm 图表安装它。

我没有找到有关图表的任何真正文档,但引用了 values.yaml,我将 controller.kind 值更改为 DaemonSet。

所以这个问题的第一部分,这是一个好的做法。我找不到有关此的任何信息,但是一个控制器可能不足以处理所有传入的流量,而且我们遇到了一些问题,即运行入口控制器的节点已关闭。我希望控制器作为 DaemonSet 运行就足够了,无论是可用性还是性能?

问题的第二个也是更重要的重要部分是,如何在这样的设置中拥有多个负载均衡器?由于一个负载均衡器可能无法处理所有流量,我们想添加多个负载均衡器,但据我所知,将创建一个负载均衡器类型的服务。如何拥有多个负载均衡器?

是否也可以通过舵图配置来做到这一点?

1 个答案:

答案 0 :(得分:3)

Nginx Ingress Controller 不是负载均衡器,所以当你说一个负载均衡器不够时,我猜你的意思是一个 Ingress Controller pod 是不够的。在这种情况下,创建多个负载均衡器并没有真正的帮助,因为您会得到更多指向同一个 Ingress Controller 的云提供商负载均衡器。

现在,为 IC 使用 DaemonSet 似乎是个好主意,但事实并非如此。尤其是当您有数十或数百个节点时,在这种情况下,您可能有数十或数百个您并不真正需要的 IC pod。对于 40 个节点,您可能需要 5 个。

正确的方法是将对象改回 Deployment,为该 HorizontalPodAutoscaler 创建一个 Deployment 对象,根据您将设置的阈值进行缩放。您可能需要为此安装 metrics server。例如,如果您有一个节点自动缩放器的问题,这可能会在任何时候关闭一个节点,您应该设置一个 PodDisruptionBudget 对象,以防止这些情况。 PDB 将阻止一个节点被耗尽,并且节点自动缩放器将关闭另一个节点。您还可以针对自身设置一个 Anti-affinity,以防止在同一节点上部署两个 IC pod,以增加额外的工作量。