Контейнеры "Sidecar" в контейнерах Кубернетес

Мне нужен контейнер с несколькими контейнерами с несколькими компонентами:

  • Основной контейнер, содержащий задание сборки
  • Контейнер "sidecar", содержащий HTTP-прокси, используемый "основным" контейнером

Это, похоже, хорошо соответствует философии дизайна pod как описанной в документации Kubernetes, но я считаю, что пока работает "сидекар", стручок держится в живых. В моем случае "основной" контейнер не долговечен; как только он выйдет, "коляска" должна быть прекращена.

Как я могу это достичь?

Ответ 1

Контейнер работает до тех пор, пока работает один из контейнеров. Если вам нужно, чтобы они вышли вместе, вы должны уложить, что коляска умирает. У нас нет понятия "первичных" и "вторичных" контейнеров по жизненному циклу, хотя это интересно.

Один из вариантов заключается в использовании тома emptyDir и записи файла, в котором говорится, что "время для перехода" в коляску. Коляска выйдет, когда увидит этот файл.

Ответ 3

Эта функция могла быть недоступна, когда задавался вопрос, но теперь можно определить обработчики postStart и preStop для pod. Вероятно, вы можете определить preStop в вашем основном контейнере, чтобы убить контейнер с коляской.

Ответ 4

Вы можете использовать датчик живучести, чтобы помочь с этим. Зонд проверяет "основной" контейнер (а также любые собственные проверки). Как только основной контейнер выходит из строя, датчик жизнеспособности выходит из строя, и затем стручок должен быть переработан.

Ответ 5

Для тех, кто все еще ищет ответ на этот вопрос, разрабатывается функция коляски, которая должна появиться в версии 17.17 Кубернетеса, которая будет иметь именно такое запрашиваемое поведение.

Из предложения:

Описание улучшения в одну строку: теперь контейнеры могут быть помечены как коляски, чтобы они запускались перед обычными контейнерами и закрывались после завершения всех других контейнеров.

https://github.com/kubernetes/enhancements/issues/753