Контейнеры "Sidecar" в контейнерах Кубернетес
Мне нужен контейнер с несколькими контейнерами с несколькими компонентами:
- Основной контейнер, содержащий задание сборки
- Контейнер "sidecar", содержащий HTTP-прокси, используемый "основным" контейнером
Это, похоже, хорошо соответствует философии дизайна pod как описанной в документации Kubernetes, но я считаю, что пока работает "сидекар", стручок держится в живых. В моем случае "основной" контейнер не долговечен; как только он выйдет, "коляска" должна быть прекращена.
Как я могу это достичь?
Ответы
Ответ 1
Контейнер работает до тех пор, пока работает один из контейнеров. Если вам нужно, чтобы они вышли вместе, вы должны уложить, что коляска умирает. У нас нет понятия "первичных" и "вторичных" контейнеров по жизненному циклу, хотя это интересно.
Один из вариантов заключается в использовании тома emptyDir и записи файла, в котором говорится, что "время для перехода" в коляску. Коляска выйдет, когда увидит этот файл.
Ответ 2
Считаете ли вы использование ресурса http://kubernetes.io/docs/user-guide/jobs/?
Ответ 3
Эта функция могла быть недоступна, когда задавался вопрос, но теперь можно определить обработчики postStart и preStop для pod. Вероятно, вы можете определить preStop в вашем основном контейнере, чтобы убить контейнер с коляской.
Ответ 4
Вы можете использовать датчик живучести, чтобы помочь с этим. Зонд проверяет "основной" контейнер (а также любые собственные проверки). Как только основной контейнер выходит из строя, датчик жизнеспособности выходит из строя, и затем стручок должен быть переработан.
Ответ 5
Для тех, кто все еще ищет ответ на этот вопрос, разрабатывается функция коляски, которая должна появиться в версии 17.17 Кубернетеса, которая будет иметь именно такое запрашиваемое поведение.
Из предложения:
Описание улучшения в одну строку: теперь контейнеры могут быть помечены как коляски, чтобы они запускались перед обычными контейнерами и закрывались после завершения всех других контейнеров.
https://github.com/kubernetes/enhancements/issues/753