Job
在k8s
中,Job
是用于运行批处理或单次任务的资源。它代表了一个任务或一组并行任务,直到成功完成。Job
通常用于数据处理、备份或其他需要执行一次或定期执行的任务CronJob。
以下是k8s
中Job的一些关键特性和特点:
执行:
Job
确保任务成功完成后才将其标记为“完成”。每个任务都会执行直到完成,可以是一个单独的Pod
或一组并行的Pod
。Pod
创建:Job
创建一个或多个Pod
来执行任务。这些Pod
由Job
控制器自动管理。任务并行性:
Job
可以配置为并行运行任务,可以通过指定并行Pod
的数量或定义具有多个工作器的工作队列来实现。重启策略:
Job
具有重启策略,用于确定任务失败或Pod
终止时的处理方式。重启策略可以设置为“从不重启”、“仅在失败时重启”或“总是重启”。任务完成条件:
Job
具有完成条件,定义了何时认为Job
成功完成。完成条件可以基于成功完成的任务数量或用户指定的其他条件。
- 清理:
Job
可以配置为在任务完成后清理已完成的Pod
。这样可以确保在Job完成后不会留下未释放的资源。
Job
提供了在k8s
中执行批处理和一次性任务的方式。它们是执行非交互式工作负载的基本构建块,可以与其他k8s
资源(例如持久卷、配置映射和机密)结合使用,执行复杂的任务。
详细信息可查看官方文档
源码分析
1 | // pkg/controller/job/job_controller.go |
REF:
1.pkg/controller/job/job_controller.go
2.pkg/controller/controller_utils.go