Kubernetes的集装箱垃圾收集

时间:2017-10-20 20:56:19

标签: docker garbage-collection kubernetes containers

我对pod中的容器垃圾收集有疑问。我有一个主容器和边车容器在一个吊舱中运行。如果主集装箱完成但是边车仍在运行。 Kubernetes垃圾会收集主要容器吗?我们可以保证主要集装箱在边车完工之前不会被垃圾收集吗?如果没有,有没有办法实现这个目标?

MaxPerPodContainer标志如何与此相关?

1 个答案:

答案 0 :(得分:0)

来自https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy

  

PodSpec有一个 restartPolicy 字段,其值可能为Always,   OnFailureNever。默认值为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"]