Развертывание кластера Accumulo в Кубернетесе - PullRequest
0 голосов
/ 12 ноября 2018

Я пытаюсь использовать контейнер из https://github.com/cybermaggedon/accumulo-docker для создания 3-х узлового развертывания в Google Kubernetes Engine.Моя главная проблема - как заставить узлы знать друг о друге.Например, файл конфигурации accumulo/conf/slaves содержит список всех узлов (имена или IP-адреса, по одному на строку) и должен быть реплицирован на все узлы.Кроме того, один узел Accumulo назначается главным, и все подчиненные узлы указывают на него, делая его единственным именем / IP в файле conf / masters.

Документация для док-контейнера 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, как мне достичь подобного результата?Я могу изменить контейнер по мере необходимости, у меня нет проблем с созданием собственной версии.

1 Ответ

0 голосов
/ 12 ноября 2018

Отказ от ответственности: просто потому, что он работает в докере, это не обязательно означает, что он может работать в Kubernetes. Accumulo является частью экосистемы Hadoop / HDFS, и многие компоненты не обязательно готовы к производству.Посмотрите мои другие ответы: 1 , 2 .

Kubernetes запускает свои модули, используя PodCidr, и он виден только внутри кластера.Кроме того, IP-адреса в этих для каждого модуля не являются фиксированными, что означает, что он может меняться при перемещении из одного кластера в другой или при остановке / запуске модулей.Обычно службы / модули обнаруживаются в кластере с использованием DNS .Так, например, для параметров master и slave вам, вероятно, придется указать DNS Kubernetes (и учитывая, что вы используете StatefulSet , который использует порядковые номера для модулей)

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.Надеюсь, это поможет!

...