1

此设置在 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

我可以卷曲集群 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

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

4

1 回答 1

2

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

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

于 2018-08-31T17:22:03.777 回答