饭宝 发表于 2025-4-13 07:23:42

运行一次性任务与定时任务

运行一次性任务与定时任务



一、使用Job运行一次性任务

1.创建一次性任务

(1)创建Job设置文件
# 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
# kubectl create -f picalc-job.yaml
job.batch/picalc created
2.测试一次性任务

(1)监视创建的Job
# kubectl get jobs --watch
NAME   COMPLETIONS   DURATION   AGE
picalc   0/1         49s      49s
(2)检察创建的Pod
# 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的日志
# kubectl logs -f picalc-jvdqz
3.删除Job

# kubectl delete jobs/picalc
job.batch "picalc" deleted
二、使用CronJob运行定时任务

1.创建定时任务

(1)创建CronJob设置文件
# vim hello-cronjob.yaml
# 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
# kubectl create -f hello-cronjob.yaml
cronjob.batch/hello created
2.测试定时任务

(1)获取CronJob的状态
# kubectl get cronjob hello
NAME    SCHEDULE      SUSPEND   ACTIVE   LAST SCHEDULE   AGE
hello   */1 * * * *   False   1      19s             47s
(2)监视创建的Pod
# kubectlget jobs --watch
NAME             COMPLETIONS   DURATION   AGE
hello-29074496   1/1         45s      63s
hello-29074497   1/1         3s         3s
(3)检察创建的Pod
# 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日志
# kubectl logs -f hello-29074497-b9tgj
Sat Apr 12 14:57:00 UTC 2025
Hello from the Kubernetes cluster
#
3.删除CronJob

# kubectl delete cronjob hello
cronjob.batch "hello" deleted

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 运行一次性任务与定时任务