Можно ли добавить / изменить спецификацию контейнера kubernetes на основе настроек кластера
У меня есть приложение на основе kubernetes, которое использует оператор для создания и развертывания контейнеров в модулях. Иногда я хотел бы запускать контейнеры в привилегированном режиме, чтобы включить трассировку производительности, но поскольку я не развертываю pod/ контейнеры напрямую из манифеста, я не могу просто добавить привилегированный режим и монтирование файловой системы debugfs.
Это оставляет меня для разветвления кода оператора, изменения места, в котором он строит спецификацию контейнера, и повторного развертывания с измененным оператором. Выполнимо, но неловко
Поэтому мой вопрос заключается в том, возможно ли навязывать дополнительные атрибуты для добавления к спецификациям контейнера на основе каких-либо настроек для всего кластера, либо до того, как оператор развернет модули? Или изменить спецификацию контейнера после развертывания? Я попробовал это с kubectl edit pod mypod
, но это не сработало.
Это на физическом кластере, установленном с kubespray.
1 ответ
Есть три вещи для рассмотрения:
Ваш оператор может создать контроллер (например, Deployment) вместо Pod, что позволяет вносить изменения в области Pod Spec, таким образом вызывая развертывание Deployment (см. Динамическую стратегию обновления).
Используйте MutatingAdmissionWebhook, чтобы перед созданием Pod его манифест был изменен / перезаписан на лету. Более подробную информацию о MutatingAdmissionWebhook можно найти здесь и здесь.
Обходное решение в форме изменения спецификации поставки -> замена модуля pod-a. Подробнее об этом обсуждалось здесь.
Пожалуйста, дайте мне знать, если что-то из перечисленного помогло.