Adding nameservers in gcloud

11/5/2018

I have a VPN tunnel from gcloud to our local site. The local site has 2 nameservers running on 172.16.248.32 and 172.16.248.32

These nameservers resolve our local domain names such as mycompany.local

How can I use these nameservers from gcloud, so the pods in my Kubernetes cluster do resolve mycompany.local as well?

-- Alex Tbk
google-cloud-platform
kube-dns
kubernetes

1 Answer

11/5/2018

You'll have to configure your upstream DNS servers to be 172.16.248.32 and the other IP.

You can do it on a per pod basis like this:

apiVersion: v1
kind: Pod
metadata:
  namespace: default
  name: dns-example
spec:
  containers:
    - name: test
      image: nginx
  dnsPolicy: "None"
  dnsConfig:
    nameservers:
      - 172.16.248.32
    searches:
      - ns1.svc.cluster.local
      - mycompany.local
    options:
      - name: ndots
        value: "2"
      - name: edns0

So when the pods are created they include an /etc/resolv.conf like this:

nameserver 172.16.248.32
search ns1.svc.cluster.local my.dns.search.suffix
options ndots:2 edns0

The other option will vary whether you are using coredns or kube-dns, and that is configuring stub-domains (these configs will also propagate to the /etc/resolv.conf file in your pods, all documented here:

coredns

# coredns in the coredns ConfigMap
apiVersion: v1
kind: ConfigMap
metadata:
  name: coredns
  namespace: kube-system
data:
  Corefile: |
    .:53 {
        errors
        health
        kubernetes cluster.local in-addr.arpa ip6.arpa {
           pods insecure
           upstream 172.16.0.1
           fallthrough in-addr.arpa ip6.arpa
        }
        prometheus :9153
        proxy . 172.16.0.1
        cache 30
        loop
        reload
        loadbalance
    }
    mycompany.local:53 {
        errors
        cache 30
        proxy . 172.16.248.32
    }

kube-dns

# kube-dns in the kube-dns ConfigMap
apiVersion: v1
kind: ConfigMap
metadata:
  name: kube-dns
  namespace: kube-system
data:
  stubDomains: |
    {"mycompany.local": ["172.16.248.32"]}
  upstreamNameservers: |
    ["8.8.8.8", "8.8.4.4"]
-- Rico
Source: StackOverflow