我正在尝试使用https://github.com/cybermaggedon/accumulo-docker中的容器在Google Kubernetes引擎中创建一个3节点部署。我的主要问题是如何让节点相互感知。
Accumulo容器的文档通过提供环境变量来以这种方式配置每个容器,容器启动脚本依次使用环境变量来重写该容器的配置文件,例如
docker run -d --ip=10.10.10.11 --net my_network \
-e ZOOKEEPERS=10.10.5.10,10.10.5.11,10.10.5.12 \
-e HDFS_VOLUMES=hdfs://hadoop01:9000/accumulo \
-e NAMENODE_URI=hdfs://hadoop01:9000/ \
-e MY_HOSTNAME=10.10.10.11 \
-e GC_HOSTS=10.10.10.10 \
-e MASTER_HOSTS=10.10.10.10 \
-e SLAVE_HOSTS=10.10.10.10,10.10.10.11,10.10.10.12 \
-e MONITOR_HOSTS=10.10.10.10 \
-e TRACER_HOSTS=10.10.10.10 \
--link hadoop01:hadoop01 \
--name acc02 cybermaggedon/accumulo:1.8.1h这是一个从节点的启动,它将自己包含在SLAVE_HOSTS中,并指向MASTER_HOSTS中的主节点。
如果我在Kubernetes下将我的伸缩实现为有状态集,我如何实现类似的结果?我可以根据需要修改容器,创建自己的版本没有问题。
发布于 2018-11-13 04:59:33
免责声明:仅仅因为它在docker上运行,并不一定意味着它可以在Kubernetes上运行。Accumulo是Hadoop/HDFS生态系统的一部分,许多组件不一定是生产就绪的。
Kubernetes使用PodCidr运行它的pods,并且它只在集群中可见。此外,每个pod的IP地址不是固定的,这意味着它可能会随着pod从一个群集移动到另一个群集或随着pod的停止/启动而改变。通常在集群中发现服务/pods的方式是使用DNS。因此,例如,对于主选项和从选项,您可能必须指定Kubernetes DNS (并且考虑到您使用的StatefulSet对pod使用序号)。
MASTER_HOSTS=acummulo-0.accumulo.default.svc.cluster.local
SLAVE_HOSTS=acummulo-0.accumulo.default.svc.cluster.local,acummulo-1.accumulo.default.svc.cluster.local,acummulo-2.accumulo.default.svc.cluster.local由于Accumulo是一个分布式K/V存储,您可以从如何在Kubernetes集群上部署Cassandra中获得线索。希望它能帮上忙!
https://stackoverflow.com/questions/53266785
复制相似问题