Добавить контейнер Sidecar в работающие модули

У меня есть сценарии развертывания Helm для приложения поставщика, которое мы используем. Для решения для ведения журналов мне нужно добавить контейнер sidecar для fluentbit, чтобы отправлять журналы на агрегированный сервер журналов (в данном случае splunk).

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

До сих пор я понял, что контейнер sidecar можно определить внутри того же сценария развертывания (конфигурация развертывания).


person Obaid Maroof    schedule 05.11.2020    source источник
comment
Вы можете прикрепить дополнительный контейнер в YAML определении вашего Deployment. Эта документация может оказаться полезной в этом отношении: Пример мультиконтейнера от Kubernetes.io. Скажите, пожалуйста, это то, что вы искали.   -  person Dawid Kruk    schedule 06.11.2020
comment
спасибо @david. Это необходимо сделать перед развертыванием. Мне было интересно, могу ли я прикрепить контейнер sidecar к уже развернутому (работающему) модулю.   -  person Obaid Maroof    schedule 09.11.2020


Ответы (1)


Отвечая на вопрос в комментариях:

спасибо @david. Это необходимо сделать перед развертыванием. Мне было интересно, могу ли я прикрепить контейнер sidecar к уже развернутому (работающему) модулю.

Вы не можете прикрепить дополнительный контейнер к работающему Pod. Вы можете обновить (исправить) определение ресурса. Это заставит воссоздать ресурс с новой спецификацией.

По поводу этой функции есть проблема с github, которая была закрыта следующим комментарием:

После обсуждения целей SIG Node, явное согласие состоит в том, что список контейнеров в спецификации модуля должен оставаться неизменным. # 27140 лучше обрабатывать с помощью kubernetes / community # 649, что позволяет запускать временный контейнер отладки в существующем модуле. Это не будет реализовано.

- Github.com: Kubernetes: Проблемы: разрешить добавление контейнеров в работающий модуль


Отвечая на часть сообщения:

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

Ниже я включил два метода добавления бокового элемента в Deployment. Оба этих метода перезагрузят Pods в соответствии с новой спецификацией:

  • Используйте $ kubectl patch
  • Отредактируйте Helm Chart и используйте $ helm upgrade

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



Используйте $ kubectl patch

Чтобы полностью избежать редактирования диаграмм Helm, можно использовать:

  • $ kubectl patch

Этот метод исправит существующий Deployment/StatefulSet/Daemonset и добавит сопроводительный элемент. Обратной стороной этого метода является то, что он не автоматизирован, как Helm, и вам нужно будет создать патч для каждого ресурса (каждого _10 _ / _ 11 _ / _ 12_ и т. Д.). В случае каких-либо обновлений из других источников, таких как Helm, этот патч будет отменен.

Документация по обновлению объектов API на месте:


Отредактируйте Helm диаграмму и используйте $ helm upgrade

Этот метод потребует редактирования диаграмм Helm. Внесенные изменения, такие как добавление коляски, сохранятся в обновлениях. После внесения изменений вам нужно будет использовать $ helm upgrade RELEASE_NAME CHART.

Вы можете прочитать больше об этом здесь:

person Dawid Kruk    schedule 16.11.2020