автор Todd Neal (AWS), Matthias Bertschy (ARMO), Sergey Kanzhelev (Google), Gunju Kim (NAVER), Shannon Kularathna (Google)
В этой статье описывается, как использовать новую функцию Sidecar, которая позволяет настраивать перезапускаемые контейнеры Init и доступна в альфа-статусе в Kubernetes 1.28. Мы хотим услышать ваши отзывы, чтобы мы могли как можно скорее перевести эту функцию в выпускную версию.
«Коляска» Практически с самого начала концепция Kubernetes часть. 2015 год В 2016 году вышла статья о контейнерах с коляской. Сообщение в блоге[1] Дополнительный контейнер описывается как дополнительный контейнер, который «расширяет и улучшает «основной» контейнер». Контейнеры с коляской стали обычным явлением Kubernetes Режим развертывания, обычно используемый для сетевых прокси или как часть системы журналирования. До сих пор коляска была Kubernetes Концепции, которые пользователи применяют при отсутствии встроенной поддержки. Отсутствие встроенной поддержки также вызывает некоторые трудности при использовании, которые призвано устранить это усовершенствование.
Kubernetes 1.28 существовать Инициализирующий контейнер[2]Был добавлен новыйиз restartPolicy
поле, поле может существовать SidecarContainers
Функция стробирования[3] Используется, когда включено.
apiVersion: v1
kind: Pod
spec:
initContainers:
- name: secret-fetch
image: secret-fetch:1.0
- name: network-proxy
image: network-proxy:1.0
restartPolicy: Always
containers:
...
Это поле является необязательным, и если оно установлено, единственным допустимым значением является Всегда. Установка этого поля меняет поведение контейнера Init следующим образом:
Pod прекратить[5] 继续只根据хозяинконтейнерсудить。restartPolicy
для Always
из всех Init контейнер(сказатьдля Коляска) не заблокирует Pod существоватьхозяинконтейнер Войти после выходапрекращениесостояние。
Следующие свойства перезапускаемого контейнера Init делают его хорошо подходящим для шаблона развертывания сопровождения:
restartPolicy
,Init контейнер четко определил последовательность запуска. Так что можете убедиться в списке вконтейнер с коляскойвстречасуществовать После заявления о коляскеиз всеконтейнер стартовал раньше.Встроенный боковой контейнер может оказаться полезным для следующих рабочих нагрузок:
существования До того, как была введена функция коляски, были доступны следующие варианты реализации путешествия в коляске в соответствии с ожидаемым жизненным циклом с использованием следующих опций:
Встроенная функция Sidecar предназначена для сценариев, в которых жизненный цикл аналогичен жизненному циклу Pod, со следующими дополнительными преимуществами:
Мы рекомендуем существовать Alpha 阶段тольковерноКратковременное хранилище существует в тестовом кластере[7]Включить функцию ограничения функции коляски。Если у вас уже есть настроенныйдляхозяинконтейнериз Коляска,且它Можетсуществовать Pod работает на протяжении всего своего жизненного цикла, тогда вы можете переместить его в Pod Законодательный initContainers
часть и будет restartPolicy
Настройки Always
。существоватьмного случаев,контейнер с коляской может продолжать Работу, как и раньше, а дополнительным преимуществом является то, что последовательность запуска может быть определена и не будет продлеваться. Pod жизненный цикл.
Встроенный контейнер с коляской Alpha Версия имеет следующие известные проблемы, мы обновим эту функцию для Beta Решите эти проблемы заранее:
kubectl describe node
Описание команды из узла из вывода неверно. Вывод показывает, что использование ресурсов ниже фактического использования, поскольку для него не рассчитывается контейнер. с использование ресурсов коляскойиз.существовать Alpha этап, мы надеемся, что вы выживете вне окружающей среды, попробуйте контейнер с коляской, и существуют ошибки или необычные моменты при регистрации проблем. Мы особенно заинтересованы в обратной связи по следующим аспектам:
Чтобы зарегистрировать вопрос, пожалуйста, посетите Репозиторий Kubernetes на GitHub[8]。
Помимо решенияиз Помимо известных проблем,мысуществоватьусилиедля Коляскаихозяинконтейнердобавить впрекращениезаказ。прекращениезаказ能够确保контейнер с коляскойтолькосуществовать Pod Он завершается после выхода из основного контейнера.
Мы рады видеть в Kubernetes функцию Sidecar и заинтересованы в обратной связи.
Прошло много лет с момента написания оригинального KEP, поэтому примите наши извинения, если мы не упомянули людей, которые работали над этой функцией на протяжении многих лет. Мы делаем все возможное, чтобы отметить людей, причастных к этой работе.
[1]
Сообщение в блоге: https://kubernetes.io/blog/2015/06/the-distributed-system-toolkit-patterns/
[2]
Init контейнер: https://kubernetes.io/zh-cn/docs/concepts/workloads/pods/init-containers/
[3]
Особенности ворот: https://kubernetes.io/zh-cn/docs/reference/command-line-tools-reference/feature-gates/
[4]
startupProbe: https://kubernetes.io/zh-cn/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/#define-startup-probes
[5]
Pod прекращение: https://kubernetes.io/zh-cn/docs/concepts/workloads/pods/pod-lifecycle/#pod-termination
[6]
Istio в Kubernetes Роднойконтейнер с коляской Сообщение в блоге: https://istio.io/latest/blog/2023/native-sidecars/
[7]
Кратковременное хранение существуетиз тестового кластера: https://kubernetes.io/zh-cn/docs/reference/command-line-tools-reference/feature-gates/#feature-stages
[8]
Kubernetes GitHub склад: https://github.com/kubernetes/kubernetes/issues/new/choose
[9]
mrunalp: https://github.com/mrunalp/
[10]
thockin: https://github.com/thockin/
[11]
bobbypage: https://github.com/bobbypage
[12]
smarterclayton: https://github.com/smarterclayton
[13]
howardjohn: https://github.com/howardjohn
[14]
derekwaynecarr: https://github.com/derekwaynecarr
[15]
dchen1107: https://github.com/dchen1107
[16]
jpbetz: https://github.com/Jpbetz
[17]
Joseph-Irving: https://github.com/Joseph-Irving
[18]
rata: https://github.com/rata
[19]
swatisehgal: https://github.com/swatisehgal
[20]
ffromani: https://github.com/ffromani
[21]
alculquicondor: https://github.com/Alculquicondor
[22]
wojtek-t: https://github.com/Wojtek-t
[23]
ahg-g: https://github.com/ahg-g
[24]
adisky: https://github.com/Adisky
[25]
контейнер с коляской API: https://kubernetes.io/zh-cn/docs/concepts/workloads/pods/init-containers/#api-for-sidecar-containers
[26]
Sidecar KEP: https://github.com/kubernetes/enhancements/blob/master/keps/sig-node/753-sidecar-containers/README.md