Можно ли добавить / изменить спецификацию контейнера kubernetes на основе настроек кластера

У меня есть приложение на основе kubernetes, которое использует оператор для создания и развертывания контейнеров в модулях. Иногда я хотел бы запускать контейнеры в привилегированном режиме, чтобы включить трассировку производительности, но поскольку я не развертываю pod/ контейнеры напрямую из манифеста, я не могу просто добавить привилегированный режим и монтирование файловой системы debugfs.

Это оставляет меня для разветвления кода оператора, изменения места, в котором он строит спецификацию контейнера, и повторного развертывания с измененным оператором. Выполнимо, но неловко

Поэтому мой вопрос заключается в том, возможно ли навязывать дополнительные атрибуты для добавления к спецификациям контейнера на основе каких-либо настроек для всего кластера, либо до того, как оператор развернет модули? Или изменить спецификацию контейнера после развертывания? Я попробовал это с kubectl edit pod mypod, но это не сработало.

Это на физическом кластере, установленном с kubespray.

1 ответ

Есть три вещи для рассмотрения:

  1. Ваш оператор может создать контроллер (например, Deployment) вместо Pod, что позволяет вносить изменения в области Pod Spec, таким образом вызывая развертывание Deployment (см. Динамическую стратегию обновления).

  2. Используйте MutatingAdmissionWebhook, чтобы перед созданием Pod его манифест был изменен / перезаписан на лету. Более подробную информацию о MutatingAdmissionWebhook можно найти здесь и здесь.

  3. Обходное решение в форме изменения спецификации поставки -> замена модуля pod-a. Подробнее об этом обсуждалось здесь.

Пожалуйста, дайте мне знать, если что-то из перечисленного помогло.

Другие вопросы по тегам