Ubuntu 14.04客户端无法解析k8s服务名称

时间:2019-07-29 03:16:36

标签: kubernetes coredns

我有一个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响应时出现了更多故障

2 个答案:

答案 0 :(得分:1)

似乎此问题与 dns缓存有关。

在ubuntu 14:04中启用dns缓存之前:

[(2, 1, 6, '', ('10.96.0.1', 443)), (2, 2, 17, '', ('10.96.0.1', 443)), (2, 3, 0, '', ('10.96.0.1', 443))]
[Errno -5] No address associated with hostname
[Errno -5] No address associated with hostname
[Errno -5] No address associated with hostname

安装dns缓存后f.e. nscd

apt-get install nscd
service nscd start

[(2, 1, 6, '', ('10.96.0.1', 443)), (2, 2, 17, '', ('10.96.0.1', 443)), (2, 3, 0, '', ('10.96.0.1', 443))]
[(2, 1, 6, '', ('10.96.0.1', 443)), (2, 2, 17, '', ('10.96.0.1', 443)), (2, 3, 0, '', ('10.96.0.1', 443))]
[(2, 1, 6, '', ('10.96.0.1', 443)), (2, 2, 17, '', ('10.96.0.1', 443)), (2, 3, 0, '', ('10.96.0.1', 443))]
[(2, 1, 6, '', ('10.96.0.1', 443)), (2, 2, 17, '', ('10.96.0.1', 443)), (2, 3, 0, '', ('10.96.0.1', 443))]
[(2, 1, 6, '', ('10.96.0.1', 443)), (2, 2, 17, '', ('10.96.0.1', 443)), (2, 3, 0, '', ('10.96.0.1', 443))]

您可以在/etc/nscd.conf中验证dns缓存

如果我是正确的-在Ubuntu <17.04中没有缓存DNS

此外-根据ubuntu 14.04.6的官方发布时间表:标准支持终止于2019年4月 希望有帮助。

答案 1 :(得分:0)

请升级您的coredns至最新版本,此问题已在v1.5.1中修复,这里是change log