K8s - Kubernetes使用详解5(运行CronJob样例)

作者: hangge 发布时间: 2019-09-02 浏览: 3143 次 编辑

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  即可。

原文:K8s - Kubernetes使用详解5(运行CronJob样例)


(3)保存退出后执行如下命令重启 kubelet 服务:

1
systemctl restart kubelet.service


(4)kubelet 会自动重启 kube-apiserver Pod。重启后通过如下命令可以看到现在已经支持 batch/v2alpha1

1
kubectl api-versions

原文:K8s - Kubernetes使用详解5(运行CronJob样例)


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

原文:K8s - Kubernetes使用详解5(运行CronJob样例)


(4)等待几分钟,然后执行如下命令查看 Job 的执行情况。可以看到每隔一分钟就会启动一个 Job

1
kubectl get jobs

原文:K8s - Kubernetes使用详解5(运行CronJob样例)


(5)通过 kubectl logs 命令可查看某个 Job 的运行日志:

原文:K8s - Kubernetes使用详解5(运行CronJob样例)


原文链接:https://www.hangge.com/blog/cache/detail_2434.html