<p><strong><a href="https://github.com/kubernetes-sigs/aws-alb-ingress-controller/blob/master/docs/guide/ingress/annotation.md#target-type" rel="nofollow noreferrer">https://github.com/kubernetes-sigs/aws-alb-ingress-controller/blob/master/docs/guide/ingress/annotation.md#target-type</a></strong></p>

<p>In above link it is mentioned that "instance mode" will route traffic to all ec2 instances within cluster on NodePort opened for your service.
so how does kube-proxy make sure that request is served only once in case multiple replicas of pods are running in different instances and how does it makes sure that requests are evenly served from all pods?</p>

Mayank Senani
<p>As per documentation:</p>

<p>Amazon Elastic Load Balancing Application Load Balancer (ALB) is a popular AWS service that load balances incoming traffic at the application layer (layer 7) across multiple targets, such as Amazon EC2 instances. </p>

<p>The AWS ALB Ingress controller is a controller that triggers the creation of an ALB and the necessary supporting AWS resources whenever a Kubernetes user declares an Ingress resource on the cluster. The Ingress resource uses the ALB to route HTTP[s] traffic to different endpoints within the cluster.</p>

<blockquote>
  <ol>
  <li><p>With <strong>instance mode</strong>, ingress traffic start from ALB and <strong>reach Node Port opened for service</strong>. Traffic is routed to the container POD within cluster.
  Moreover <strong>target-type: "instance mode"</strong> is <strong>default setting</strong> in AWS ALB ingress controller and <strong>service must be type of "NodePort" or "LoadBalancer"</strong> to use this mode.</p></li>
  <li><p>Managing ALBs is automatic, and you only need to define your ingress resources as you would typically do. ALB ingress controller POD which is running inside the Kubernetes cluster communicates with Kubernetes API and does all the work. However, this POD is only a control plane, it doesn't do any proxying and stuff like that.</p></li>
  </ol>
</blockquote>

<p>Your <strong>Application Load Balancer</strong> periodically sends requests to its registered targets <strong>to test their status</strong>. These tests are called health checks. Alb-ingress-controller is performing "health checks" for targets groups. Different "health check's" on target groups can be controlled using annotations.</p>

<p>You can find more information about ALB ingress and NodePort <a href="https://akomljen.com/aws-alb-ingress-controller-for-kubernetes/" rel="nofollow noreferrer">here</a> and <a href="https://kubernetes.io/docs/concepts/services-networking/service/#nodeport" rel="nofollow noreferrer">here</a> </p>

<p>Hope this help.</p>
