【问题标题】:Accumulo cluster deployment in KubernetesKubernetes中的Accumulo集群部署
【发布时间】:2018-11-13 04:59:33
【问题描述】:

我正在尝试使用来自 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 下将扩展实现为有状态集,我如何才能获得类似的结果?我可以根据需要修改容器,创建自己的版本没有问题。

【问题讨论】:

标签: docker kubernetes accumulo


【解决方案1】:

免责声明:仅仅因为它在 docker 上运行并不一定意味着它可以在 Kubernetes 上运行。 Accumulo 是 Hadoop/HDFS 生态系统的一部分,许多组件不一定是生产就绪的。检查我的其他答案:12

Kubernetes 使用 PodCidr 运行其 pod,并且它仅在集群中可见。此外,每个 pod 的 IP 地址不是固定的,这意味着它可以随着它从一个集群移动到另一个集群或当 pod 停止/启动时发生变化。通常在集群中发现服务/pod 的方式是使用DNS。因此,例如对于 master 和 slave 选项,您可能必须指定一个 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 存储,您可以从 Cassandra 如何部署到 Kubernetes 集群中获得启发。希望对您有所帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-01-15
    • 1970-01-01
    • 2019-05-08
    • 1970-01-01
    • 2019-03-29
    • 1970-01-01
    • 1970-01-01
    • 2019-03-19
    相关资源
    最近更新 更多