【发布时间】:2019-07-29 03:16:36
【问题描述】:
我有一个 K8S 1.14 集群设置,CoreDNS 1.5.0 作为默认 DNS 服务器。当我得到一个 TTL 小于 SOA 字段中最小 TTL 值的响应时,我的 ubuntu 14.04 客户端无法解析服务名称(响应 IPv6 结果,没有解析 IPv6 地址)。
我尝试在 Ubuntu 18.04 中使用相同的客户端代码,每次都可以解析服务名称。我正在使用 python socket.getaddrinfo 来解析服务名称,使用 socket.gethostbyname 可以解决这个问题,因为它只查询 A 记录。
这是我用来测试的代码
import socket
import time
while True:
try:
time.sleep(2)
print socket.getaddrinfo("kubernetes", "443")
except Exception as e:
print e
这段代码运行结果如下:
[(2, 1, 6, '', ('10.233.0.1', 443)), (2, 2, 17, '', ('10.233.0.1', 443)), (2, 3 , 0, '', ('10.233.0.1', 443))]
[Errno -5] 没有与主机名关联的地址
[Errno -5] 没有与主机名关联的地址
[(2, 1, 6, '', ('10.233.0.1', 443)), (2, 2, 17, '', ('10.233.0.1', 443)), (2, 3 , 0, '', ('10.233.0.1', 443))]
[Errno -5] 没有与主机名关联的地址
[Errno -5] 没有与主机名关联的地址
当我将默认 ttl 更新为 30 秒时,我得到了更多失败,但我得到了 TTL 30 的响应
【问题讨论】:
标签: kubernetes coredns