首页/云/Kubernetes 速查/Job 并行度与完成数(completions/parallelism)

Job 并行度与完成数(completions/parallelism)

completions 定义需要成功完成的总次数,parallelism 定义同时在跑的 Pod 数;两者搭配决定「总量与并发」。

Kubernetes 速查云更新于 2026-10-13

总量与并发怎么配

任务对象的并行控制由两个字段组合表达:完成数定义总共需要成功多少次,并行度定义同一时刻最多跑几个。前者决定总量,后者决定并发压力。工作队列类任务则反过来用:并行度固定,完成数留空,由 Pod 从队列里取活干,直到队列为空。

基本信息

适用平台Kubernetes 1.21+,批量接口组
完成数需要成功的总次数,默认为 1
并行度同时运行的副本数上限,默认为 1
完成数留空出现任意一个成功即判定整体完成
相关字段失败重试上限与最长运行时间

典型使用场景

  • 一批数据分片处理,总片数已知,用完成数表达总量
  • 控制并发压力:并行度限制同时抓取的资源数量
  • 工作队列模式:任务数量不固定,由队列长度决定何时结束
  • 冗余竞速:多个副本同时算同一结果,任意成功即结束
  • 压测或数据校验场景按分片并行执行

组合语义

完成数并行度效果
1(默认)1(默认)单个任务跑一次
103总共成功 10 次,同时最多 3 个
留空5并行 5 个,任意一个成功即结束
1010十个分片同时开始

运行中观察

运行中观察
kubectl get job batch-x -o jsonpath='active={.status.active} succeeded={.status.succeeded} failed={.status.failed}'
kubectl get pods -l job-name=batch-x                    # 每批创建的副本
kubectl describe job batch-x | grep -i -E 'parallelism|completions|events' -A3
kubectl logs -l job-name=batch-x --tail=20              # 分片处理情况
完成数留空时,任意一个副本成功就会判定整体完成,这种用法适合冗余竞速,不适合需要把所有分片都处理完的批处理。
分片任务的常见做法是把分片编号通过环境变量或参数传给容器:每个副本处理自己那一片,失败的分片由重试机制重新拉起,人工只需关注最终成功次数是否达到总量。
并行度设得过高会同时拉起大量副本,可能瞬间占满节点资源或把下游服务打爆。批处理任务应结合下游承受能力设定并发上限,必要时分批推进。

易错点

  • 分片很多但并行度很低:任务整体耗时被拉长,发布窗口被占用
  • 并行度过高:下游接口或数据库被打满,任务本身也跟着大量失败
  • 用留空完成数表达批处理:任意一个副本成功就结束,剩余分片不会再处理
  • 每个分片都要成功却忽略重试上限:个别分片失败后整体被标记失败,需要人工补跑

数据来源与参考

  • Kubernetes 官方文档 · Job(Parallel Execution)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌