kubernetes - 如何扩展 nginx-ingress/loadbalancer?

标签 kubernetes kubernetes-ingress nginx-ingress

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

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

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

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

还有可能通过 helm chart 配置来做到这一点吗?

最佳答案

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

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

正确的方法是将该对象改回Deployment,为该Deployment 创建一个Horizo​​ntalPodAutoscaler 对象,以根据您将设置的阈值。您可能需要安装 metrics server为了那个原因。例如,如果您遇到节点自动缩放器的问题,它可能随时关闭节点,您应该设置一个 PodDisruptionBudget 对象,以防止这些情况发生。 PDB 将防止节点被耗尽,节点自动缩放器将关闭另一个节点。您还可以针对自身设置一个Anti-affinity,以防止在同一节点上部署两个 IC pod,以完成额外的工作。

关于kubernetes - 如何扩展 nginx-ingress/loadbalancer?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65775916/

相关文章:

mysql - 如何在kubernetes中使用初始数据创建mysql容器?

ibm-cloud - 使用 Traefikv2.3 出现 `Failed to list *v1beta1.IngressClass: ingressclasses.networking.k8s.io` 错误

kubernetes - 处理多个 Helm 图表之间的共享 Kubernetes 对象

azure - 如何根据 NGINX 入口 Controller 中的源 IP 地址使用 if 条件路由流量

nginx - Kubernetes 中带有 nginx 入口 Controller 的 Kibana

kubernetes - 无内存限制的 Kubernetes pod 中 .net GC 的性能

kubernetes - Rancher - 如何公开我的服务?

kubernetes - rules_k8s - k8s_deploy 模板离开图像

elasticsearch - 在 K8 或 EKS 中监控入口流量的标准方法

kubernetes - 使用 nginx-ingress 和 keycloak 在 kubernetes 中进行身份验证的正确设计是什么