skip to Main Content

I’m following the quickstart guide https://kubernetes.github.io/ingress-nginx/deploy/#aws to install it on an aws eks cluster. The cluster runs in a private subnet and will receive traffic via a cloudflare argo tunnel.

kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.1.0/deploy/static/provider/aws/deploy.yaml

When I then check the service I can see that it is pending:

 kubectl get svc --namespace=ingress-nginx
NAME                                 TYPE           CLUSTER-IP       EXTERNAL-IP   PORT(S)                      AGE
ingress-nginx-controller             LoadBalancer   10.100.64.86     <pending>     80:31323/TCP,443:31143/TCP   2d5h

The service generated seems ok, with valid annotations:

 kubectl describe svc  ingress-nginx-controller --namespace=ingress-nginx
Name:                     ingress-nginx-controller
Namespace:                ingress-nginx
Labels:                   app.kubernetes.io/component=controller
                          app.kubernetes.io/instance=ingress-nginx
                          app.kubernetes.io/managed-by=Helm
                          app.kubernetes.io/name=ingress-nginx
                          app.kubernetes.io/version=1.1.0
                          helm.sh/chart=ingress-nginx-4.0.10
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
Selector:                 app.kubernetes.io/component=controller,app.kubernetes.io/instance=ingress-nginx,app.kubernetes.io/name=ingress-nginx
Type:                     LoadBalancer
IP Family Policy:         SingleStack
IP Families:              IPv4
IP:                       10.100.64.86
IPs:                      10.100.64.86
Port:                     http  80/TCP
TargetPort:               http/TCP
NodePort:                 http  31323/TCP
Endpoints:                192.168.193.149:80
Port:                     https  443/TCP
TargetPort:               https/TCP
NodePort:                 https  31143/TCP
Endpoints:                192.168.193.149:443
Session Affinity:         None
External Traffic Policy:  Local
HealthCheck NodePort:     30785
Events:
  Type    Reason                Age                     From                Message
  ----    ------                ----                    ----                -------
  Normal  EnsuringLoadBalancer  2m23s (x646 over 2d5h)  service-controller  Ensuring load balancer

Not sure how to troubleshoot or fix

2

Answers


  1. Chosen as BEST ANSWER

    what worked for me was to download the installation file (https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.1.0/deploy/static/provider/aws/deploy.yaml) and add an annotation to the controller-service and then reapply the installation.

    service.beta.kubernetes.io/aws-load-balancer-internal: "true"

    not sure why it doesnt work as-is.


  2. i would suggest try applying this changes,

    kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-0.32.0/deploy/static/provider/aws/deploy.yaml

    The change that you have is for internal load balancer that wont give you a public exposed IP or Loabalancer.

    service.beta.kubernetes.io/aws-load-balancer-internal: "true"
    

    You can follow this Guide and this will create the NLB loadbalancer for you and the ingress tutorial also.

    Read more at : https://aws.amazon.com/blogs/opensource/network-load-balancer-nginx-ingress-controller-eks/

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search