Kubernetes Job与CronJob(离线业务)
Kubernetes Job与CronJob(离线业务)
Job
- Job分为普通任务(Job) 一次性执行
- 应用场景:离线数据处理,视频解码等业务
官方文档:https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/
1、创建yaml文件
vim job.yaml
apiVersion: batch/v1 kind: Job metadata: name: pi spec: template: spec: containers: - name: pi image: perl # 计算两千位的值 command: ["perl", "-Mbignum=bpi", "-wle", "print bpi(2000)"] # 重启策略 restartPolicy: Never # 限制重启的次数 backoffLimit: 4
2、创建容器
kubectl create -f job.yaml
3、查看容器
kubectl get pods
NAME READY STATUS RESTARTS AGE # 计算完成 pi-q8rvl 0/1 Completed 0 4m5s
4、执行完成后查看job
kubectl get job
NAME COMPLETIONS DURATION AGE
pi 1/1 91s 106s
5、查看日志
kubectl logs pi-q8rvl
3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067982148086513...............
6、删除方法
kubectl delete -f job.yaml
CronJob
官方文档:https://kubernetes.io/docs/tasks/job/automated-tasks-with-cron-jobs/
- 定时任务,像Linux的Crontab一样。
- 应用场景:通知,备份
1.创建一个yaml文件
vim cronjob.yaml
apiVersion: batch/v1beta1 kind: CronJob metadata: name: hello spec: # 分时日月周,与crontab语法一样 schedule: "*/1 * * * *" # job模板 jobTemplate: spec: template: spec: # 容器配置 containers: - name: hello image: busybox # 到达时间段执行命令 args: - /bin/sh - -c - date; echo Hello from the Kubernetes cluster # 如果异常退出就重启 restartPolicy: OnFailure
2、创建容器
kubectl create -f cronjob.yaml
3、查看容器
kubectl get pod
NAME READY STATUS RESTARTS AGE
hello-1566882780-t88jl 0/1 Completed 0 71s
4、查看cronjob
kubectl get cronjob
NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE
hello */1 * * * * False 0 <none> 21s
5、查看日志
kubectl logs hello-1566883020-7hw2s
Tue Aug 27 05:17:10 UTC 2019 Hello from the Kubernetes cluster
6、删除
kubectl delete -f cronjob.yaml