k8s statuefulset内的Headless service找不到域名

在做基于k8s的有状态集群部署zookeeper,然后后台文件系统选用的clusterfs,
部署完之后发现zk启动失败,hosts文件中只有自己docker节点的域名,然后报错是无法解析其余两台zk主机的域名

2018-04-02 11:31:07,916 [myid:] - WARN [main:QuorumPeer$QuorumServer@173] - Failed to resolve address: zk-2.zk-hs.default.svc.cluster.local.
java.net.UnknownHostException: zk-2.zk-hs.default.svc.cluster.local.: Name or service not known
at java.net.Inet4AddressImpl.lookupAllHostAddr(Native Method)

server.1=zk-0.zk-hs.default.svc.cluster.local.:2888:3888
server.2=zk-1.zk-hs.default.svc.cluster.local.:2888:3888
server.3=zk-2.zk-hs.default.svc.cluster.local.:2888:3888

我也遇到了楼主同样的问题,只能解析到自己域名,无法解析到集群中另外两个节点的域名。检查k8s的服务是否都是正常的,其中有一个POD专门为DNS
服务的。指令为kubectl get pods -- namespace=kube-system ,如果dns的pod不是处于running状态,就会出现上述楼主的问题,将这个pod成功启动后就可以解析到所有的域名。

ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。