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 的 apiVersionkind: CronJob # 指明当前资源的类型为 CronJob。metadata:  name: hellospec:  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
        
    



