Kubernetes集装箱垃圾收集
我有一个关于容器内垃圾收集的问题。 我有一个主容器和边车容器在一个吊舱中运行。 如果主货柜完成,但边柜仍在运行。 Kubernetes垃圾收集主要容器? 我们可以保证主箱不会被垃圾收集,直到边车结束? 如果没有,是否有办法实现这一点?
MaxPerPodContainer标志如何与此相关?
从https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy :
PodSpec有一个可能值为
Always
,OnFailure
和Never
的restartPolicy
字段。 默认值是Always
。restartPolicy
适用于Pod中的所有容器。
在实践中,这意味着以下的豆荚 :
-
restartPolicy: Never
:如果一个容器终止,那么所有其他容器将继续运行 -
restartPolicy: OnFailure
:如果一个容器以错误状态终止,那么该容器重新启动; 如果干净地终止(完成),则容器不重新启动。 在这两种情况下,其他容器保持运行。 如果所有的容器干净地结束Pod进入完成状态并且保持那样。 -
restartPolicy: Always
:如果一个容器终止于错误状态,那么该容器重新启动
但是,您最有可能使用部署 ,该部署要求Pod模板中的restartPolicy: OnFailure
。 这意味着如果一个容器终止,容器将被重新启动。 有一个只能运行几分钟的容器是不可能的。
根据你正在尝试做什么initContainers
可能是一个解决scheme。
也许用这样的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"]