ingress-nginx No IP Address

6/17/2018

I've created a test k8s cluster using kubespray (3 nodes, virtualbox centos vm based) and have been trying to follow the guide for setting up nginx ingress, but i never seem to get an external address assigned to my service:

I can see that the ingress controller is apparently installed:

[root@k8s-01 ~]# kubectl get pods --all-namespaces -l app=ingress-nginx
NAMESPACE       NAME                                        READY     STATUS    RESTARTS   AGE
ingress-nginx   nginx-ingress-controller-58c9df5856-v6hml   1/1       Running   0          28m

And following the prerequisites docs, i have set up the http-svc sample service:

[root@k8s-01 ~]# kubectl get po
NAME                       READY     STATUS    RESTARTS   AGE
http-svc-794dc89f5-f2vlx   1/1       Running   0          27m

[root@k8s-01 ~]# kubectl get svc http-svc
NAME         TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
http-svc     LoadBalancer   10.233.25.131   <pending>     80:30055/TCP   27m

[root@k8s-01 ~]# kubectl describe svc http-svc
Name:                     http-svc
Namespace:                default
Labels:                   app=http-svc
Annotations:              <none>
Selector:                 app=http-svc
Type:                     LoadBalancer
IP:                       10.233.25.131
Port:                     http  80/TCP
TargetPort:               8080/TCP
NodePort:                 http  30055/TCP
Endpoints:                10.233.65.5:8080
Session Affinity:         None
External Traffic Policy:  Cluster
Events:
  Type    Reason  Age   From                Message
  ----    ------  ----  ----                -------
  Normal  Type    27m   service-controller  ClusterIP -> LoadBalancer

As far as i know, i should see a LoadBalancer Ingress entry, but the External IP for the service still appears to be pending, so something isn't working, but i'm at a loss where to diagnose what has gone wrong

-- Chris White
kubernetes
kubernetes-ingress

1 Answer

6/17/2018

Since you are creating your cluster locally, exposing your service as type LoadBalancer will not provision a loadbalancer for you. Use the type LoadBalancer if you are creating your cluster in a cloud environment such as AWS or GKE. In AWS it will auto-provision you an loadbalancer (ELB) and assign an external ip for the service.

To make your service work with current settings and environment change your service type from Loadbalancer to NodePort.

-- Insightcoder
Source: StackOverflow