【问题标题】:Can kubernetes Ingress Nginx be autoscaled?Kubernetes Ingress Nginx 可以自动缩放吗?
【发布时间】:2018-07-18 02:33:29
【问题描述】:

当 Ingress Nginx 控制器达到其最大容量时,它会自动扩展吗? Kubernetes Ingress 是否可扩展?

【问题讨论】:

    标签: nginx kubernetes kubernetes-ingress


    【解决方案1】:

    原则上,NGINX 入口控制器确实是可扩展的——它从 Kubernetes API 服务器提取其整个配置,并且本身基本上是无状态的。

    实际上,这在很大程度上取决于您的入口控制器的设置方式。首先,入口控制器不会自行自动缩放。如果您使用Deployment 控制器部署它,则可以按照文档中的说明使用horizontal pod autoscaling。如果您使用 DaemonSet 部署它,入口控制器将随您的集群自动扩展和缩减(如果您使用的是 cluster autoscaler,甚至可能自动扩展)。

    在这两种情况下,您都需要一个 Service 定义(可能是 NodePortLoadBalancer 类型,以允许外部流量)与部署/守护程序集创建的所有 pod 匹配以分配流量其中。

    【讨论】:

    • 当我有多个 NGINX pod 时,NGINX 负载均衡器(默认为最小连接)将如何工作?它在实例之间是否具有类似区域和工作进程的共享内存选项?
    • 入口控制器只不过是常规的 Kubernetes pod。它们之间没有共享内存,因此不会有任何类型的全局“最少连接”负载平衡。
    【解决方案2】:

    是的,可以通过两种方式自动缩放 nginx 入口控制器:

    1. Kubernetes 的 Horizo​​ntal Pod Autoscaler。
    2. 每个 https://github.com/nginxinc/kubernetes-ingress/tree/master/examples/multiple-ingress-controllers 使用多个 nginx 入口控制器。在这种方法中,您还需要多个 nginx 入口资源来负载平衡到后端 pod 的流量。 https://github.com/nginxinc/kubernetes-ingress/tree/master/examples/complete-example 有 nginx 的示例/示例入口资源。

    “最少连接”(least conn)配置与 nginx 的自动缩放无关。是nginx使用的负载均衡算法,可以使用ConfigMaps在nginx配置文件(nginx.conf)中更改为其他(round robinip hash)。

    【讨论】:

    • 谢谢!但是如果我想要最少的连接,因为我也使用 nginx 作为负载平衡器,如何共享数据?负载均衡器似乎不可扩展
    • 由于 nginx 入口控制器是无状态的,并且从 kubernetes api 服务器获取所有数据,因此没有要共享的数据。
    • @xFiler 很高兴为您提供帮助,如果您认为我的回答有用,请点赞!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-14
    • 1970-01-01
    • 2020-10-28
    • 2018-12-13
    • 2021-05-15
    • 1970-01-01
    相关资源
    最近更新 更多