Kubernetes Pod:无法获得D-Bus连接



我有一个基于CentOS/SystemD的Docker conterter。我用

运行容器

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

访问群集中的运行pod

如果我现在输入命令systemctl,我会获取错误消息

无法获得D-Bus连接:操作不允许

如何在POD中使用SystemD/SystemCTL?

提示:由于容器内运行的软件而需要Systemd,因此Substisord不是一个选择

这是一个可悲的观察结果,即丹尼尔·沃尔什(Daniel Walsh(Redhat((的旧提案仍在浮动 - 其中包括一个提示,可以通过基本上通过"特权容器"来获得"特权容器"以获得某种系统。与容器外的守护程序交谈。

掉下来。把它忘了吧。除非违反其基本设计,否则您将无法在真正的集群中得到。

,在大多数情况下,在仔细观察时,容器中对系统的需求不是很严格。容器有很多服务经理或Init-daemon隐藏。例如,您可以尝试使用Docker-Systemctl-Replacement脚本。

启动systemd的命令必须在容器中的脚本中。我使用/usr/sbin/init/usr/lib/systemd/systemd --systemd --unit=basic.target。此外,您需要使用TMPFS进行/运行以存储运行时信息。脚本脚本并不容易,而Tableau就是一个很好的例子。

另外,我建议不要不惜一切代价使用 - 因为这是一种安全风险,而且您可能会意外地更改或降低主机,并在容器内部进行更改。

相关内容

  • 没有找到相关文章

最新更新