kubernetes重启策略的始终和失败有什么区别?

jon*_*alv 13 kubernetes

我发现Kubernetes中重启策略的最佳来源是:

http://kubernetes.io/docs/user-guide/pods/multi-container/#restartpolicy

但它只列出了可能的restartPolicy值,并没有解释它们.

Always和之间有什么区别onFailure?事情重启之前一定不能失败吗?

Pix*_*ant 14

始终意味着即使以零退出代码退出(即成功),容器也将重新启动.当您不关心容器退出的原因时,这很有用,您只需要确保它始终在运行(例如Web服务器).这是默认值.

OnFailure意味着只有在退出时出现非零退出代码(即出错),才会重新启动容器.当您想要使用pod完成某个任务并确保它成功完成时,这非常有用 - 如果不是,它将重新启动,直到它完成.

永远不会意味着容器不会重新启动,无论它退出的原因.

这些不同的重启策略基本上映射到不同的控制器类型,如下所示kubectl run --help:

--restart ="Always":此Pod的重启策略.法律价值[Always,OnFailure,Never].如果设置为"始终",则会为此窗格创建部署,如果设置为"OnFailure",则会为此窗格创建作业,如果设置为"从不",则会创建常规窗格.对于后两者--replicas必须为1.默认为'Always'

pod用户指南:

ReplicationController仅适用于具有RestartPolicy = Always的pod.作业仅适用于RestartPolicy等于OnFailure或Never的Pod.

  • 更新:“如果设置为“始终”,则会为此 Pod 创建部署;如果设置为“OnFailure”,则会为此 Pod 创建一个作业;如果设置为“从不”,则会创建常规 Pod。对于后两个 - -replicas 必须为 1。默认“始终””这在当前的 kubernetes 版本 1.21 中不再显示,并且不再有效。例如,删除已设置“始终重新启动”的 Pod 不会像部署那样被恢复。 (2认同)