Loading
0

kubernetes/k8s中Job和Cronjob任务部署方法

技术小学生微信公众号
腾讯云服务器大促销。
华为服务器

前言:今天刚好看到k8s的Job任务和Cronjob任务,众所周知,Cronjob是定时任务,job是一次性任务,本教程将详细介绍部署方法及范例。
完整的k8s教程可访问https://blog.tag.gg/showinfo-3-36255-0.html
部署job(一次性任务)
编辑myjob.yaml 并写入如下代码

apiVersion: batch/v1
kind: Job
metadata:  
  name: myjob
spec:  
  template:    
    metadata:      
      name: myjob    
    spec:      
      containers:      
      - name: hello      
        image: busybox    
        command: ["echo","hello k8s job"]      
      restartPolicy: Never

#Never  程序退出了就不再重启了,不管正确还是错误退出

kubectl apply -f myjob.yaml

[root@master ~]# kubectl apply -f myjob.yaml
job.batch/myjob created

查看结果。

[root@master ~]# kubectl get pods -o wide
NAME                READY   STATUS      RESTARTS   AGE    IP            NODE    NOMINATED NODE   READINESS GATES
ds-test-crpsf       1/1     Running     0          29m    10.244.3.29   node3   <none>           <none>
ds-test-glnql       1/1     Running     0          29m    10.244.1.34   node2   <none>           <none>
myjob-fp4bl         0/1     Completed   0          105s   10.244.1.35   node2   <none>           <none>
web-statefulset-0   1/1     Running     0          51m    10.244.3.27   node3   <none>           <none>
web-statefulset-1   1/1     Running     0          50m    10.244.1.33   node2   <none>           <none>
web-statefulset-2   1/1     Running     0          50m    10.244.3.28   node3   <none>           <none>
[root@master ~]# kubectl get jobs
NAME    COMPLETIONS   DURATION   AGE
myjob   1/1           27s        2m2s

可以通过pod日志查看是否有执行成功。

kubectl logs myjob-fp4bl

执行结果如下:

[root@master ~]# kubectl logs myjob-fp4bl
hello k8s job

成功运行并输出了信息。

部署cronjob(定时任务)
范例:
编写一个CrontJob 的cron.yaml 配置文件。
任务每隔1分钟执行一次,运行的镜像时busybox,执行的命令是shell脚本,脚本执行时会爱控制台输出当前时间和字符串“hello from the kubernetes cluster”

apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: hello
spec:
  schedule: "*/1 * * * *"
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: hello
            image: busybox
            args:
            - /bin/sh
            - -c
            - date; echo Hello from the Kubernetes cluster
          restartPolicy: OnFailure

运行yaml文件

[root@master ~]# kubectl create -f cron.yaml
Warning: batch/v1beta1 CronJob is deprecated in v1.21+, unavailable in v1.25+; use batch/v1 CronJob
cronjob.batch/hello created

查看结果

[root@master ~]# kubectl get pods
NAME                   READY   STATUS      RESTARTS   AGE
ds-test-crpsf          1/1     Running     0          41m
ds-test-glnql          1/1     Running     0          41m
hello-28007346-zc46p   0/1     Completed   0          43s
myjob-fp4bl            0/1     Completed   0          13m
web-statefulset-0      1/1     Running     0          63m
web-statefulset-1      1/1     Running     0          62m
web-statefulset-2      1/1     Running     0          62m
[root@master ~]# kubectl get cronjobs   #查看任务情况
NAME    SCHEDULE      SUSPEND   ACTIVE   LAST SCHEDULE   AGE
hello   */1 * * * *   False     0        37s             2m20s
[root@master ~]# kubectl logs hello-28007346-zc46p #查看日志
Sun Apr  2 13:06:17 UTC 2023
Hello from the Kubernetes cluster

每个一分钟会执行一次,则会出现多个pod例如

hello-28007347-84nxr   0/1     Completed   0          2m32s
hello-28007348-466rq   0/1     Completed   0          92s
hello-28007349-bmx4t   0/1     Completed   0          32s

技术小学生微信公众号
华为服务器
腾讯云服务器大促销。

声明:站长码字很辛苦啊,转载时请保留本声明及附带文章链接:https://blog.tag.gg/showinfo-3-36275-0.html
亲爱的:若该文章解决了您的问题,可否收藏+评论+分享呢?
上一篇:kubernetes/k8s删除Pod以及删除Service方法
下一篇:解决mac电脑报错:no matching host key type found. Their offer: ssh-rsa,ssh-dss