我的理解是,如果将一个容器配置为具有一个容器,则该容器将以PID 1的形式运行其“主”进程。我的吊舱每个只有一个容器,而且它们经常有多个运行的进程(总是同一进程的副本)-为什么会发生这种情况?
在一个群集上,我有:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.3 0.4 276668 76076 ? Ssl 16:50 0:48 python manage.py drive_consumer_worker
root 19 0.0 0.0 34432 2756 ? Rs 20:28 0:00 ps aux
在另一个群集(运行相同的Deployment
)上,我有:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 1.2 0.3 1269420 104388 ? Ssl Mar16 240:12 python manage.py drive_consumer_worker
root 26 0.0 0.2 1044312 84160 ? S Mar16 0:01 python manage.py drive_consumer_worker
root 30 0.0 0.0 34440 2872 ? Rs 20:30 0:00 ps aux
如您所见,内存大小足够大,足以表明这是一个“真实”的过程,但是我不知道该怎么做才能继续调试。我看不到任何定义了Pod副本数和进程数的模式。
部署定义中的摘录:
containers:
- args:
- newrelic-admin run-program python manage.py drive_consumer_worker
command:
- /bin/bash
- -c
这是怎么回事?
答案 0 :(得分:1)
这实际上取决于父进程,如果它不产生任何子进程,则1
就是容器中的全部内容。在这种情况下,python manage.py drive_consumer_worker
似乎正在生成子进程,因此,如果容器中有更多进程,则由应用程序来控制是否生成子进程。