一个奇怪的现象,不得其解,有哪位能指点一下,不甚感激!
使用resty.dns.resolver,请求返回name error,但是nslookup能查到。
代码如下:
local resolver = require "resty.dns.resolver"
local resolver_ins, err = resolver:new{
nameservers = {"172.21.0.10"},
retrans = 5, -- 5 retransmissions on receive timeout
timeout = 2000, -- 2 sec
}
if not resolver_ins then
ngx.say("failed to instantiate the resolver: ", err)
return
end
-- query
local host = "test-0.test-svc"
local answers, err, tries = resolver_ins:query(host, nil, {})
if not answers then
ngx.log(ngx.ERR, "failed to query the DNS server: ", err)
ngx.log(ngx.ERR, "retry historie:\n ", table.concat(tries, "\n "))
return
end
if answers.errcode then
ngx.log(ngx.ERR, "server returned error code: ", answers.errcode,
", err: ", answers.errstr, ", hostname: ", host)
end
错误日志
[error] 66#66: *1352423 [lua] resolver.lua:42: resolve(): server returned error code: 3, err: name error, hostname: test-0.test-svc
但是nslookup可以查到
/ # nslookup test-0.test-svc 172.21.0.10
Server: 172.21.0.10
Address 1: 172.21.0.10 kube-dns.kube-system.svc.cluster.local
Name: test-0.test-svc
Address 1: 172.20.2.104 test-0.test-svc.test.svc.cluster.local