coredns: java.net.UnknownHostException with rewrite name

I meet java.net.UnknownHostException when I use coreDns rewrite plugin in kubernetes.

coreDns config:

.:53 {
 errors
 log stdout
 health
 kubernetes cluster.local 20.0.0.0/16
 rewrite name kms.services.dev.ofc kms.default.svc.cluster.local
 proxy . /etc/resolv.conf
 cache 60
 }

java error stack

^V^ [ERROR] [2018-05-09 16:06:09.478] [test_0] [com.ciicgat.sdk.lang.controller.Controller:42]  kms.services.dev.ofc
java.net.UnknownHostException: kms.services.dev.ofc: Name or service not known
	at java.net.Inet4AddressImpl.lookupAllHostAddr(Native Method)
	at java.net.InetAddress$2.lookupAllHostAddr(InetAddress.java:928)
	at java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1323)
	at java.net.InetAddress.getAllByName0(InetAddress.java:1276)
	at java.net.InetAddress.getAllByName(InetAddress.java:1192)
	at java.net.InetAddress.getAllByName(InetAddress.java:1126)
	at com.ciicgat.sdk.lang.controller.Controller$1.run(Controller.java:37)
	at java.lang.Thread.run(Thread.java:748)
^V^ [ERROR] [2018-05-09 16:06:14.479] [test_0] [com.ciicgat.sdk.lang.controller.Controller:42]  kms.services.dev.ofc
java.net.UnknownHostException: kms.services.dev.ofc
	at java.net.InetAddress.getAllByName0(InetAddress.java:1280)
	at java.net.InetAddress.getAllByName(InetAddress.java:1192)
	at java.net.InetAddress.getAllByName(InetAddress.java:1126)
	at com.ciicgat.sdk.lang.controller.Controller$1.run(Controller.java:37)
	at java.lang.Thread.run(Thread.java:748)
^V^ [ERROR] [2018-05-09 16:06:19.483] [test_0] [com.ciicgat.sdk.lang.controller.Controller:42]  kms.services.dev.ofc
java.net.UnknownHostException: kms.services.dev.ofc: Name or service not known
	at java.net.Inet4AddressImpl.lookupAllHostAddr(Native Method)
	at java.net.InetAddress$2.lookupAllHostAddr(InetAddress.java:928)
	at java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1323)
	at java.net.InetAddress.getAllByName0(InetAddress.java:1276)
	at java.net.InetAddress.getAllByName(InetAddress.java:1192)
	at java.net.InetAddress.getAllByName(InetAddress.java:1126)
	at com.ciicgat.sdk.lang.controller.Controller$1.run(Controller.java:37)
	at java.lang.Thread.run(Thread.java:748)
^V^ [ERROR] [2018-05-09 16:06:24.483] [test_0] [com.ciicgat.sdk.lang.controller.Controller:42]  kms.services.dev.ofc
java.net.UnknownHostException: kms.services.dev.ofc
	at java.net.InetAddress.getAllByName0(InetAddress.java:1280)
	at java.net.InetAddress.getAllByName(InetAddress.java:1192)
	at java.net.InetAddress.getAllByName(InetAddress.java:1126)
	at com.ciicgat.sdk.lang.controller.Controller$1.run(Controller.java:37)
	at java.lang.Thread.run(Thread.java:748)

Pod’s /etc/resolv.conf content is

[root@for-test-jar-fd574ffdd-2dj6h apache-tomcat]# cat /etc/resolv.conf 
nameserver 20.0.0.11
search default.svc.cluster.local. svc.cluster.local. cluster.local.
options ndots:5

Pod’s /etc/hosts content is

[root@for-test-jar-fd574ffdd-2dj6h apache-tomcat]# cat /etc/hosts
# Kubernetes-managed hosts file.
127.0.0.1	localhost
::1	localhost ip6-localhost ip6-loopback
fe00::0	ip6-localnet
fe00::0	ip6-mcastprefix
fe00::1	ip6-allnodes
fe00::2	ip6-allrouters
1.0.7.90	for-test-jar-fd574ffdd-2dj6h

But it’s strange that when I use nslookup or dig or curl ,there’s no error!

[root@for-test-jar-fd574ffdd-2dj6h apache-tomcat]# nslookup kms.services.dev.ofc
Server:		20.0.0.11
Address:	20.0.0.11#53

Name:	kms.default.svc.cluster.local
Address: 20.0.125.17
[root@for-test-jar-fd574ffdd-2dj6h apache-tomcat]# dig kms.services.dev.ofc

; <<>> DiG 9.9.4-RedHat-9.9.4-51.el7 <<>> kms.services.dev.ofc
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 30450
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;kms.services.dev.ofc.		IN	A

;; ANSWER SECTION:
kms.default.svc.cluster.local. 3 IN	A	20.0.125.17

;; Query time: 1 msec
;; SERVER: 20.0.0.11#53(20.0.0.11)
;; WHEN: Wed May 09 16:11:07 CST 2018
;; MSG SIZE  rcvd: 94
[root@for-test-jar-fd574ffdd-2dj6h apache-tomcat]# curl kms.services.dev.ofc/isLive -v
* About to connect() to kms.services.dev.ofc port 80 (#0)
*   Trying 20.0.125.17...
* Connected to kms.services.dev.ofc (20.0.125.17) port 80 (#0)
> GET /isLive HTTP/1.1
> User-Agent: curl/7.29.0
> Host: kms.services.dev.ofc
> Accept: */*
> 
< HTTP/1.1 200 
< Content-Type: application/json;charset=UTF-8
< Transfer-Encoding: chunked
< Date: Wed, 09 May 2018 08:11:33 GMT
< 
* Connection #0 to host kms.services.dev.ofc left intact

Just the Java application cannot work!

coreDns version:1.1.2 k8s version:1.10

About this issue

  • Original URL
  • State: closed
  • Created 6 years ago
  • Comments: 16 (5 by maintainers)

Most upvoted comments

@chrisohaver yes, i actually switched away from https in favor of http today trying to see if it makes a difference (it didn’t 😦 )

dnstools# dig api.minikube.oltd.de

; <<>> DiG 9.11.3 <<>> api.minikube.oltd.de
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 3306
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
; COOKIE: 6293977174e5ce81 (echoed)
;; QUESTION SECTION:
;api.minikube.oltd.de.		IN	A

;; ANSWER SECTION:
api.minikube.oltd.de.	5	IN	A	10.107.94.27

;; Query time: 1 msec
;; SERVER: 10.96.0.10#53(10.96.0.10)
;; WHEN: Fri Jul 27 12:51:37 UTC 2018
;; MSG SIZE  rcvd: 97

it’s really rather puzzling