此设置在Amazon EKS群集上运行。
我收到一个错误,其中pod上的主机名无法解析到群集IP。
$ curl -vvv myservice:10000
* Rebuilt URL to: myservice:10000/
* Hostname was NOT found in DNS cache
env vars具有正确的服务名称,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
容器是否跳过了加载主机名+服务信息的步骤?
我为整个工作节点安全组中的所有流量创建了一个入口规则,它开始工作。看起来容器在与具有kube-dns pod的主机不同的主机上存在问题。可能有更好的解决方案,但截至目前,这已解决了我的问题。
编辑:以前的答案没有解决我的问题。问题最终是三个节点中有两个在/etc/systemd/system/kubelet.service中有错误的集群ip。解决后,所有pod都能够解析DNS。它之前被暂时修复,因为吊舱巧合地在单个工作节点上旋转。