Kubernetes Pod: не удалось получить соединение по шине D-Bus - PullRequest
0 голосов
/ 23 мая 2019

У меня есть докер-контейнер, основанный на centos / systemd.Я запускаю контейнер с

docker run -d --privileged -v /sys/fs/cgroup:/sys/fs/cgroup:ro <image>

Затем я могу получить доступ к контейнеру с:

docker exec -ti <containerID> /bin/bash

Затем я могу перечислить все загруженные единицыс помощью команды systemctl.Это работает нормально.

Теперь я хочу развернуть образ в кластер kubernetes, это также отлично работает, и я могу получить доступ к работающему модулю в кластере через kubectl exec -ti <pod> /bin/bash

Если я наберу сейчаскоманда systemctl я получаю сообщение об ошибке

Не удалось получить соединение по шине D-Bus: операция не разрешена

Как сделать systemd / systemctl доступным вpod?

СОВЕТ: Требуется systemd из-за программного обеспечения, работающего внутри контейнера, поэтому супервизор здесь не вариант

1 Ответ

1 голос
/ 25 мая 2019

Это печальное наблюдение, что старое предложение от Дэниела Уолша (Redhat) все еще витает вокруг - что включает в себя подсказку для запуска «привилегированного контейнера» для получения некоторого системного поведения, в основном разговаривая с демоном вне контейнера .

Брось это. Просто забудь это. Вы не можете получить это в реальном кластере, если не нарушите его базовый дизайн.

И в большинстве случаев требование systemd в контейнере не является очень строгим, если присмотреться. Для контейнеров существует целый ряд имплантаций service-manager или init-daemon. Например, вы можете попробовать использовать скрипт docker-systemctl-replace .

...