【问题标题】:kubernetes DNS lookup failureKubernetes DNS 查找失败
【发布时间】:2019-02-06 18:00:41
【问题描述】:

此设置在 Amazon EKS 集群上运行。

我收到一个错误,其中 pod 上的主机名无法解析为集群 ip。

$ curl -vvv myservice:10000
* Rebuilt URL to: myservice:10000/
* Hostname was NOT found in DNS cache

环境变量具有正确的服务名称、IP 和端口。

$ env | grep MYSERVICE
MYSERVICE_PORT_10000_TCP_PORT=10000
MYSERVICE_PORT=tcp://172.xx.xx.36:10000
MYSERVICE_PORT_10000_TCP=tcp://172.xx.xx.36:10000
MYSERVICE_PORT_10000_TCP_PROTO=tcp
MYSERVICE_SERVICE_PORT=10000
MYSERVICE_PORT_10000_TCP_ADDR=172.xx.xx.36
MYSERVICE_SERVICE_HOST=172.xx.xx.36
MYSERVICE_SERVICE_PORT_MYSERVICE=10000

我可以 curl 集群 ip/port 并获得所需的响应。

/etc/resolv.conf 看起来像

$ cat /etc/resolv.conf
nameserver 172.20.0.10
search default.svc.cluster.local svc.cluster.local cluster.local ec2.internal
options ndots:5

容器是否跳过了加载主机名+服务信息的步骤?

【问题讨论】:

    标签: kubernetes amazon-eks


    【解决方案1】:

    我为整个工作节点安全组中的所有流量创建了一个入口规则,它开始工作。看起来与具有 kube-dns pod 的主机不同的主机上的容器存在问题。可能有更好的解决方案,但到目前为止,这已经解决了我的问题。

    编辑:上一个答案没有解决我的问题。问题最终是三分之二的节点在 /etc/systemd/system/kubelet.service 中有错误的集群 IP。解决后,所有 pod 都能够解析 DNS。之前临时修复了,因为 pod 巧合地在单个工作节点上旋转。

    【讨论】:

    • 我的 IBM cloud ks 是多区域的,我也面临同样的问题。我复制了我的无状态上游服务以将其安排到子网中的所有节点作为临时修复。我可以从正在讨论的服务的 pod 中 curl 上游服务,但应用程序代码仍然无法解析。知道为什么吗?
    猜你喜欢
    • 2018-11-30
    • 1970-01-01
    • 2016-07-13
    • 2018-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-27
    • 1970-01-01
    相关资源
    最近更新 更多