kubernetes: a service is not accessible outside host

5/23/2016

I am following the guide at http://kubernetes.io/docs/getting-started-guides/ubuntu/ to create a kubernetes cluster. Once the cluster is up, i can create pods and services using kubectl. Basically, do the following

kubectl run nginx --image=nginx --port=80
kubectl expose deployment/nginx

I see a pod and service running

# kubectl get services
NAME         CLUSTER-IP      EXTERNAL-IP   PORT(S)   AGE
kubernetes   192.168.3.1     <none>        443/TCP   2d
nginx        192.168.3.208   <none>        80/TCP    2d

When I try to access the service from the machine where the pod is running, I get back the nginx helloworld page. But if i try it another machine in the kubernetes cluster, i get a timeout.

I thought all the services are accessible anywhere in the cluster. Why could it not be working that way?

Thanks

-- suppandi g
kubernetes
networking
service

3 Answers

5/27/2016

found out my error by comparing it with another installation where it worked. This installation was missing an iptables rule that forced everything going to the containers onto the flannel interface. So the traffic was reaching the target host on eth0 making it discard the packet. I donot know why the proxy didnt add that rule. Once i manually added it, it worked.

-- suppandi g
Source: StackOverflow

5/24/2016

Yes, services should be accessible anywhere in the cluster. Is your "another machine" listed in the output of kubectl get nodes? Is the node Ready? Maybe the machine wasn't configured correctly.

-- janetkuo
Source: StackOverflow

5/27/2016

If you want to get the servicer anywherer in the cluster, You must use the network plug-in,such as Flannel,OpenVSwitch. http://kubernetes.io/docs/admin/networking/#flannel https://github.com/coreos/flannel#flannel

-- kevin
Source: StackOverflow