kubernetescontainersibm-cloudibm-cloud-kubernetes

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


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.


Solution

  • 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