Scale Azure nginx ingress controller

11/14/2018

We have a K8s cluster on Azure (aks). On this cluster, we added a loadbalancer on the setup which installed an nginx-ingress controller.

Looking at the deployments:

addon-http-application-routing-default-http-backend       1
addon-http-application-routing-external-dns               1 
addon-http-application-routing-nginx-ingress-controller   1

I see there is 1 of each running. Now I find very little information if these should be scaled (there is 1 pod each) and if they should, how?

I've tried running

kubectl scale deployment addon-http-application-routing-nginx-ingress-controller --replicas=3 

Which temporarily scales it to 3 pods, but after a few moments, it is downscaled again.

So again, are these supposed to be scaled? Why? How?

EDIT

For those that missed it like I did: The AKS addon-http-application is not ready for production, it is there to quickly set you up and start experimenting. Which is why I wasn't able to scale it properly.

Read more

-- RVandersteen
azure
azure-aks
kubernetes
kubernetes-ingress
nginx-ingress

2 Answers

11/14/2018

That's generally the way how you do it:

$ kubectl scale deployment addon-http-application-routing-nginx-ingress-controller --replicas=3

However, I suspect you have an HPA configured which will scale up/down depending on the load or some metrics and has the minReplicas spec set to 1. You can check with:

$ kubectl get hpa
$ kubectl describe hpa <hpa-name>

If that's the case you can scale up by just patching the HPA:

$ kubectl patch hpa <hpa-name> -p '{"spec": {"minReplicas": 3}}'

or edit it manually:

$ kubectl edit hpa <hpa-name>

More information on HPAs here.

And yes, the ingress controllers are supposed to be scaled up and down depending on the load.

-- Rico
Source: StackOverflow

11/14/2018

In AKS, being a managed service, this "system" workloads like kube-dns and the ingress controller, are managed by the service itself and they cannot be modified by the user (because they're labeled with addonmanager.kubernetes.io/mode: Reconcile, which forces the current configuration to reflect what's on disk at /etc/kubernetes/addons on the masters).

-- Alessandro Vozza
Source: StackOverflow