以下内容均来自个人笔记并重新梳理,如有错误欢迎指正!
如果对您有帮助,烦请点赞、关注、转发!如果您有其他想要了解的,欢迎私信联系我~
基本介绍
Job 控制器是 Kubernetes 中用于运行一次性任务的 API 对象,它负责启动指定数量的 Pod,通过跟踪记录达到 Completed 状态的 Pod 个数,并判断是否达到设定的阈值来确保这些 Pod 成功完既定任务。
Job 通常用于部署一次性任务或批处理任务。
工作原理
- 定义对象:用户定义一个 Job 对象,指定 Pod 模板和其他配置选项
- 调度 Pod:Kubernetes 根据 Job 的定义创建 Pod,Pod 被调度到节点后开始执行任务
- 监控 Pod:Job 控制器会监控这些 Pod 的状态,确保它们成功完成任务
- 完成任务:当所有 Pod 都成功完成任务后,Job 状态会被标记为 Completed
- 清理资源:完成的 Job 及对应的 Pod 会在一定时间后被系统自动清理
相关特性
- 并行执行:Job 可以指定并行运行的 Pod 数量,允许任务并行执行以提高效率
- 成功计数:Job 控制器会跟踪成功完成任务的 Pod 数量,直到达到用户指定的完成数量
- 失败重试:Job 可以配置重试策略,当 Pod 失败时可以重新启动新的 Pod 来尝试完成任务
- 自动清理:Job 完成后,相关的资源(如 Pod)会被自动清理,减少资源浪费
- 依赖管理:Job 可以设置依赖,确保任务按照特定的顺序执行
- 生命周期:Job 提供了一种机制来管理任务的生命周期,包括任务的启动、监控、完成和清理
- 弹性伸缩:可以根据任务的需求动态调整并行执行的 Pod 数量
- 监控和日志:可以对 Job 的执行情况进行监控,并收集相关的日志信息,方便问题排查和性能分析
资源清单(示例)
代码语言:javascript复制# job.yaml
apiVersion: batch/v1
kind: Job
metadata:
name: demo-job
spec:
backoffLimit: 3
completions: 1
parallelism: 1
ttlSecondsAfterFinished: 20
template:
metadata:
labels:
app: demo-job
spec:
restartPolicy: Never
containers:
- name: demo-container
image: busybox
command:
- sh
- -c
- for i in 1 2 3 4 5 6;do echo $i;done