修改 myjob.yml, 故意引入一个错误:
先删除之前的 Job:
如果将 restartPolicy 设置为 OnFailure 会怎么样? 下面我们实践一下, 修改 myjob.yml 后重新启动
运行新的 Job 并查看状态:
当前 SUCCESSFUL 的 Pod 数量为 0, 查看 Pod 的状态:
可以看到有多个 Pod, 状态均不正常
kubectl describe pod
查看某个 Pod 的启动日志:
日志显示没有可执行程序, 符合我们的预期
下面解释一个现象: 为什么 kubectl get pod 会看到这么多个失败的 Pod?
原因是: 当第一个 Pod 启动时, 容器失败退出, 根据
restartPolicy: Never
, 此失败容器不会被重启, 但 Job DESIRED 的 Pod 是 1, 目前 SUCCESSFUL 为 0, 不满足, 所以 Job controller 会启动新的 Pod, 直到 SUCCESSFUL 为 1 对于我们这个例子, SUCCESSFUL 永远也到不了 1, 所以 Job controller 会一直创建新的 Pod 为了终止这个行为, 只能删除 Job
如果将 restartPolicy 设置为 OnFailure 会怎么样? 下面我们实践一下, 修改 myjob.yml 后重新启动
Job 的 SUCCESSFUL Pod 数量还是为 0, 看看 Pod 的情况:
这里只有一个 Pod, 不过 RESTARTS 为
3
, 而且不断增加, 说明 OnFailure 生效, 容器失败后会自动重启
下一节我们讨论提高 Job 执行效率的方法
来源: https://www.cnblogs.com/CloudMan6/p/8457932.html