您的位置:首页 > 运维架构 > Docker

Job 失败了怎么办?- 每天5分钟玩转 Docker 容器技术(133)

2018-02-23 05:29 573 查看
上一节讨论了 Job 执行成功的情况,如果失败了会怎么样呢?

修改 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 执行效率的方法。

[b]书籍:[/b]

1.《每天5分钟玩转Docker容器技术》
https://item.jd.com/16936307278.html

2.《每天5分钟玩转OpenStack》
https://item.jd.com/12086376.html

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: