什么是 kubernetes 作业的用例?

What is a use case for kubernetes job?

我希望完全了解 kubernetes 中的作业。

我已经成功创建并执行了一个作业,但我没有看到用例。

无法重新运行作业或无法主动聆听它的完成让我觉得它有点难以管理。

有人在用吗?哪个是用例?

谢谢。

作业会重试 pods 直到它们完成,这样您就可以容忍导致 pods 被删除的错误。

如果你想运行重复和定期的工作,你可以使用CronJob alpha or cronetes

作为安装服务的一部分,一些 Helm Charts 使用作业 运行 在集群上安装、设置或测试命令。 (Example).

如果您保存作业的 YAML,那么您可以通过删除旧作业并重新创建它来重新运行它,或者通过编辑 YAML 更改名称(或使用例如 sed 在脚本中)。

您可以使用此命令查看作业的状态:

kubectl get jobs myjob -w

-w 选项监视更改。您正在查找 SUCCESSFUL 列以显示 1.

这是一个 shell 命令循环,用于等待作业完成(例如在脚本中): until kubectl get jobs myjob -o jsonpath='{.status.conditions[?(@.type=="Complete")].status}' | grep True ; do sleep 1 ; done

其中一个用例可以是备份数据库。但正如已经提到的那样,运行 一项工作会产生一些开销,例如当作业完成时,Pods 不会被删除。所以你需要手动删除作业(这也会删除作业创建的pods)。所以推荐的选项是使用 Cron 而不是 Jobs