时间:2025-05-30 16:39
人气:
作者:admin
官方文档:https://kubernetes.io/zh-cn/docs/concepts/workloads/controllers/job/
Job 表示一次性任务,运行完成后就会停止。
Job 会创建一个或者多个 Pod,并将继续重试 Pod 的执行,直到指定数量的 Pod 成功终止。 随着 Pod 成功结束,Job 跟踪记录成功完成的 Pod 个数。 当数量达到指定的成功个数阈值时,任务(即 Job)结束。 删除 Job 的操作会清除所创建的全部 Pod。 挂起 Job 的操作会删除 Job 的所有活跃 Pod,直到 Job 被再次恢复执行。
Job,主要用于负责批量处理(一次要处理指定数量任务)短暂的一次性(每个任务仅运行一次就结束)任务。Job特点如下:
apiVersion: batch/v1
kind: Job
metadata:
name: data-processing-job # Job名称,需符合K8s命名规范
namespace: default # 命名空间
labels:
app: data-processor
env: production
annotations:
description: "并行处理数据的批处理任务"
spec:
completions: 10 # 任务需要成功完成的总次数(默认为1)
parallelism: 3 # 并行运行的Pod数量(默认为1)
backoffLimit: 4 # 失败Pod的重试次数上限(默认为6)
activeDeadlineSeconds: 3600 # 任务的最大运行时间(秒),超时则终止
ttlSecondsAfterFinished: 86400 # 任务完成后保留资源的时间(秒),需K8s 1.12+
manualSelector: false # 是否允许手动管理Pod(默认为false)
selector:
matchLabels:
job-name: data-processing-job # Pod标签选择器
template:
metadata:
labels:
job-name: data-processing-job # Pod标签,需与selector匹配
spec:
restartPolicy: Never # 容器失败时的重启策略:Never或OnFailure
containers:
- name: data-processor
image: my-data-processor:v1.2.3 # 替换为实际镜像
[root@master ~/job]# cat job-1.yaml
apiVersion: batch/v1
kind: Job
metadata:
name: pi-job
spec:
template:
spec:
containers:
- name: pi
image: perl
command: ["perl", "-Mbignum=bpi", "-wle", "print bpi(2000)"]
restartPolicy: Never
backoffLimit: 4
# 查看job
[root@master ~/job]# kubectl get jobs -o wide
NAME COMPLETIONS DURATION AGE CONTAINERS IMAGES SELECTOR
pi-job 1/1 3m2s 6m28s pi perl controller-uid=9dcb16bf-aa3b-4e50-b711-df2f3e68795b
# 查看详细信息
[root@master ~/job]# kubectl describe job pi-job
Name: pi-job
Namespace: default
Selector: controller-uid=9dcb16bf-aa3b-4e50-b711-df2f3e68795b
Labels: controller-uid=9dcb16bf-aa3b-4e50-b711-df2f3e68795b
job-name=pi-job
Annotations: batch.kubernetes.io/job-tracking:
Parallelism: 1
Completions: 1
Completion Mode: NonIndexed
Start Time: Fri, 30 May 2025 16:30:56 +0800
Completed At: Fri, 30 May 2025 16:33:58 +0800
Duration: 3m2s
Pods Statuses: 0 Active (0 Ready) / 1 Succeeded / 0 Failed
Pod Template:
Labels: controller-uid=9dcb16bf-aa3b-4e50-b711-df2f3e68795b
job-name=pi-job
Containers:
pi:
Image: perl
Port: <none>
Host Port: <none>
Command:
perl
-Mbignum=bpi
-wle
print bpi(2000)
Environment: <none>
Mounts: <none>
Volumes: <none>
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal SuccessfulCreate 7m job-controller Created pod: pi-job-ldm8x
Normal Completed 3m58s job-controller Job completed
查看一下pod,当pod执行完之后,状态是Completed
[root@master ~/job]# kubectl get po
NAME READY STATUS RESTARTS AGE
pi-job-ldm8x 0/1 Completed 0 7m40s
本文来自博客园,作者:huangSir-devops,转载请注明原文链接:https://www.cnblogs.com/huangSir-devops/p/18904493,微信Vac6666666,欢迎交流
Ubuntu离线环境部署Kubernetes v1.31.3(ARM64)