運行一次性任務與定時任務
文章目錄
- 運行一次性任務與定時任務
- @[toc]
- 一、使用Job運行一次性任務
- 1.創建一次性任務
- 2.測試一次性任務
- 3.刪除Job
- 二、使用CronJob運行定時任務
- 1.創建定時任務
- 2.測試定時任務
- 3.刪除CronJob
文章目錄
- 運行一次性任務與定時任務
- @[toc]
- 一、使用Job運行一次性任務
- 1.創建一次性任務
- 2.測試一次性任務
- 3.刪除Job
- 二、使用CronJob運行定時任務
- 1.創建定時任務
- 2.測試定時任務
- 3.刪除CronJob
一、使用Job運行一次性任務
1.創建一次性任務
(1)創建Job配置文件
[root@master ~]# cat picalc-job.yaml
apiVersion: batch/v1 # 如果Kubernetes版本低于1.21,則改用batch/v1beta1
kind: Job # 資源類型為Job
metadata:name: picalc
spec:template: # 創建Pod所依據的模板spec:containers: # 容器運行任務- name: picalcimage: perl:5.34.0command: ["perl", "-Mbignum=bpi", "-wle", "print bpi(1500)"]restartPolicy: NeverbackoffLimit: 4 # 指定Job失敗后進行重試的次數
(2)創建Job
[root@master ~]# kubectl create -f picalc-job.yaml
job.batch/picalc created
2.測試一次性任務
(1)監視創建的Job
[root@master ~]# kubectl get jobs --watch
NAME COMPLETIONS DURATION AGE
picalc 0/1 49s 49s
(2)查看創建的Pod
[root@master ~]# kubectl get pod -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
picalc-jvdqz 0/1 ContainerCreating 0 2m22s <none> node2 <none> <none>
(3)查看該Pod的日志
[root@master ~]# kubectl logs -f picalc-jvdqz
3.刪除Job
[root@master ~]# kubectl delete jobs/picalc
job.batch "picalc" deleted
二、使用CronJob運行定時任務
1.創建定時任務
(1)創建CronJob配置文件
[root@master ~]# vim hello-cronjob.yaml
[root@master ~]# cat hello-cronjob.yaml
apiVersion: batch/v1 # 如果Kubernetes版本低于1.21,則改用batch/v1beta1
kind: CronJob # 資源類型為CronJob
metadata:name: hello
spec:schedule: "*/1 * * * *" # 時間調度,這里為每分鐘執行一次
# 通過Job模板指定需要運行的任務。CronJob基于Job進行實現,以下就是Job資源的定義jobTemplate: spec:template:spec:containers:- name: helloimage: busybox:1.28imagePullPolicy: IfNotPresentcommand:- /bin/sh- -c- date; echo Hello from the Kubernetes clusterrestartPolicy: OnFailure
(2)創建CronJob
[root@master ~]# kubectl create -f hello-cronjob.yaml
cronjob.batch/hello created
2.測試定時任務
(1)獲取CronJob的狀態
[root@master ~]# kubectl get cronjob hello
NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE
hello */1 * * * * False 1 19s 47s
(2)監視創建的Pod
[root@master ~]# kubectl get jobs --watch
NAME COMPLETIONS DURATION AGE
hello-29074496 1/1 45s 63s
hello-29074497 1/1 3s 3s
(3)查看創建的Pod
[root@master ~]# kubectl get pod -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
hello-29074496-4b5ws 0/1 Completed 0 108s 10.244.166.173 node1 <none> <none>
hello-29074497-b9tgj 0/1 Completed 0 48s 10.244.166.174 node1 <none> <none>
(3)查看最后一次調度任務創建的Pod日志
[root@master ~]# kubectl logs -f hello-29074497-b9tgj
Sat Apr 12 14:57:00 UTC 2025
Hello from the Kubernetes cluster
[root@master ~]#
3.刪除CronJob
[root@master ~]# kubectl delete cronjob hello
cronjob.batch "hello" deleted