Не удалось создать песочницу модуля: ошибка 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 к процессам контейнера.