ReplicaSet 和 DaemonSet 会持续运行任务,永远达不到完成态。但在一个可完成的任务中,其进程终止后,不应该再重新启动。
Job 允许你运行一种 pod,该 pod 在内部进程成功结束时,不重启容器,一旦任务完成,pod 就被认为处于完成状态。
在发生节点故障时,该节点上由 Job 管理的 pod 将按照 ReplicaSet 的 pod 的方式,重新安排到其他节点。如果进程本身异常退出(进程返回错误退出代码时),可以将 Job 配置为重新启动容器。
在一个 pod 的定义中,可以指定在容器中运行的进程结束时,Kubemetes 会做什么。这是通过pod配置的属性 restartPolicy 完成的,默认为Always。
Job 不能使用默认策略,因为它们不是要无限期地运行。因此,需要明确地将重启策略设置为OnFailure 或 Never。此设置防止容器在完成任务时重新启动。
Job 完成后 pod 不会被删除,原因是允许用户查阅其日志。