Kubernetes-一个容器如何由两个进程启动并绑定到两个进程?

我需要一个部署,其中每个Pod有一个容器,每个容器有2个Java进程正在运行。因为,容器以进程(P1)开始,并且如果该特定进程(P1)被终止,则容器重新启动。我是否有可能以两个过程开始启动容器,即使其中之一被杀死,容器(或本例中的容器,因为每个容器只有一个容器)也会重新启动?我找不到与此相关的任何文档,说明无法完成。另外,如何通过2个进程启动容器?如果我在docker映像中尝试类似的操作(javaProcess是一个Java文件),它将仅运行第一个进程:

java -jar abc.jar
java javaProcess
or 
java javaProcess
java -jar abc.jar

如果我用一个进程(P1)启动容器,然后在容器启动后启动另一个进程(P2),则该容器将不会绑定到P2,因此,如果P2终止,则该容器将不会重新启动。但是,我需要它重新启动!

阿努鲁达(Anuruddha Lanka)Liyanarachchi

您可以使用超级用户来执行此操作您的主进程应绑定到docker image中的超级用户,并且两个Java进程应使用超级用户进行管理。

主管的主要目的是根据其配置文件中的数据创建和管理流程。它通过创建子流程来实现。主管产生的每个子流程在整个生命周期中都由主管管理(supervisord是其创建的每个流程的父流程)。当孩子死亡时,监督者会通过SIGCHLD信号通知其死亡,并执行适当的操作。

以下是启动两个Java进程的示例监督配置文件。(supervisord.conf)

[supervisord]
nodaemon=true

[program:java1]
user=root
startsecs = 120
autorestart = true
command=java javaProcess1

[program:java2]
user=root
startsecs = 120
autorestart = true
command=java javaProcess2

在您的docker文件中,您应该执行以下操作:

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Kubernetes上同一Pod中的两个容器

如何创建一个跨越两个区域的GCP Kubernetes Engine集群?

使用 Kubernetes Nginx Ingress 将两个端点合并为一个服务

创建一个指向两个服务的Kubernetes入口

如何使两个Kubernetes Services相互通信?

Kubernetes-Ingress:如何使用HTTPS正确路由到两个服务?

将Kubernetes Pod限制为一个进程

如何确定我有一个带有两个线程的进程,还是两个进程?

Kubernetes-在两个容器之间和外部单词进行通信的最佳方式

需要帮助在 kubernetes 上的单个 pod 中运行两个操作系统容器

使用环境变量将两个容器与 Kubernetes 连接

Kubernetes:为什么需要两个以上的节点?

是否可以加入两个单独的kubernetes集群?

Nginx请求Kubernetes中的两个或更多节点

在Azure中为kubernetes配置两个环境

kubernetes中的两个单独的hazelcast集群

urxvt 启动两个进程

FFMPEG:一个动作的两个进程

是否可以从Kubernetes中的另一个容器动态启动一个容器

两个cronjobs不起作用(一个启动一个进程,一个停止一个进程)

为什么“ watch”命令启动两个“ watch”和一个“ sh”进程?

在同一kubernetes集群上安装两个traefik入口控制器

如何使Kubernetes中同一部署的两个Pod之间的环境变量不同?

如何在Kubernetes中使用卷挂载合并两个配置映射

如何防止两个卷声称在Kubernetes上主张相同的卷?

为什么我的 k8s Nginx 入口控制器提供两个证书(其中一个是 Kubernetes 假证书)?

如何在两个CPU上分配一个进程

有没有办法将两个具有相同应用程序的容器连接到Kubernetes上的同一数据库?

从bash生成两个进程,如果两个同一个退出,则退出两个进程