Как я могу поддерживать набор контейнеров с уникальным номером в kubernetes? - PullRequest
0 голосов
/ 21 июня 2019

Я хочу запустить «набор» контейнеров в kubernetes, каждый из которых отличается только переменными среды докера (каждый ищет свой собственный набор данных, который находится в сетевом хранилище, а затем кэшируется в оперативную память контейнера).Например:

  • контейнер 1 -> набор данных 1
  • контейнер 2 -> набор данных 2

Со временем я хочу добавить (ииногда удаляют контейнеры из этого «набора», но при этом не хотят перезапускать ВСЕ контейнеры.

Из моих (наивных) знаний о kubernetes, единственный способ, которым я могу это сделать, - это:

  • Каждый контейнер может иметь свое собственное развертывание. Однако существуют тысячи контейнеров, поэтому будет сложно изменить и управлять ими.

Итак, мои вопросы:

  1. Могу ли я использовать StatefulSet для управления этим?

    1.1.Когда StatefulSet «обновляется», должен ли он перезапустить все модули, даже если их «спецификация» не изменилась?1.2 Разрешает ли StatefulSets для каждого уникального контейнера / модуля иметь свои собственные переменные среды?

  2. Существует ли какая-либо концепция kubernetes для "группировки" развертываний в какую-то логическую единицу?
  3. Любые другие мысли о том, как реализовать это в kubernetes?
  4. Подойдет ли docker swarm (или другая платформа управления контейнерами) для моего варианта использования?

Ответы [ 2 ]

0 голосов
/ 09 июля 2019

Если вы ожидаете, что ваши контейнеры будут в конечном итоге завершены с их рабочей нагрузкой и завершатся (в отличие от обработки одного элемента, загруженного в ОЗУ навсегда), вы должны использовать очередь заданий, такую ​​как Celery поверх Kubernetes, для управления выполнением.В этом случае Celery выполнит всю оркестровку, включая перезапуск заданий, если они потерпят неудачу.Это гораздо более управляемо, чем прямое использование Kubernetes.

Kubernetes даже предоставляет официальный пример такой настройки.

0 голосов
/ 03 июля 2019

Согласно вашему описанию, StatefulSet это то, что вам нужно.

1,1. Когда StatefulSet «обновлен», должен ли он перезапустить все модули, даже если их «спецификация» не изменилась?

Вы можете выбрать правильную стратегию обновления . Я предлагаю RollingUpdate, но вы можете попробовать все, что вам подходит.

Также ознакомьтесь с этим учебным пособием .

1.2. Разрешает ли StatefulSets для каждого уникального контейнера / модуля иметь свои собственные переменные среды?

Да, потому что их имена согласованы (name-0, name-1, name-2 и т. Д.). С этим вы можете использовать индекс имени хоста (pod name).

Пожалуйста, дайте мне знать, если это помогло.

...