Kubernetes中Job用于执行临时性任务,需用batch/v1 API定义,spec.template.spec.restartPolicy仅支持Never或OnFailure,通过completions、parallelism、backoffLimit等字段控制执行逻辑。
Kubernetes 中配置 Job 处理临时性任务,核心是用 batch/v1 API 定义一个能自动完成、不长期运行的 Pod 任务。它不是用来维持服务,而是确保某项工作执行完毕——成功就停,失败可重试,完成后保留 Pod 方便查日志。
一个合法的 Job YAML 必须包含三部分:API 版本、元数据、以及带 Pod 模板的 spec。其中最关键的是:
v1,必须用批处理专用版本Never 或 OnFailure,不能是 Always
command)和参数(args)Job 的灵活性主要靠这几个字段调节:
3,Job 就会确保 3 个 Pod 全部成功退出(Exit Code 0)才标记为完成parallelism: 2 表示最多两个 Pod 并发执行,适合分片处理场景Failed,不再新建 PodFailed
根据任务逻辑,选择合适的行为模式:
completions 和 parallelism(默认都是 1),适合简单脚本如备份或初始化检查completions: 5、parallelism: 1,依次运行 5 个 Pod,每个都必须成功completions: 4、parallelism: 2,最多两个并发,直到共 4 个成功为止parallelism: 3,不设 completions,只要任意一个 Pod 成功即 Job 完成实际部署时注意这些实操细节:
kubectl create job my-job --image=busybox --dry-run=client -o yaml > job.yaml 快速生成模板kubectl get jobs 查看状态(Active/Completed/Failed)kubectl describe job my-job 查看事件和失败原因Completed,仍保留在集群中;用 kubectl logs <pod-name> 查输出--cascade=foreground 或手动清理