Не удалось создать песочницу модуля: ошибка rpc: code = Unknown desc = seccomp не включен в вашем ядре, не может работать с профилем

У меня проблема с kube & Cri-o. На самом деле я развертываю кластер kube и просто не хочу развертывать панель управления. Я установил CRIO вместо Docker (RHEL8 в производственной среде). Выходной журнал команды "описать модуль":

Events:
  Type     Reason                  Age                 From                   Message
  ----     ------                  ----                ----                   -------
  Normal   Scheduled               11m                 default-scheduler      Successfully assigned kubernetes-dashboard/dashboard-metrics-scraper-6b4884c9d5-fwdv9 to worker-node1
  Warning  FailedCreatePodSandBox  95s (x48 over 11m)  kubelet, worker-node1  Failed to create pod sandbox: rpc error: code = Unknown desc = seccomp is not enabled in your kernel, cannot run with a profile

Я пробовал это: grep SECCOMP /boot/config-$(uname -r)

CONFIG_HAVE_ARCH_SECCOMP_FILTER=y
CONFIG_SECCOMP_FILTER=y
CONFIG_SECCOMP=y

Я думаю, что с этими возвратами это возможно...

Во время установки kube я обнаружил в своей системе файл seccomp.json, я попытался установить абсолютный путь в seccomp_profile в конфигурации CRI-O, но нет... Это не было решением...

Есть у кого-нибудь идеи...?

С Уважением,

1 ответ

Kubernetes Dashboard Deployment yaml, для параметра seccomp по умолчанию установлено значениеseccomp.security.alpha.kubernetes.io/pod: 'runtime/default'

Это означает, что он использует профиль времени выполнения контейнера по умолчанию, который мы можем прочитать здесь

Использование профилей seccomp в подах можно контролировать с помощью аннотаций в PodSecurityPolicy. Seccomp - это альфа-функция Kubernetes.

seccomp.security.alpha.kubernetes.io/defaultProfileName - Аннотация, указывающая профиль seccomp по умолчанию для применения к контейнерам. Возможные значения:

  • unconfined - Seccomp не применяется к процессам контейнера (это значение по умолчанию в Kubernetes), если нет альтернативы.
  • runtime/default - Используется профиль времени выполнения контейнера по умолчанию.
  • docker/default - Используется профиль seccomp Docker по умолчанию. Устарело в Kubernetes 1.11. Использовать runtime/default вместо.
  • localhost/<path> - Укажите профиль как файл на узле, расположенном по адресу <seccomp_root>/<path>, где <seccomp_root> определяется через --seccomp-profile-root флаг на Кубеле.

Существует проблема github для неожиданного поведения с пустым профилем seccomp. В обсуждении @saschagrunert упоминает:

... Как правило, мне не удалось найти какое-либо обобщенное описание:

  • Если профиль указан для модуля, он также применяется ко всем контейнерам
    (сейчас поддерживается только seccomp)
  • Если для контейнера указан профиль, он перезаписывает профиль подов.
  • Мы всегда по умолчанию runtime/default

Я действительно хотел бы применить это с точки зрения безопасности и должным образом задокументировать в специальном разделе безопасности внутри этого репозитория. WDYT?

Кстати, нам, вероятно, следует настаивать на выпуске GA для seccomp и AppArmor, чтобы получить первоклассный API внутри securityContext, как у нас есть для SELinux. См. https://kubernetes.io/docs/tutorials/clusters/apparmor/

Как уже упоминал CptBuko, он нашел обходной путь для себя, установивseccomp.security.alpha.kubernetes.io/pod: unconfined который не применяет seccomp к процессам контейнера.

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