<p>I use aws-load-balancer-eip-allocations assign static IP to LoadBalancer service using k8s on AWS. The version of EKS is v1.16.13. The doc at <a href="https://github.com/kubernetes/kubernetes/blob/v1.16.0/staging/src/k8s.io/legacy-cloud-providers/aws/aws.go#L208-L211" rel="nofollow noreferrer">https://github.com/kubernetes/kubernetes/blob/v1.16.0/staging/src/k8s.io/legacy-cloud-providers/aws/aws.go#L208-L211</a>, line 210 and 211 says &quot;static IP addresses for the NLB. Only supported on elbv2 (NLB)&quot;. I do not know what the elbv2 is. I use the code below. But, I did not get static IP. Is elbv2 the problem? How do I use elbv2? Please also refer to <a href="https://github.com/kubernetes/kubernetes/pull/69263" rel="nofollow noreferrer">https://github.com/kubernetes/kubernetes/pull/69263</a> as well.</p>
<pre><code>apiVersion: v1
kind: Service
metadata:
  name: ingress-service
  annotations:
    service.beta.kubernetes.io/aws-load-balancer-type: &quot;nlb&quot;
    service.beta.kubernetes.io/aws-load-balancer-eip-allocations: &quot;eipalloc-0187de53333555567&quot;
    service.beta.kubernetes.io/aws-load-balancer-cross-zone-load-balancing-enabled: &quot;true&quot;
</code></pre>

<p>have in mind that you need 1 EIP per subnet/zone and by default EKS uses a minimum of 2 zones.</p>
<p>This is a working example you may found useful:</p>
<pre><code>metadata:
  annotations:
    service.beta.kubernetes.io/aws-load-balancer-backend-protocol: tcp
    service.beta.kubernetes.io/aws-load-balancer-cross-zone-load-balancing-enabled: 'true'
    service.beta.kubernetes.io/aws-load-balancer-type: nlb
    service.beta.kubernetes.io/aws-load-balancer-subnets: &quot;subnet-xxxxxxxxxxxxxxxx,subnet-yyyyyyyyyyyyyyyyy&quot;
    service.beta.kubernetes.io/aws-load-balancer-eip-allocations: &quot;eipalloc-wwwwwwwwwwwwwwwww,eipalloc-zzzzzzzzzzzzzzzz&quot;
</code></pre>
<p>I hope this is useful to you</p>
