Linux 中有 cron 程序可以定时执行任务,而 Kubernetes 的 CronJob 则提供了类似的功能,可以定时执行 Job。
五、运行 CronJob
1,准备工作
(1)Kubernetes 默认没有 enable CronJob 功能,需要在 kube-apiserver 中加入这个功能。首先我们修改 kube-apiserver 的配置文件:
1 | vi /etc/kubernetes/manifests/kube-apiserver.yaml |
(2)在启动参数中加上 --runtime-config=batch/v2alpha1=true 即可。
(3)保存退出后执行如下命令重启 kubelet 服务:
1 | systemctl restart kubelet.service |
(4)kubelet 会自动重启 kube-apiserver Pod。重启后通过如下命令可以看到现在已经支持 batch/v2alpha1:
1 | kubectl api-versions |
2,使用样例
(1)首先编辑一个简单的 CronJob 配置文件 cronjob.yml,内容如下:
注意: schedule 指定什么时候运行 Job,其格式与 Linux cron 一致。这里 */1 * * * * 的含义是每一分钟启动一次。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | apiVersion: batch/v2alpha1 # 当前 CronJob 的 apiVersion kind: CronJob # 指明当前资源的类型为 CronJob。 metadata: name: hello spec: schedule: "*/1 * * * *" # schedule 指定什么时候运行 Job jobTemplate: # jobTemplate 定义 Job 的模板,格式与上文的 Job 一致 spec: template: spec: containers: - name: hello image: busybox command: [ "echo" , "Welcome to hangge.com" ] restartPolicy: OnFailure |
(2)接着执行如下命令创建 CronJob:
1 | kubectl apply -f cronjob.yml |
(3)执行如下命令可以查看 CronJob 的状态:
1 | kubectl get cronjob |
(4)等待几分钟,然后执行如下命令查看 Job 的执行情况。可以看到每隔一分钟就会启动一个 Job。
1 | kubectl get jobs |
(5)通过 kubectl logs 命令可查看某个 Job 的运行日志:
原文链接:https://www.hangge.com/blog/cache/detail_2434.html