在pod中运行systemctl命令时出现访问被拒绝错误。
每当尝试在Pod中启动任何服务(例如MySQL或tomcat服务器)时,都会显示拒绝访问错误。
有什么方法可以在pod中运行systemctl。
答案 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。