When the pods on GKE k8s are deployed they have the ability to connect to other GCE (google compute engine) instances by ip or google metadata DNS server name.
I use internal bind installed on 2 (master/slave) GCE instances for resolving. Let say example.local is the internal zone name, and all the instances are using it to do name-resolving. i do use custom dns, because i need to resolve on-premises dns records, and google cloud internal dns can't be managed.
GKE kubernetes pods are using the kube-dns and use /etc/resolv.conf resolver IP's which are using instance default google settings, and I can’t resolve my internal zone.
I really don’t know how to overcome this issue. Using Docker for example has the option to pass dns on container boot with “docker -d -p…… --dns=8.8.8.8…”.
can skydns be configured to have a zone forwarder defined for example.local ? just guessing.
This feature is coming in Kubernetes v1.6:
https://github.com/kubernetes/kubernetes/pull/41826
It will allow you to inject private zones into the kube-DNS configuration.