"UnknownHostException":Zookeeper 3.5.3 和 StatefulSet Kubernetes

"UnknownHostException": Zookeeper 3.5.3 and StatefulSet Kubernetes

Zookeeper 3.5.3-beta 不适用于我的 GCloud Kubernetes Engine。使用与 Zookeeper 3.4.10 相同的配置即可。

当我 运行 客户端完整性测试时,返回的唯一异常是:

2017-11-29 14:27:17,597 [myid:1] - WARN  [QuorumPeer[myid=1](plain=/0:0:0:0:0:0:0:0:2181)(secure=disabled):Learner@273] - Unexpected exception, tries=0, remaining init limit=20000, connecting to zk-2.zk-svc.default.svc.cluster.local:2888
java.net.UnknownHostException: zk-2.zk-svc.default.svc.cluster.local

虽然有人认为此问题与 kube-dns 相关,如前所述 here
kube-dns(dns.go:48] 版本:1.14.4-2-g5584e04)似乎按预期工作:

/ # nslookup zk-0.zk-svc.default.svc.cluster.local
Server:    10.63.240.10
Address 1: 10.63.240.10 kube-dns.kube-system.svc.cluster.local

Name:      zk-0.zk-svc.default.svc.cluster.local
Address 1: 10.60.3.3 zk-0.zk-svc.default.svc.cluster.local
/ # nslookup zk-2.zk-svc.default.svc.cluster.local
Server:    10.63.240.10
Address 1: 10.63.240.10 kube-dns.kube-system.svc.cluster.local

Name:      zk-2.zk-svc.default.svc.cluster.local
Address 1: 10.60.4.3 zk-2.zk-svc.default.svc.cluster.local
/ # nslookup zk-1.zk-svc.default.svc.cluster.local
Server:    10.63.240.10
Address 1: 10.63.240.10 kube-dns.kube-system.svc.cluster.local

Name:      zk-1.zk-svc.default.svc.cluster.local
Address 1: 10.60.2.5 zk-1.zk-svc.default.svc.cluster.local

并且 kube-dns 日志中没有错误。

在 3.4.10 中,第一个节点在初始化时也会产生 UnknownHostExceptions,但最终会提供这种类型的解决指示,但在 3.5.3 中不会

2017-11-29 15:14:39,923 [myid:] - INFO  [main:QuorumPeer$QuorumServer@167] - Resolved hostname: zk-0.zk-svc.default.svc.cluster.local to address: zk-0.zk-svc.default.svc.cluster.local/10.60.4.4

我没有足够的信息来向 Zookeeper 提出问题,因此我将不胜感激有关如何调试此问题的任何建议。

根据最近在 ZOOKEEPER-2343 中的评论,我部署了一个 3.6.0-SNAPSHOT 映像。第二个和第三个节点立即接受客户端请求,但第一个节点不接受并报告 "This ZooKeeper instance is not currently serving requests"。

删除第一个节点可以解决该问题,因为它启动时可以参与仲裁。