Kubernetes service external IP address remains pending with IBM Cloud (earlier called as Bluemix)

9/6/2017

I'm following an example from Kubernetes in Action to run a simple docker image in kubernetes:

$ bx login --apikey @apiKey.json -a  https://api.eu-de.bluemix.net
$ bx cs cluster-config my_kubernetes
$ export KUBECONFIG=..my_kubernetes.yml

Next, run the container:

$ kubectl run kubia --image=luksa/kubia --port=8080 --generator=run/v1
$ kubectl expose rc kubia --type=LoadBalancer --name kubia-http
$ kubectl get service
$ kubectl get svc

NAME         CLUSTER-IP    EXTERNAL-IP   PORT(S)          AGE
kubernetes   10.10.10.1    <none>        443/TCP          20h
kubia-http   10.10.10.12   <pending>     8080:32373/TCP   0m

Fifteen minutes later ...

NAME         CLUSTER-IP    EXTERNAL-IP   PORT(S)          AGE
kubernetes   10.10.10.1    <none>        443/TCP          20h
kubia-http   10.10.10.12   <pending>     8080:32373/TCP   15m

I don't have anything else running on the Kubernetes cluster.

-- Chris Snow
containers
ibm-cloud
ibm-cloud-kubernetes
kubernetes

3 Answers

9/6/2017

To close out the thread here, LoadBalancer cannot be used in a lite (aka free) cluster tier. The differences between lite and standard clusters can be found here - https://console.bluemix.net/docs/containers/cs_planning.html#cs_planning.

-- chris rosen
Source: StackOverflow

9/6/2017

Thanks to Chris Rosen's answer, I was able to find a workaround:

$ bx cs workers my_kubernetes
OK
ID                 Public IP  Private IP  Machine Type State    Status
kube-par01-xxxxx   1.2.3.4    6.7.8.9     free         normal   Ready

Note the Public IP address: 1.2.3.4

Expose the service with NodePort:

$ kubectl expose rc kubia --type=NodePort --name kubia-http2

Check the NodePort details:

$ kubectl get svc
NAME          CLUSTER-IP     EXTERNAL-IP   PORT(S)          AGE
kubernetes    10.10.10.1     <none>        443/TCP          21h
kubia-http2   10.10.10.193   <nodes>       8080:31247/TCP   10s

Access the service using the exposed port on the worker Public IP address:

$ curl http://1.2.3.4:31247/
You've hit kubia-bjb59
-- Chris Snow
Source: StackOverflow

9/6/2017

Run the following to determine if there are any failure events.

kubectl describe svc kubia-http
-- Richard Theis
Source: StackOverflow