<p>I was working on a staging cluster for my application, it required around 12 load balancers for my services definition. All of 12 looked pretty much the same:</p>
<pre><code>apiVersion: v1
kind: Service
metadata:
  labels:
    app: my-app-api
  name: my-app-api
  namespace: default
  annotations:
    service.beta.kubernetes.io/aws-load-balancer-backend-protocol: http
    service.beta.kubernetes.io/aws-load-balancer-ssl-cert: &lt;some aws cert name&gt;
    service.beta.kubernetes.io/aws-load-balancer-ssl-ports: &quot;https&quot;
spec:
  externalTrafficPolicy: Cluster
  ipFamilies:
    - IPv4
  ipFamilyPolicy: SingleStack
  ports:
    - name: http
      port: 80
      protocol: TCP
      targetPort: 5001
    - name: https
      port: 443
      protocol: TCP
      targetPort: 5001
  selector:
    app: my-app-api
  sessionAffinity: None
  type: LoadBalancer
</code></pre>
<p>After that I went on creating production cluster with the same setup. After I have created it and deployed k8s manifests: deployments, services, I was not able to get LoadBalancer Ingress with <code>kubectl describe service</code> command. I noticed the following picture:</p>
<pre><code>NAME          TYPE           CLUSTER-IP  EXTERNAL-IP                         PORT(S)                      AGE
&lt;some-name&gt;   LoadBalancer   &lt;some_ip&gt;   ****.us-west-1.elb.amazonaws.com    80:30339/TCP,443:32754/TCP   1m
&lt;some-name&gt;   LoadBalancer   &lt;some_ip&gt;   ****.us-west-1.elb.amazonaws.com    80:31538/TCP,443:32061/TCP   1m
&lt;some-name&gt;   LoadBalancer   &lt;some_ip&gt;   ****.us-west-1.elb.amazonaws.com    80:30976/TCP,443:31323/TCP   1m
&lt;some-name&gt;   LoadBalancer   &lt;some_ip&gt;   ****.us-west-1.elb.amazonaws.com    80:30288/TCP,443:32073/TCP   1m
&lt;some-name&gt;   LoadBalancer   &lt;some_ip&gt;   ****.us-west-1.elb.amazonaws.com    80:32270/TCP,443:31159/TCP   1m
&lt;some-name&gt;   LoadBalancer   &lt;some_ip&gt;   ****.us-west-1.elb.amazonaws.com    80:31966/TCP,443:30944/TCP   1m
kubernetes    ClusterIP      &lt;some_ip&gt;   &lt;none&gt;                              443/TCP                      1m
&lt;some-name&gt;   LoadBalancer   &lt;some_ip&gt;   PENDING                             80:31901/TCP,443:30444/TCP   1m
&lt;some-name&gt;   LoadBalancer   &lt;some_ip&gt;   PENDING                             80:31510/TCP,443:30393/TCP   1m
&lt;some-name&gt;   LoadBalancer   &lt;some_ip&gt;   PENDING                             80:32613/TCP,443:32616/TCP   1m
&lt;some-name&gt;   LoadBalancer   &lt;some_ip&gt;   PENDING                             80:32069/TCP,443:30320/TCP   1m
&lt;some-name&gt;   LoadBalancer   &lt;some_ip&gt;   PENDING                             80:31667/TCP,443:32194/TCP   1m
&lt;some-name&gt;   LoadBalancer   &lt;some_ip&gt;   PENDING                             80:31943/TCP,443:32081/TCP   1m
</code></pre>

AzureFireIce
<p>After troubleshooting the reason of above behaviour, I have made the following conclusions about LoadBalancers(LB):</p>
<ol>
<li><code>service.beta.kubernetes.io/aws-load-balancer-ssl-cert</code> directly depends on AWS load balancer, and if certificate is not signed in a region where LB is created, LB will not be added to the k8s cluster.</li>
<li>My problem was because k8s cluster could not automatically provision AWS LB for newly created service, as <strong>default LB limit</strong> for single region in AWS account is <strong>20</strong></li>
</ol>
<p>I requested quota increase LB limit from AWS, but since it took more time, I moved my production cluster to a different AWS region.
After that LBs created as expected and I could get my ingresses.</p>
