Kubernetes Job 控制器学习笔记(K8s v1.29 第五章 Pod 控制器)
1. Pod 存在策略基础说明
K8s 中 Pod 存在3种重启策略:
Always:Pod 终止后无论退出原因如何,始终重建OnFailure:Pod 仅当非正常退出(返回码非0)时重建,正常退出(返回码0)后不重建Never:Pod 终止后无论退出原因如何,均不重建
官方仅支持前两种策略,Never策略不被支持,原因是其功能与 ReplicaSet 等控制器完全重复,无实际使用意义。
2. Job 控制器核心参数
Job 是 K8s 中用于管理批处理任务的控制器,核心配置参数如下:
- completions(成功完成数):默认值为1,定义 Job 需要多少个 Pod 成功运行(返回码为0)后,整体任务才算完成
- parallelism(并行数):默认值为1,定义 Job 同时运行的最大 Pod 数量:
- 为1时串行创建 Pod,上一个 Pod 成功运行后再创建下一个
- 大于1时按批次创建 Pod,每批最多创建 parallelism 个,直到累计成功数达到 completions 的要求
- 若剩余需要的成功数小于 parallelism 值,则仅创建对应数量的 Pod,不会额外创建浪费集群资源
- activeDeadlineSeconds(最大运行时间):默认无限制,定义 Job 允许运行的最大时长,若超过该时长仍未达到 completions 要求的成功数,Job 会被标记为失败,避免因 Pod 异常持续创建浪费集群资源
- restartPolicy:Job 关联的 Pod 默认重启策略为 OnFailure,演示场景中可设置为 Never,因为 Job 本身会控制 Pod 的创建与销毁,无需 Pod 自身重启
3. Job 控制器实验演示
3.1 批处理任务示例:1000位π计算
- 任务实现:基于马青公式用 Python 编写计算1000位π的脚本,将脚本、Python 解释器及依赖打包为 Docker 镜像,推送到镜像仓库
- Job YAML 配置要点:
- 指定
apiVersion: batch/v1,kind: Job - 配置 completions、parallelism、restartPolicy 等参数
- Pod 模板中引用预构建的π计算镜像,设置 restartPolicy 为 Never
- 指定
- 运行与验证:
- 通过
kubectl apply -f job.yaml创建 Job 资源 - 通过
kubectl get job查看 Job 状态,kubectl get pod查看关联 Pod 状态,Pod 运行时会先拉取镜像,再执行计算脚本;可通过watch -n 1 kubectl get job或watch kubectl get pod实时监控资源状态变化 - 通过
kubectl logs <pod-name>查看 Pod 日志,确认π计算结果:计算耗时0.000074秒,输出结果前几位为3.1415926…;通过kubectl describe job <job-name>查看 Job 详情 - Pod 计算完成后正常退出(返回码0),Job 的 successes 计数增加,达到 completions 要求后 Job 标记为完成
- 通过
3.2 强制失败场景验证
- 配置修改:将 Pod 的执行逻辑改为强制返回非0返回码(返回码为1,代表执行失败)
- 运行结果:Job 会持续创建新 Pod,所有 Pod 均返回失败,successes 计数始终为0,直到达到 activeDeadlineSeconds 设置的最大运行时长后,Job 被标记为失败;需注意 Job 统计的是成功运行的Pod数量,而非创建的Pod总数,失败的Pod不会计入计数
3.3 正常随机返回码场景验证
- 配置修改:设置
completions=10(需要10个 Pod 成功运行)、parallelism=5(最大并发5个 Pod),Pod 执行逻辑为随机生成数字,小于50返回0(成功)、大于等于50返回1(失败) - 运行过程:
- 第一批创建5个 Pod,部分 Pod 返回0(成功,计入 successes)、部分返回1(失败,不计入)
- 若第一批成功数不足10个,继续创建下一批最多5个 Pod,直到累计成功数达到10
- 视频演示中最终累计失败14次、成功5次后继续创建新 Pod,直至凑够10个成功,Job 标记完成
- 核心结论:仅当 Pod 返回码为0(正常退出)时,才会被计入 completions 的成功计数,非0返回码的失败 Pod 不会计入
4. Job 控制器适用场景总结
Job 控制器适用于两类场景:
- 守护进程类型的应用
- 需要确保成功执行的批处理任务
核心特性是通过参数控制 Pod 的创建数量、并发数和最大运行时长,保障指定数量的 Pod 成功运行后任务才结束,避免无效资源消耗。
AI 总结
本视频围绕 Kubernetes Job 控制器展开讲解,首先明确了 Pod 重启策略的基础规则,随后详细介绍 Job 的 completions、parallelism、activeDeadlineSeconds 三个核心参数的作用,通过π计算批处理任务、强制失败、随机返回码三类实验,验证了 Job 仅统计成功退出 Pod、需达到指定成功数才会结束的特性,明确了 Job 适用于守护进程、批处理等需保障执行成功的场景。