<p>my natural thought is that if nginx is just a daemon process on the k8s node, but not a pod(container) in the k8s cluster, looks like it still can fullfill ingress controller jobs. because:
if it's a process, because it is on the k8s node, it still can talk to apiserver to fetch service  backend pods information, like IP addresses, so it's still can be used as a http proxy server to direct traffic to different services.</p>
<p>so 2 questions,</p>
<ol>
<li>why nginx ingress controller has to be a pod?</li>
<li>why nginx ingress controller only got 1 replica? and on which node? if nginx controller pod is dead, things will go unstable.</li>
</ol>
<p>Thanks!</p>

ericxu1983
<blockquote>
<p>why Nginx ingress controller has to be a pod?</p>
</blockquote>
<p>it is possible to run the Nginx controller as a daemon set in Kubernetes however I am not sure about the running on the node.</p>
<p>Manging the POD using daemon set and deployment of Kubernetes easy compare to process on Node.</p>
<p>By default Nginx daemon process is not part of any Kubernetes node, if you cluster autoscale will you install the Nginx process manually on Node?</p>
<p>If you thinking to create own AMI with Nginx process inside and use it inside the Node pool and scale that pool, it's possible but how about OS patching and maintenance ?</p>
<blockquote>
<p>why nginx ingress controller only got 1 replica? and on which node? if
nginx controller pod is dead, things will go unstable.</p>
</blockquote>
<p>Running replicas 1 is the default configuration but you can implement the HPA and increase the replicas as per need. Nginx is lightweight so handling a large volume of traffic not require more replicas.</p>
<p>Still, as per need, you can run multiple replicas with HPA or increase manually replicas to get high availability.</p>
