【问题标题】:Ubuntu 14.04 client failed to resolve k8s service nameUbuntu 14.04 客户端无法解析 k8s 服务名称
【发布时间】: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


    【解决方案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 缓存

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

    此外 - 根据 ubuntu 14.04.6 的官方发布时间表:标准支持将于 2019 年 4 月结束 希望对您有所帮助。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-05-24
        • 1970-01-01
        • 2013-06-25
        • 2016-12-08
        • 2020-05-18
        • 1970-01-01
        • 2019-12-18
        • 1970-01-01
        相关资源
        最近更新 更多