<p>So, I am very new to using EKS with NLB ingress and managing my own worker nodes using nodegroup (ASG).
If I create a NLB ingress for the cluster and deploy multiple services inside the node group, how does NLB know that it has to load balance across service separately?
Generally, when I have not used EKS and created by own k8s cluster, I have spun one NLB per service. Not sure how would it work in case of EKS with one NLB ingress for the whole cluster with multiple service inside.
Or, do I need to create multiple NLBs somehow?
Any help would be highly appreciated</p>

<blockquote>
<p>when I have not used EKS and created by own k8s cluster, I have spun one NLB per service</p>
</blockquote>
<p>AWS EKS is no different on this point. For a Network Load Balancer, NLB, e.g. on TCP/UDP level, you use a Kubernetes <code>Service</code> of <code>type: LoadBalancer</code>. But there are options, configured by the annotations on the <code>Service</code>. The most recent <a href="https://aws.amazon.com/blogs/containers/introducing-aws-load-balancer-controller/" rel="nofollow noreferrer">feature is IP mode</a>. See <a href="https://docs.aws.amazon.com/eks/latest/userguide/load-balancing.html" rel="nofollow noreferrer">EKS Network Load Balancing doc</a> for more configuration alternatives.</p>
<p>Example:</p>
<pre><code>kind: Service
apiVersion: v1
metadata:
  name: nlb-ip-svc
  annotations:
    # route traffic directly to pod IPs
    service.beta.kubernetes.io/aws-load-balancer-type: &quot;nlb-ip&quot;
spec:
  ports:
    - port: 80
      targetPort: 80
      protocol: TCP
  type: LoadBalancer
  selector:
    app: nginx
</code></pre>
<blockquote>
<p>If I create a NLB ingress for the cluster and deploy multiple services inside the node group, how does NLB know that it has to load balance across service separately?</p>
</blockquote>
<p>The load balancer uses the target pods that is matched by the <code>selector:</code> in your <code>Service</code>.</p>
<p>The alternative is to use an Application Load Balancer, ALB that is working on the HTTP/HTTPS level using the Kubernetes <code>Ingress</code> resources. The ALB requires an Ingress controller installed in the cluster and the controller for the ALB is recently updated, see <a href="https://aws.amazon.com/blogs/containers/introducing-aws-load-balancer-controller/" rel="nofollow noreferrer">AWS Load Balancer Controller</a></p>
