Сопоставление постоянных томов в кластере Elasticsearch с использованием Kubernetes

Мы планируем настроить ES-кластер с использованием Kubernetes. Модуль k8s будет состоять из 3 узлов данных, и мы планируем иметь постоянное отображение томов для данных.

Я новичок как в ES, так и в k8s, но, как я понимаю, в пакете обычно используется общий том. Но в этом случае мы не должны делиться данными трех экземпляров. Как лучше всего получить отображение объема для модуля? Если у меня есть 3 экземпляра, должен ли я отображать каждый отдельно, например / node1 / data, / node2 / data, или я должен просто сопоставить один том '/ data', и ES будет гарантировать, что данные между экземплярами изолированы?

Я не уверен, что у сопоставленного тома должны быть имена узлов, такие как node1, node2 и т. Д., Как описано выше. Правильна ли конструкция модуля с 3 узлами ES (или несколькими узлами данных)? Можно ли указать разные постоянные тома для разных экземпляров узла в модуле?

Что произойдет, если модуль будет закрыт и будет создан новый модуль? Должна ли быть сильная связь между отображаемым томом и именем узла. Как лучше всего этого добиться?


person Dhopu K    schedule 23.07.2017    source источник


Ответы (1)


Во-первых, в некоторой степени это зависит от того, как ваш кластер подготовлен / запущен. Если вы работаете с хорошим облачным провайдером, kube сможет помочь вам с автоматическим созданием PV для вашего PVC (Постоянные тома).

Правильно ли я понял, что вы планируете иметь 3 узла внутри одного модуля? Это звучит неправильно. У вас должно быть 3 отдельных модуля, образующих кластер. Поскольку это служба с отслеживанием состояния, вы можете изучить StatefulSet

Правильно определив PVC в ваших модулях кластера, kube будет следить за тем, чтобы они были правильно привязаны к вашим модулям (т. Е. На AWS AZ всегда планируйте узел в правильной зоне, чтобы он мог связать эти модули PV на основе EBS).

Я бы посоветовал вам начать построение кластера с использованием emptyDir тома в определении вашего модуля, и когда вы его освоите, вы можете перейти к тому, чтобы убедиться, что ваши данные правильно сохраняются, когда модули удаляются и воссоздаются с обновлением вашего развертывания. или StatefulSet.

Примечание: в то время как внутренний том одного модуля может быть смонтирован в нескольких контейнерах этого модуля, не многие бэкенды поддерживают режим доступа ReadWriteMany, позволяющий монтировать один и тот же том в разные модули (например, NFS).

person Radek 'Goblin' Pieczonka    schedule 23.07.2017
comment
Я думал, что под должен содержать все экземпляры кластера. Судя по твоему ответу, я ошибаюсь. Кластер может состоять из нескольких подов. Таким образом, Pod может быть только одним узлом кластера. В ES у нас есть другие типы узлов, такие как «только мастер» и «только клиент», и они также могут находиться в разных подах. верный? - person Dhopu K; 24.07.2017
comment
Точно. В kube pod - это наименьшая организационная единица, которая запланирована на узле. Редко можно использовать Pod напрямую, поскольку он обычно абстрагируется с помощью Deployments, DaemonSets, StatefulSets или Jobs. Вы должны создавать свои кластеры с помощью этих конструкций более высокого уровня, чаще всего вы будете использовать Deployments или StatefulSets. - person Radek 'Goblin' Pieczonka; 24.07.2017