Сериализация развертывания стручков / рулевых карт - PullRequest
0 голосов
/ 04 декабря 2018

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

Требуется сериализовать развертывание модулей, т. Е. До того, как будет развернут второй модуль, необходимо подготовить первый модуль.в рабочем состоянии.(потому что второй модуль читает значения из первого модуля).Третий модуль снова должен появиться только после того, как второй модуль запущен и работает или завершен.

Я пытался использовать для этого ловушки штурвала Umbrella, но они оцениваются на уровне объекта диаграммы, а не на наборе диаграмм.

Я искал контейнер инициализации, который регулярно проверяет тест готовности (не уверен, можно ли это сделать) первого модуля перед запуском второго модуля?не уверен - идеи, пожалуйста ...

1 Ответ

0 голосов
/ 04 декабря 2018

Инициативные контейнеры

Если вы не возражаете, чтобы ваши предыдущие службы работали до завершения, прежде чем запускать следующие, вы можете воспользоваться функцией Инициативных контейнеров: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/

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

Поведение

Во время запуска модуля начальные контейнеры запускаются по порядку, после инициализации сети и томов.Каждый контейнер должен успешно завершиться до запуска следующего.Если контейнер не запускается из-за времени выполнения или завершается с ошибкой, он повторяется в соответствии с Pod restartPolicy.Однако, если Pod restartPolicy имеет значение Always, контейнеры инициализации используют RestartPolicy OnFailure.

Модуль не может быть готов, пока все контейнеры инициализации не будут выполнены успешно.Порты в контейнере инициализации не агрегированы в службе.Модуль, который инициализируется, находится в состоянии «Ожидание», но для него должно быть установлено условие «Инициализация», равное true.

Если модуль перезапускается, все начальные контейнеры должны выполняться снова.

https://kubernetes.io/docs/concepts/workloads/pods/init-containers/#detailed-behavior

Предостережения

Пожалуйста, ознакомьтесь с различиями и ограничениями в документации, прежде чем принять решение об использовании этой функции.

т.е.

Отличия от обычных контейнеров

Контейнеры инициализации поддерживают все поля и функции контейнеров приложения, включая ограничения ресурсов, объемы и параметры безопасности.Однако запросы ресурсов и ограничения для контейнера Init обрабатываются немного по-другому,

...