如何在Pod中运行systemctl

时间:2019-05-22 16:13:39

标签: kubernetes

在pod中运行systemctl命令时出现访问被拒绝错误。

每当尝试在Pod中启动任何服务(例如MySQL或tomcat服务器)时,都会显示拒绝访问错误。

有什么方法可以在pod中运行systemctl。

2 个答案:

答案 0 :(得分:1)

这是与Docker有关的问题,而不是与Kubernetes有关的问题。 根据docker docs中的页面Run multiple services in a container

  

通常建议您通过   每个容器使用一项服务

但是,如果您确实要使用流程管理器,则可以尝试 supervisord ,它允许您使用 supervisorctl 命令,类似于 systemctl 。上面的页面说明了如何执行此操作:

  

以下是使用此方法的示例Dockerfile,它假定   预先编写的supervisord.conf,my_first_process和my_second_process   所有文件都与Dockerfile位于同一目录中。

FROM ubuntu:latest
RUN apt-get update && apt-get install -y supervisor
RUN mkdir -p /var/log/supervisor
COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf
COPY my_first_process my_first_process
COPY my_second_process my_second_process
CMD ["/usr/bin/supervisord"]

答案 1 :(得分:1)

这是一个很短的问题。 'systemctl'命令确实尝试与默认情况下未在pod中运行的systemd守护程序进行通讯(但是可以)。运行多个服务是有关服务管理的另一个问题。两种情况都可以使用docker-systemctl-replacement这样的工具来覆盖/ usr / bin / systemctl并将其注册为容器的init-CMD。