kubernetes Ingress Nginx 可以自动缩放吗?

Can kubernetes Ingress Nginx be autoscaled?

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

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

实际上,这在很大程度上取决于入口控制器的设置方式。首先,ingress controller 不会自己自动缩放。如果您使用 Deployment 控制器部署它,则可以使用 horizontal pod autoscaling as described in the documentation. If you have deployed it using a DaemonSet, the ingress controller will automatically scale up and down with your cluster (maybe even automatically, if you're using the cluster autoscaler).

在这两种情况下,您都需要一个匹配所有 pods 由 deployment/daemon 组创建,用于在它们之间分配流量。

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

  1. Kubernetes 的 Horizo​​ntal Pod Autoscaler。
  2. 每个 https://github.com/nginxinc/kubernetes-ingress/tree/master/examples/multiple-ingress-controllers. In this approach, you would need multiple nginx ingress resources too to load-balance the traffic to the backend pods. https://github.com/nginxinc/kubernetes-ingress/tree/master/examples/complete-example 使用多个 nginx 入口控制器有 example/sample 个 nginx 入口资源。

"least connection" (least conn) 配置与 nginx 的自动缩放无关。它是 nginx 使用的负载平衡算法,可以在 nginx 配置文件 (nginx.conf) 中使用 ConfigMaps 更改为其他算法 (round robinip hash)。