分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请点击人工智能教程
Job
负责批量处理短暂的一次性任务
(short lived one-off tasks)
,即仅执行一次的任务,它保证批处理任务的一个或多个Pod
成功结束。
Kubernetes
支持以下几种
Job
:
- 非并行Job:通常创建一个Pod直至其成功结束
- 固定结束次数的Job:设置 .spec.completions ,创建多个Pod,直到 .spec.completions 个Pod成功结束
- 带有工作队列的并行Job:设置 .spec.Parallelism 但不设置 .spec.completions ,当所有Pod结束并且至少一个成功时,Job就认为是成功
根据
.spec.completions
和
.spec.Parallelism
的设置,可以将
Job
划分为以下几种pattern
:
Job
类型
|
使用示例
|
行为
|
completions
|
Parallelism
|
一次性
Job
|
数据库迁
移
|
创建一个
Pod
直至其成
功结束
| 1 | 1 |
固定结束
次数的
Job
|
处理工作
队列的
Pod
|
依次创建一个
Pod
运行
直至
completions
个成
功结束
|
2+
|
1
|
固定结束
次数的并
行
Job
|
多个
Pod
同
时处理工
作队列
|
依次创建多个
Pod
运行
直至
completions
个成
功结束
|
2+
|
2+
|
并行
Job
|
多个
Pod
同
时处理工
作队列
|
创建一个或多个
Pod
直
至有一个成功结束
|
1
|
2+
|
Job Controller
Job Controller
负责根据
Job Spec
创建
Pod
,并持续监控
Pod
的状态,直至其成功结束。如果失败,则根据restartPolicy
(只支持
OnFailure
和
Never
,不支持
Always
)决定是否创建新的Pod
再次重试任务。
Job Spec
格式
- spec.template格式同Pod
- RestartPolicy仅支持Never或OnFailure
- 单个Pod时,默认Pod成功运行后Job即结束
- .spec.completions 标志Job结束需要成功运行的Pod个数,默认为1
- .spec.parallelism 标志并行运行的Pod的个数,默认为1
- spec.activeDeadlineSeconds 标志失败Pod的重试最大时间,超过这个时间不会继续重试