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

本文探讨了在Docker Job失败时的处理方式,包括Job的Pod数量变化、失败容器重启策略。通过修改`backoffLimit`和`completions`参数,观察Job的行为,展示了如何控制Job在失败时的行为,并介绍了如何终止不断创建的Pod。
摘要由CSDN通过智能技术生成

第133篇

Job 失败了怎么办?

上一节讨论了 Job 执行成功的情况,如果失败了会怎么样呢?

修改 myjob.yml,故意引入一个错误:

1058218d00486e8e3b06e3c1408e853c.png

先删除之前的 Job:

92fff71c10fd6956c6b5981d56f2cc76.png

如果将 restartPolicy 设置为 OnFailure 会怎么样?下面我们实践一下,修改 myjob.yml 后重新启动。

运行新的 Job 并查看状态:

1370a8b1abbd5f8034aef7cbc4dea03e.png

当前 SUCCESSFUL 的 Pod 数量为 0,查看 Pod 的状态:

51c04c4f1d7fe63b5069b2cf8b62b7bb.png

可以看到有多个 Pod,状态均不正常。kubectl describe pod 查看某个 Pod 的启动日志:

e5ef4710a3846e809bb60f55b2c7e9a2.png

日志显示没有可执行程序,符合我们的预期。

下面解释一个现象:为什么 kubectl get pod 会看到这么多个失败的 Pod?

原因是:当第一个 Pod 启动时,容器失败退出,根据 restartPolicy: Never,此失败容器不会被重启,但 Job DESIRED 的 Pod 是 1,目前 SUCCESSFUL 为 0,不满足,所以 Job controller 会启动新的 Pod,直到 SUCCESSFUL 为 1。对于我们这个例子,SUCCESSFUL 永远也到不了 1,所以 Job controller 会一直创建新的 Pod。为了终止这个行为,只能删除 Job。

92fff71c10fd6956c6b5981d56f2cc76.png

如果将 restartPolicy 设置为 OnFailure 会怎么样?下面我们实践一下,修改 myjob.yml 后重新启动。

3b91685e96f7c2c33b193c716e7b1b24.png

Job 的 SUCCESSFUL Pod 数量还是为 0,看看 Pod 的情况:

60e62f8e50762e24789f957f3fa885fb.png

这里只有一个 Pod,不过 RESTARTS 为 3,而且不断增加,说明 OnFailure 生效,容器失败后会自动重启。

下一节我们讨论提高 Job 执行效率的方法。

精彩推荐

用 k8s 运行一次性任务 - 每天5分钟玩转 Docker 容器技术(132)

运行自己的 DaemonSet - 每天5分钟玩转 Docker 容器技术(131)

DaemonSet 案例分析 - 每天5分钟玩转 Docker 容器技术(130)

DaemonSet 典型应用 - 每天5分钟玩转 Docker 容器技术(129)

bf074f3b4d89b583aa2f9161dd6f29ca.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值