<p>I want to deploy kubernetes in a <strong>non-cloud environment.</strong></p>
<p>I know MetalLB is an L2 load balancer and ingress is an L7 load balancer and nodeport can load balance in L4, but the question is in production (expecting 1 million requests) how should I use them?</p>
<p>Is it necessary to have all of them?</p>
<p>nodeport can load balance between pods that are on different nodes so it seems that using MetalLB that also load balances between nodes is useless.
How can you explain it?</p>
<p>Thanks</p>

<p>Are you deploing it on premises? I would use all of them in production, and use metallb in mode BGP, where it divides the on going traffic among the nodes. Metallb divides the traffic between the physical nodes, Ingress finds the appropriate service, and NodePort find the pod in the cluster. They are all necessary for best practices. If you are on cloud providers go for a LB launched there. It can scale accordingly to demand. </p>
