运行一次性任务与定时任务
文章目录
- 运行一次性任务与定时任务
- @[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: picalc
image: perl:5.34.0
command: ["perl", "-Mbignum=bpi", "-wle", "print bpi(1500)"]
restartPolicy: Never
backoffLimit: 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: hello
image: busybox:1.28
imagePullPolicy: IfNotPresent
command:
- /bin/sh
- -c
- date; echo Hello from the Kubernetes cluster
restartPolicy: 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