Kubernetes中的Accumulo集群部署

时间:2018-11-12 16:57:23

标签: docker kubernetes accumulo

我正在尝试使用https://github.com/cybermaggedon/accumulo-docker中的容器在Google Kubernetes Engine中创建3节点部署。我的主要问题是如何使节点相互了解。例如,accumulo/conf/slaves配置文件包含所有节点的列表(名称或IP,每行一个),并且需要在所有节点之间复制。另外,将一个Accumulo节点指定为一个主节点,所有从节点都通过将其指定为conf / masters文件中的唯一名称/ IP来指向它。

Accumulo docker容器的文档通过提供环境变量以这种方式配置每个容器,容器启动脚本依次使用这些变量来重写该容器的配置文件,例如

  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下的有状态集合来实现,如何获得类似的结果?我可以根据需要修改容器,创建自己的版本没有问题。

1 个答案:

答案 0 :(得分:2)

免责声明:仅仅因为它在docker上运行并不一定意味着它可以在Kubernetes上运行。 source code是Hadoop / HDFS生态系统的一部分,许多组件不一定已准备好投入生产。检查我的其他答案:Accumulo1

Kubernetes使用PodCidr运行其Pod,并且仅在集群中可见。同样,每个Pod的IP地址也不固定,这意味着它可以随着从一个群集移动到另一个群集或Pod停止/启动而改变。通常在群集中发现服务/吊舱的方式是使用2。因此,例如,对于主选项和从属选项,您可能必须指定一个Kubernetes DNS(并考虑使用DNS,其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集群上部署StatefulSet的角度进行借鉴。希望对您有帮助!

相关问题