我部署了 kubernetes,并在 coreos 中启用了 flanneld.service。然后我通过 kubernetes 复制控制器启动了 hdfs namenode 和 datanode。我还为 namenode 创建了 kubernetes 服务。namenode服务ip为10.100.220.223,namenode的pod ip为10.20.96.4。就我而言,一个namenode 和一个datanode 恰好位于同一主机上。并且namenode pod和datanode pod可以互相ping通。
但是我在尝试启动hdfs datanode时遇到了以下两个问题:
如果我在 datanode 的 core-site.xml 中使用 namenode 服务 ip 10.100.220.223 作为 fs.defaultFS。当 datanode 尝试通过 rpc 请求将自己注册到 namenode 时,namenode 为 datanode 获取了错误的 IP 地址。通常它应该获取datanode的pod ip,但在这种情况下,datanode主机的docker0 inet地址会报告给namenode。
为了解决这个问题,我在 core-site.xml 中为 datanode 使用了 namenode pod ip 10.20.96.4。这次datanode根本无法启动。错误信息报告“k8s_POD-2fdae8b2_namenode-controller-keptk_default_55b8147c-881f-11e5-abad-02d07c9f6649_e41f815f.bridge”被用作namenode主机而不是namenode pod ip。
我试图通过网络搜索这个问题,但没有任何帮助。你能帮我解决这个问题吗?谢谢。