CKA备考实验 | cronjob

书籍来源:《CKA/CKAD应试指南:从Docker到Kubernetes完全攻略》

一边学习一边整理老师的课程内容及实验笔记,并与大家分享,侵权即删,谢谢支持!

附上汇总贴:CKA备考实验 | 汇总_热爱编程的通信人的博客-CSDN博客


前面讲过job是一次性的,完成之后就没有然后了,比如演示的求圆周率小数点后2000位,并不需要一直去执行运算。但是cronjob是周期性的、循环性的,比如每周日凌晨2点都需要清理一下临时文件,cronjob简写为cj。

查看是否存在cronjob。

##########实操验证##########
[root@vms10 jobs]# kubectl get cj
No resources found in nsjob namespace.
[root@vms10 jobs]#

当前并不存在cronjob。

可以通过yaml的方式创建cronjob,也可以通过命令行的方式创建。不过建议使用命令行的方式生成yaml文件,然后根据需要修改yaml文件。

创建cronjob的命令如下。

kubectl create cj 名字 --image=镜像 --schedule="*/1 * * * *" -- /bin/sh -c "命令"

这里--schedule里定义的就是什么时候开始执行指定的命令,格式跟Linux系统里crontab的格式一样,到了时间点之后执行“--”后面的命令。

建议用命令行生成一个yaml文件,然后对此yaml进行相关的修改之后,使用kubectl apply来创建cronjob。

下面创建一个名为job2的cronjob,每隔1min执行一次命令。

步骤1:通过命令行生成创建cronjob的yaml文件job2.yaml。

##########实操验证##########
[root@vms10 jobs]# kubectl create cj job2 --image=busybox --schedule="*/1 * * * *" --dry-run=client -o yaml -- /bin/sh -c "echo hello world" > job2.yaml
[root@vms10 ~]#

步骤2:查看此yaml文件的内容,并添加镜像下载策略。

##########实操验证##########
[root@vms10 jobs]# cat job2.yaml 
apiVersion: batch/v1
kind: CronJob
metadata:
  creationTimestamp: null
  name: job2
spec:
  jobTemplate:
    metadata:
      name: job2
    spec:
      template:
        metadata:
        spec:
          containers:
          - command: ["sh","-c","echo hello world"]
            image: busybox
            imagePullPolicy: IfNotPresent
            name: job2
            resources: {}
          restartPolicy: OnFailure
  schedule: '*/1 * * * *'
status: {}
[root@vms10 jobs]#

注意:这里schedule和jobTemplate是对齐的,为了使整个文件看起来更清晰,在command的地方使用json格式把命令写成了一行。这里的意思是每隔1min就创建一个pod,里面执行echo hello world!

步骤3:创建cronjob。

##########实操验证##########
[root@vms10 jobs]# kubectl apply -f job2.yaml 
cronjob.batch/job2 created
[root@vms10 jobs]#

步骤4:查看cronjob。

##########实操验证##########
[root@vms10 jobs]# kubectl get cj
NAME   SCHEDULE      SUSPEND   ACTIVE   LAST SCHEDULE   AGE
job2   */1 * * * *   False     0        <none>          2s
[root@vms10 jobs]#

每隔1min就会运行一个pod。

步骤5:查看现有pod。

##########实操验证##########
[root@vms10 jobs]# kubectl get jobs
No resources found in nsjob namespace.
[root@vms10 jobs]#

可以看到现在还没有任何的pod出现。

步骤6:再次查看pod。

##########实操验证##########
[root@vms10 jobs]# kubectl get pods
NAME                  READY   STATUS      RESTARTS   AGE
job2-28099309-tknbd   0/1     Completed   0          3s
[root@vms10 jobs]#

步骤7:等1分钟之后再次查看pod。

##########实操验证##########
[root@vms10 jobs]# kubectl get pods
NAME                  READY   STATUS              RESTARTS   AGE
job2-28099309-tknbd   0/1     Completed           0          60s
job2-28099310-7xpwk   0/1     ContainerCreating   0          0s
[root@vms10 jobs]# kubectl get pods
NAME                  READY   STATUS      RESTARTS   AGE
job2-28099309-tknbd   0/1     Completed   0          62s
job2-28099310-7xpwk   0/1     Completed   0          2s
[root@vms10 jobs]#

从上面可以看到,两个pod的间隔是1min。

步骤8:删除cj。

##########实操验证##########
[root@vms10 jobs]# kubectl delete cj job2
cronjob.batch "job2" deleted
[root@vms10 jobs]#

注意:在cronjob的yaml文件里的.spec.jobTemplate.spec字段里,可以写activeDeadlineSeconds参数,指定cronjob所生成的pod只能运行多久。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值