<p>If created a service using an externalName pointing to some external service.</p>

<pre><code>apiVersion: v1
kind: Service
metadata:
  name: test
spec:
  type: ExternalName
  externalName: google.com
</code></pre>

<p>When I now try to do a DNS lookup it doesn't return anything useful:</p>

<pre><code># dig test.development.svc.cluster.local.

; &lt;&lt;&gt;&gt; DiG 9.9.5-9+deb8u15-Debian &lt;&lt;&gt;&gt; test.development.svc.cluster.local.
;; global options: +cmd
;; Got answer:
;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 58159
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:
;test.development.svc.cluster.local. IN A

;; AUTHORITY SECTION:
cluster.local.      60  IN  SOA ns.dns.cluster.local. hostmaster.cluster.local. 1524736800 28800 7200 604800 60

;; Query time: 0 msec
;; SERVER: 100.64.0.10#53(100.64.0.10)
;; WHEN: Thu Apr 26 10:58:48 UTC 2018
;; MSG SIZE  rcvd: 106
</code></pre>

<p>If I query explicitly for type CNAME I get a response:</p>

<pre><code># dig -t CNAME test.development.svc.cluster.local.

; &lt;&lt;&gt;&gt; DiG 9.9.5-9+deb8u15-Debian &lt;&lt;&gt;&gt; -t CNAME test.development.svc.cluster.local.
;; global options: +cmd
;; Got answer:
;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 54517
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;test.development.svc.cluster.local. IN CNAME

;; ANSWER SECTION:
test.development.svc.cluster.local. 30 IN CNAME google.com.

;; Query time: 0 msec
;; SERVER: 100.64.0.10#53(100.64.0.10)
;; WHEN: Thu Apr 26 10:59:55 UTC 2018
;; MSG SIZE  rcvd: 76
</code></pre>

<p>If I change the Service to point to some other cluster internal service, I get the following expected result of an IP address:</p>

<pre><code># dig dogstatsdport.development.svc.cluster.local

; &lt;&lt;&gt;&gt; DiG 9.9.5-9+deb8u15-Debian &lt;&lt;&gt;&gt; dogstatsdport.development.svc.cluster.local
;; global options: +cmd
;; Got answer:
;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 32857
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;dogstatsdport.development.svc.cluster.local. IN    A

;; ANSWER SECTION:
dogstatsdport.development.svc.cluster.local. 30 IN CNAME dogstatsdport.default.svc.cluster.local.
dogstatsdport.default.svc.cluster.local. 30 IN A 100.68.195.103

;; Query time: 0 msec
;; SERVER: 100.64.0.10#53(100.64.0.10)
;; WHEN: Thu Apr 26 11:02:14 UTC 2018
;; MSG SIZE  rcvd: 113
</code></pre>

<p>What is missing/wrong here? And how do I get the external record to resolve?</p>

<p>Cluster is currently running on Kubernetes 1.8.12, set up with kops 1.9.0.</p>

<p>The issue lies with the used kube-dns version 1.14.9.</p>

<p>Applying the following command to update to 1.14.10 fixed it:</p>

<pre><code>kubectl set image deployment/kube-dns -n kube-system \
  kubedns=gcr.io/google_containers/k8s-dns-kube-dns-amd64:1.14.10 \
  dnsmasq=gcr.io/google_containers/k8s-dns-dnsmasq-nanny-amd64:1.14.10 \
  sidecar=gcr.io/google_containers/k8s-dns-sidecar-amd64:1.14.10
</code></pre>

<p><a href="https://github.com/kubernetes/dns/releases" rel="noreferrer">https://github.com/kubernetes/dns/releases</a> states for 1.14.10: </p>

<blockquote>
  <p>Merge pull request #225 from grayluck/externalname
  Fix external name not solving by reloading resolv.conf.</p>
</blockquote>
