k8s学习(十二)创建Job
目录前言一、Job二、非并行Job三、固定结束次数的Job四、带有工作队列的并行Job前言Job负责批量处理短暂的一次性任务,即仅执行一次的任务,它保证批处理任务的一个或多个Pod成功结束。一、Job1、Kubernetes支持以下几种Job: 非并行Job:通常创建一个Pod直至其成功结束 固定结束次数的
前言
Job负责批量处理短暂的一次性任务,即仅执行一次的任务,它保证批处理任务的一个或多个Pod成功结束。一、Job
1、Kubernetes支持以下几种Job:
非并行Job:通常创建一个Pod直至其成功结束
固定结束次数的Job:设置.spec.completions,创建多个Pod,直到.spec.completions个Pod成功结束
带有工作队列的并行Job:设置.spec.Parallelism但不设置.spec.completions,当所有Pod结束并且至少一个成功时,Job就认为是成功
2、特点
RestartPolicy仅支持Never或OnFailure
单个Pod时,默认Pod成功运行后Job即结束
.spec.completions标志Job结束需要成功运行的Pod个数,默认为1
.spec.parallelism标志并行运行的Pod的个数,默认为1
spec.activeDeadlineSeconds标志失败Pod的重试最大时间,超过这个时间不会继续重试
二、非并行Job
(1)job-once.yaml
[root@k8s-master k8s]# cat job-once.yaml
apiVersion: batch/v1
kind: Job
metadata:
name: busybox-job-test
spec:
template:
spec:
restartPolicy: Never
containers:
- name: busybox-job-container
image: busybox
command: ["sh", "-c"]
args: ['echo "hello";sleep 30; echo "job"']
(2)创建
[root@k8s-master k8s]# kubectl create -f job-once.yaml
job.batch/busybox-job-test created
(3)查看pod
任务处于 Running 状态
[root@k8s-master k8s]# kubectl get pods
NAME READY STATUS RESTARTS AGE
busybox-job-test-qwvd2 1/1 Running 0 7s
[root@k8s-master k8s]# kubectl logs busybox-job-test-qwvd2
hello
等待30s过后,再次查看,任务处理Completed 状态
[root@k8s-master k8s]# kubectl get pods
NAME READY STATUS RESTARTS AGE
busybox-job-test-qwvd2 0/1 Completed 0 1m20s
[root@k8s-master k8s]# kubectl logs busybox-job-test-qwvd2
hello
job
(4)查看pod详细信息
能够看到job执行情况
[root@k8s-master k8s]# kubectl describe pod busybox-job-test-qwvd2
...
Command:
sh
-c
Args:
echo "hello";sleep 30; echo "job"
State: Terminated
Reason: Completed
Exit Code: 0
Started: Sun, 26 Dec 2021 23:16:01 -0500
Finished: Sun, 26 Dec 2021 23:16:31 -0500
Ready: False
Restart Count: 0
Environment: <none>
Mounts:
/var/run/secrets/kubernetes.io/serviceaccount from default-token-w5gbb (ro)
Conditions:
Type Status
Initialized True
Ready False
ContainersReady False
PodScheduled True
Volumes:
default-token-w5gbb:
Type: Secret (a volume populated by a Secret)
SecretName: default-token-w5gbb
Optional: false
QoS Class: BestEffort
Node-Selectors: <none>
Tolerations: node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 43s default-scheduler Successfully assigned default/busybox-job-test-qwvd2 to k8s-node01
Normal Pulling 41s kubelet Pulling image "busybox"
Normal Pulled 37s kubelet Successfully pulled image "busybox" in 4.480345937s
Normal Created 37s kubelet Created container busybox-job-container
Normal Started 37s kubelet Started container busybox-job-container
三、固定结束次数的Job
(1)job-many.yaml
[root@k8s-master k8s]# cat job-many.yaml
apiVersion: batch/v1
kind: Job
metadata:
name: busybox-job-many-test
spec:
completions: 6
parallelism: 3
backoffLimit: 6
template:
spec:
restartPolicy: Never
containers:
- name: busybox-job-many-container
image: busybox
command: ["sh", "-c"]
args: ['echo "hello";sleep 30; echo "job"']
(2)创建
[root@k8s-master k8s]# kubectl create -f job-many.yaml
job.batch/busybox-job-many-test created
(3)查看pod
首先创建了3个job
[root@k8s-master k8s]# kubectl get pods
NAME READY STATUS RESTARTS AGE
busybox-job-many-test-75gq9 1/1 Running 0 34s
busybox-job-many-test-l2v8w 1/1 Running 0 34s
busybox-job-many-test-njhf6 1/1 Running 0 34s
3个job完成后,又并行创建了3个job
[root@k8s-master k8s]# kubectl get pods
NAME READY STATUS RESTARTS AGE
busybox-job-many-test-75gq9 0/1 Completed 0 56s
busybox-job-many-test-h99mq 1/1 Running 0 15s
busybox-job-many-test-l2v8w 0/1 Completed 0 56s
busybox-job-many-test-njhf6 0/1 Completed 0 56s
busybox-job-many-test-pdsl2 1/1 Running 0 10s
busybox-job-many-test-zpc74 1/1 Running 0 19s
6个job全部完成
[root@k8s-master k8s]# kubectl get pods
NAME READY STATUS RESTARTS AGE
busybox-job-many-test-75gq9 0/1 Completed 0 2m7s
busybox-job-many-test-h99mq 0/1 Completed 0 86s
busybox-job-many-test-l2v8w 0/1 Completed 0 2m7s
busybox-job-many-test-njhf6 0/1 Completed 0 2m7s
busybox-job-many-test-pdsl2 0/1 Completed 0 81s
busybox-job-many-test-zpc74 0/1 Completed 0 90s
[root@k8s-master k8s]# kubectl get job
NAME COMPLETIONS DURATION AGE
busybox-job-many-test 6/6 83s 5m51s
四、带有工作队列的并行Job
(1)job-queue.yaml
[root@k8s-master k8s]# cat job-queue.yaml
apiVersion: batch/v1
kind: Job
metadata:
name: busybox-job-queue-test
spec:
parallelism: 3
backoffLimit: 6
template:
spec:
restartPolicy: Never
containers:
- name: busybox-job-queue-container
image: busybox
command: ["sh", "-c"]
args: ['echo "hello";sleep 30; echo "job"']
(2)创建
[root@k8s-master k8s]# kubectl create -f job-queue.yaml
job.batch/busybox-job-queue-test created
(3)查看job
并行启动了3个job,都处于Running 状态
[root@k8s-master k8s]# kubectl get pods
NAME READY STATUS RESTARTS AGE
busybox-job-queue-test-h4k9w 1/1 Running 0 16s
busybox-job-queue-test-lhs6q 1/1 Running 0 16s
busybox-job-queue-test-wr5zz 1/1 Running 0 16s
[root@k8s-master k8s]# kubectl get job
NAME COMPLETIONS DURATION AGE
busybox-job-queue-test 0/1 of 3 20s 20s
等待一会任务完成后
[root@k8s-master k8s]# kubectl get pods
NAME READY STATUS RESTARTS AGE
busybox-job-queue-test-h4k9w 0/1 Completed 0 101s
busybox-job-queue-test-lhs6q 0/1 Completed 0 101s
busybox-job-queue-test-wr5zz 0/1 Completed 0 101s
[root@k8s-master k8s]# kubectl get job
NAME COMPLETIONS DURATION AGE
busybox-job-queue-test 3/1 of 3 46s 100s
更多推荐
所有评论(0)