我对pod中的容器垃圾收集有疑问。我有一个主容器和边车容器在一个吊舱中运行。如果主集装箱完成但是边车仍在运行。 Kubernetes垃圾会收集主要容器吗?我们可以保证主要集装箱在边车完工之前不会被垃圾收集吗?如果没有,有没有办法实现这个目标?
MaxPerPodContainer标志如何与此相关?
答案 0 :(得分:0)
来自https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy:
PodSpec有一个
restartPolicy
字段,其值可能为Always
,OnFailure
和Never
。默认值为Always
。的restartPolicy
强> 适用于Pod中的所有容器。
在实践中,这意味着 Pods :
的以下内容restartPolicy: Never
:如果一个容器终止,那么所有其他容器将继续运行restartPolicy: OnFailure
:如果一个容器以错误状态终止,则重新启动该容器;如果它干净地终止(完成),那么容器不会重新启动。在这两种情况下,其他容器继续运行。如果所有容器都干净地终止,则Pod会进入“已完成”状态,并保持这样状态。restartPolicy: Always
:如果一个容器以错误状态终止,那么该容器将重新启动但是,您最有可能使用部署,它在Pod模板中强制要求restartPolicy: OnFailure
。这意味着如果容器终止,则将重新启动容器。容器只能运行几分钟是不可能的。
根据您的尝试,initContainers
可能是一种解决方案。
也许像这样尝试一下Pod:
kind: Pod
metadata:
name: busybox
spec:
restartPolicy: Always
containers:
- name: date
image: busybox
command: ["sh","-c","while date; do sleep 1; done"]
- name: sleep15
image: busybox
command: ["sh","-c","sleep 15; exit 1"]