为什么 K8S 要求 Pod 中的 Container 启动时至少有一个进程是前台运行的?
不是很明白为什么必须前台,如果有的进程就是只能后台启动的,那怎么办呢?
不是很明白为什么必须前台,如果有的进程就是只能后台启动的,那怎么办呢?
如果容器的主要任务是个后台进程,那么你的主进程应该监视该后台进程的执行情况,等待该后台进程退出后主进程也退出。
如果牵涉到非网络进程间通信,那就是一个前端进程开启多个子进程。
https://www.v2ex.com/t/454943
https://www.jianshu.com/p/d7dbeffc2dff
从技术的角度,我不喜欢这种做法,非常别扭。但从商业角度来看,是一种很 lazy 又讨巧的上云方案。
这没什么好争的。
打个比方,进程好比人,容器好比一条裤子。人穿上裤子,裤子就跟着站了起来。离了人,裤子当然自己不可能自己站起来了。同时,如果我们看到裤子摊在地上,那可以知道里面一定没藏着人。你在容器里面跑 supervisord / nohup / systemd 这种操作就相当于拿根棍子把裤子强行撑了起来,可能你看着裤子站着呢,但是里面的人已经挂了。
如果想运行多个进程,docker-compose 不香么?
如果又要用 supervisor,又难以承受带来的不便(像 lz 这样),那就叫滥用。