<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>

<p>Because Pods are how you run daemon processes (or really, all processes) inside Kubernetes. That's just how you run stuff. I suppose there is nothing stopping you from running it outside the cluster, manually setting up API configuration and authentication, doing all the needed networking bits yourself. But ... why?</p>
<p>As for replicas, you should indeed generally have more than one across multiple physical nodes for redundancy. A lot of the tutorials show it with <code>replicas: 1</code> because either it's for a single-node dev cluster like Minikube or it's only an example.</p>
