• Error syncing load balancer: failed to ensure load balancer: could not find any suitable subnets for creating the ELB

    2 min read

    If we try to create a LoadBalancer on an AWS EKS cluster without any public subnet it will get stuck on the pending state and we won't get any external IP/DNS name for it. By using kubectl describe we will be able to get the actual error:

    $ kubectl get svc -n pet2cattle
    NAME      TYPE           CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE
    demo-lb   LoadBalancer   172.20.235.213   <pending>     80:30525/TCP   7d
    $ kubectl describe svc demo-lb -n pet2cattle 
    Name:                     demo-lb
    Namespace:                pet2cattle
    Labels:                   <none>
    Annotations:              <none>
    Selector:                 run=demo-lb
    Type:                     LoadBalancer
    IP Families:              <none>
    IP:                       172.20.166.181
    IPs:                      <none>
    Port:                     <unset>  80/TCP
    TargetPort:               80/TCP
    NodePort:                 <unset>  30088/TCP
    Endpoints:                10.236.124.69:80,10.236.126.253:80
    Session Affinity:         None
    External Traffic Policy:  Cluster
    Events:
      Type     Reason                  Age                From                Message
      ----     ------                  ----               ----                -------
      Normal   EnsuringLoadBalancer    12s (x3 over 27s)  service-controller  Ensuring load balancer
      Warning  SyncLoadBalancerFailed  12s (x3 over 27s)  service-controller  Error syncing load balancer: failed to ensure load balancer: could not find any suitable subnets for creating the ELB
    

    17/02/2021

    Read more...

From pet to cattle
Treat your kubernetes clusters like cattle, not pets