Kubernetes 1.28: Знакомство с нативными сопроводительными контейнерами
Kubernetes 1.28: Знакомство с нативными сопроводительными контейнерами

автор 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?

Kubernetes 1.28 существовать Инициализирующий контейнер[2]Был добавлен новыйиз restartPolicy поле, поле может существовать SidecarContainersФункция стробирования[3] Используется, когда включено.

Язык кода:javascript
копировать
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 следующим образом:

  • Перезагрузить, если контейнер выйдет
  • все последующие Init контейнерсуществовать startupProbe[4]Запуск сразу после успешного завершения,Вместо ожидания вы можете перезапустить контейнер Init. Выход.
  • Pod из Расчет использования ресурсов изменился, поэтому его можно перезапуститьиз Init Контейнер ресурса теперь добавлен в основной список запросов ресурсов контейнера.

Pod прекратить[5] 继续只根据хозяинконтейнерсудить。restartPolicy для Always из всех Init контейнер(сказатьдля Коляска) не заблокирует Pod существоватьхозяинконтейнер Войти после выходапрекращениесостояние。

Следующие свойства перезапускаемого контейнера Init делают его хорошо подходящим для шаблона развертывания сопровождения:

  • Независимо от того, установили ли вы restartPolicy,Init контейнер четко определил последовательность запуска. Так что можете убедиться в списке вконтейнер с коляскойвстречасуществовать После заявления о коляскеиз всеконтейнер стартовал раньше.
  • контейнер с коляска не будет удлиняться Pod изжизненный цикл, так что вы можете прожить более короткую жизнь из Pod используется в их, не меняя Pod жизненный цикл。
  • контейнер с коляскойсуществовать перезапустится при выходе,Это повышает надежность,Это позволяет использовать коляску для обеспечения более надежного обслуживания.

Когда использовать контейнеры с коляской

Встроенный боковой контейнер может оказаться полезным для следующих рабочих нагрузок:

  • Пакетные рабочие нагрузки или рабочие нагрузки AI/ML,Или это закончится после некоторого пробегаиздругой Под. Эти рабочие нагрузки получат наиболее значительные выгоды.
  • существоватьв спискеиз всехдругойконтейнер Начни раньшеизсетевой прокси。бегатьиз Все Другие контейнеры могут использовать службу прокси-контейнеризации. Инструкции см. Istio в Kubernetes Роднойконтейнер с коляскойблогстатья[6]
  • Контейнер для сбора журналов,сейчассуществовать Можетсуществовать任何другойконтейнер Начни раньше并运行至 Pod прекращение. это улучшает Pod Надежность сбора журналов.
  • Операция,Вы можете использовать коляску для любых целей,и Job завершение не будет блокироваться положительным существованием хода из коляски. Для обеспечения такого поведения не требуется никакой дополнительной настройки.

1.28. Как пользователи раньше реализовывали поведение коляски?

существования До того, как была введена функция коляски, были доступны следующие варианты реализации путешествия в коляске в соответствии с ожидаемым жизненным циклом с использованием следующих опций:

  • Жизненный цикл Sidecar меньше жизненного цикла Pod:использовать Init контейнер, этот тип контейнера обеспечивает четко определенную последовательность запуска. Однако коляска должна выехать, чтобы позволить другим Init контейнерихозяин Pod контейнерзапускать。
  • Жизненный цикл коляски такой же, как жизненный цикл Pod.:использовать与 Pod ВРабота загрузки контейнера выполняется вместе с основным контейнером. Этот метод не позволяет контролировать последовательность загрузки и контейнера. с коляска может быть заблокирована после выхода из существующего Работа грузового контейнера Pod прекращение.

Встроенная функция Sidecar предназначена для сценариев, в которых жизненный цикл аналогичен жизненному циклу Pod, со следующими дополнительными преимуществами:

  • Обеспечивает контроль над последовательностью загрузки.
  • Не запрещайте подам завершать работу

Перевод существующих колясок на новые модели

Мы рекомендуем существовать Alpha 阶段тольковерноКратковременное хранилище существует в тестовом кластере[7]Включить функцию ограничения функции коляски。Если у вас уже есть настроенныйдляхозяинконтейнериз Коляска,且它Можетсуществовать Pod работает на протяжении всего своего жизненного цикла, тогда вы можете переместить его в Pod Законодательный initContainers часть и будет restartPolicy Настройки Always。существоватьмного случаев,контейнер с коляской может продолжать Работу, как и раньше, а дополнительным преимуществом является то, что последовательность запуска может быть определена и не будет продлеваться. Pod жизненный цикл.

Известные проблемы

Встроенный контейнер с коляской Alpha Версия имеет следующие известные проблемы, мы обновим эту функцию для Beta Решите эти проблемы заранее:

  • CPU、Память、оборудованиеи Менеджер топологии не знает об этом.контейнер с коляскойизжизненный циклы Дополнительное использование ресурсов, они будут основаны на Pod Запускайте в предположении, что запросы ресурсов ниже фактического использования. Pod。
  • При использовании коляски,kubectl describe node Описание команды из узла из вывода неверно. Вывод показывает, что использование ресурсов ниже фактического использования, поскольку для него не рассчитывается контейнер. с использование ресурсов коляскойиз.

Нам нужны ваши отзывы!

существовать Alpha этап, мы надеемся, что вы выживете вне окружающей среды, попробуйте контейнер с коляской, и существуют ошибки или необычные моменты при регистрации проблем. Мы особенно заинтересованы в обратной связи по следующим аспектам:

  • Завершение последовательности, особенно когда несколько колясок едут вместе.
  • Регулировка тайм-аута резервного перезапуска коляски
  • Время работы коляски Pod Проверка готовности и работоспособности и строка для

Чтобы зарегистрировать вопрос, пожалуйста, посетите Репозиторий Kubernetes на GitHub[8]

Что дальше?

Помимо решенияиз Помимо известных проблем,мысуществоватьусилиедля Коляскаихозяинконтейнердобавить впрекращениезаказ。прекращениезаказ能够确保контейнер с коляскойтолькосуществовать Pod Он завершается после выхода из основного контейнера.

Мы рады видеть в Kubernetes функцию Sidecar и заинтересованы в обратной связи.

Благодарности

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

  • mrunalp[9] Участие в обсуждениях и обзорах дизайна.
  • thockin[10] на протяжении многих лет API Обсуждение и поддержка
  • bobbypage[11] обзор
  • smarterclayton[12] подробный обзор и обратная связь
  • howardjohn[13] на протяжении многих лет Обратная связь и существование Процесс реализациив Ранние попытки
  • derekwaynecarr[14] и dchen1107[15] лидерство
  • jpbetz[16] верно API ипрекращение сортировки дизайна и проверки кода
  • Joseph-Irving[17] и rata[18] Много лет назад участвовал в проектировании и анализе ранней итерации.
  • swatisehgal[19] и ffromani[20] Ранние отзывы о влиянии Explorer
  • alculquicondor[21] Пин-код действительно связан с отклонением версии планировщика по отзывам - wojtek-t[22] верно KEP из PRR обзор
  • ahg-g[23] верно KEP из Обзор части планировщика
  • adisky[24] Решение вопросов завершения операции

Дополнительная информация

  • читать Kubernetes документвконтейнер с коляской API[25]
  • читать Sidecar KEP[26]

Ссылки

[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

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose