Networking and DNS in Kubernetes local cluster with Docker
I have downloaded Kubernetes binaries from release tag in Github.
I placed the binaries in my path (i.e. kubectl)
Now I can contact Kubernetes API from 127.0.0.1:8080 and I got Nginx pod running and service exposed.
I have a ‘docker0’ interface with range 172.17.42.1/16
Doing ‘docker inspect’ to the containers returns me IP from that range.
Doing ‘kubectl get services’ returns me IPs from range 10.0.0.0/24
I can reach Nginx using the IP from 10.0.0.x and 172.16.x.x
How is the networking set up?
Why ‘nginx’ service is not showed up in /api/v1/services?
Also I want to set up monitoring with Heapster+InfluxDB+Grafana.
Heapster will try to connect to InfluxDB using a hostname that fails to resolve.
So I searched how to bring up DNS server for Kubernetes.
I modified a little the files yaml under kubernetes/cluster/addons/dns
skydns-rc.yaml require the Kubernetes Master IP to make calls to the API to discover services.
What is the Kubernetes Master IP?
From the docker host Kubernetes Master IP is 127.0.0.1 but it is not reachable from inside the pods (afaik 127.0.0.1 inside the pods is the pod itself)
It isnt 10.0.0.1 because its not working from the docker host neither from the kube2sky container.
I cant find any help in the documentation or Github as it is very focused for cloud and GCE.
Thanks for your help!
One Solution collect form web for “Networking and DNS in Kubernetes local cluster with Docker”
The DNS pod can use the KUBERNETES_SERVICE_HOST environment variable or the IP of the machine you’re really on (rather than 127.0.0.1) if you don’t have service accounts configured (probably don’t)