学校网站建设说明材料,十大财务软件,客流统计系统厂家,建设部科研申报网站用着不好目录
一.Job控制器
1.简介
2.Jobs较完整解释
3.示例演示
4.注意#xff1a;如上例的话#xff0c;执行“kubectl delete -f myJob.yaml”就可以将job删掉
二.CronJob#xff08;简写为cj#xff09;
1.简介
2.CronJob较完整解释
3.案例演示
4.如上例的话#xf…目录
一.Job控制器
1.简介
2.Jobs较完整解释
3.示例演示
4.注意如上例的话执行“kubectl delete -f myJob.yaml”就可以将job删掉
二.CronJob简写为cj
1.简介
2.CronJob较完整解释
3.案例演示
4.如上例的话执行“kubectl delete -f myCronJob.yaml”就可以将cj删掉jobs一并被删除 一.Job控制器
1.简介
他主要是用于批量地去执行一次性任务确保在pod上让指定的任务能够正确完成我们可以在配置中指定期望其完成的数量执行成功后会记录下成功的数量执行完成后pod会标识为completed该pod的主进程已经完成并退出。
2.Jobs较完整解释
截取至edit Jobs的spec部分
spec:backoffLimit: 6 #执行失败后的重试次数不指定就默认6completionMode: NonIndexedcompletions: 18 #期望job成功运行的数量不指定就默认为1manualSelector: true #是否可以使用selector选择器不指定就默认false那么将无法应用selector部分parallelism: 6 #job执行的并发数量不指定的话默认1selector:matchLabels:app: job-podsuspend: falsetemplate:metadata:creationTimestamp: nulllabels:app: job-podspec:containers:- command:- /bin/sh- -c- for i in [1..10];do /bin/echo $i;sleep 2; done;image: busyboximagePullPolicy: Alwaysname: my-job-containerresources: {}terminationMessagePath: /dev/termination-log #这些参数之前介绍过terminationMessagePolicy: FilednsPolicy: ClusterFirstrestartPolicy: Never#这里的重启策略算是比较特殊的尤其注意这里template.spec的restartPolicy会覆盖模板外设置的restartPolicy#若为Neverpod出现故障时job会创建新的pod故障pod不消失且不重启failed次数加1。#若为OnFailurepod出现故障时job会重启容器不创建podfailed次数不变。#若为Always一直重启job就会重复执行不使用。
置为AlwaysschedulerName: default-schedulersecurityContext: {}terminationGracePeriodSeconds: 30
3.示例演示
这里创建一个Job执行指定遍历命令期望运行成功18个pod每次并发运行6个pod。最后可以观察到是运行了18个podpod的最后状态也变为Completed。
[rootk8s-master pod]# cat myJob.yaml
apiVersion: batch/v1
kind: Job
metadata:name: my-jobnamespace: myns
spec:completions: 18parallelism: 6manualSelector: trueselector:matchLabels:app: job-podtemplate:metadata:labels:app: job-podspec:restartPolicy: Nevercontainers:- name: my-job-containerimage: busyboxcommand: [/bin/sh,-c,for i in [1..10];do /bin/echo $i;sleep 2; done;]
[rootk8s-master pod]# kubectl apply -f myJob.yaml
job.batch/my-job created
[rootk8s-master pod]# kubectl get pods -n myns -w
NAME READY STATUS RESTARTS AGE
my-job-b6s8s 0/1 ContainerCreating 0 2s
my-job-jc4zz 0/1 ContainerCreating 0 2s
my-job-kts5m 0/1 ContainerCreating 0 2s
my-job-ppltd 0/1 ContainerCreating 0 2s
my-job-shn8q 0/1 ContainerCreating 0 2s
my-job-zb757 0/1 ContainerCreating 0 2s
my-job-kts5m 0/1 ContainerCreating 0 2s
my-job-shn8q 0/1 ContainerCreating 0 2s
my-job-ppltd 0/1 ContainerCreating 0 2s
my-job-jc4zz 1/1 Running 0 5s
my-job-kts5m 1/1 Running 0 6s
my-job-jc4zz 0/1 Completed 0 7s
my-job-zb757 1/1 Running 0 8s
my-job-jc4zz 0/1 Completed 0 8s
my-job-jc4zz 0/1 Completed 0 8s
my-job-kts5m 0/1 Completed 0 8s
my-job-jc4zz 0/1 Completed 0 9s
my-job-2zl7z 0/1 Pending 0 0s
my-job-2zl7z 0/1 Pending 0 0s
my-job-jc4zz 0/1 Completed 0 9s
my-job-2zl7z 0/1 ContainerCreating 0 0s
my-job-shn8q 1/1 Running 0 9s
my-job-kts5m 0/1 Completed 0 9s
my-job-2zl7z 0/1 ContainerCreating 0 0s
my-job-kts5m 0/1 Completed 0 9s
my-job-zb757 0/1 Completed 0 10s
my-job-52mf9 0/1 Pending 0 0s
my-job-52mf9 0/1 Pending 0 0s
my-job-kts5m 0/1 Completed 0 10s
my-job-52mf9 0/1 ContainerCreating 0 0s
my-job-kts5m 0/1 Completed 0 10s
my-job-52mf9 0/1 ContainerCreating 0 0s
my-job-b6s8s 1/1 Running 0 11s
my-job-zb757 0/1 Completed 0 11s
my-job-zb757 0/1 Completed 0 11s
my-job-shn8q 0/1 Completed 0 11s
my-job-zb757 0/1 Completed 0 12s
my-job-ftzpl 0/1 Pending 0 0s
my-job-ftzpl 0/1 Pending 0 0s
my-job-zb757 0/1 Completed 0 12s
my-job-ftzpl 0/1 ContainerCreating 0 0s
my-job-ppltd 1/1 Running 0 12s
my-job-shn8q 0/1 Completed 0 12s
my-job-ftzpl 0/1 ContainerCreating 0 0s
my-job-shn8q 0/1 Completed 0 12s
my-job-b6s8s 0/1 Completed 0 13s
my-job-8hf4n 0/1 Pending 0 0s
my-job-8hf4n 0/1 Pending 0 0s
my-job-shn8q 0/1 Completed 0 13s
my-job-8hf4n 0/1 ContainerCreating 0 0s
my-job-shn8q 0/1 Completed 0 13s
my-job-8hf4n 0/1 ContainerCreating 0 0s
my-job-2zl7z 1/1 Running 0 5s
my-job-b6s8s 0/1 Completed 0 14s
my-job-b6s8s 0/1 Completed 0 14s
my-job-ppltd 0/1 Completed 0 14s
my-job-pxndz 0/1 Pending 0 0s
my-job-b6s8s 0/1 Completed 0 15s
my-job-pxndz 0/1 Pending 0 0s
my-job-b6s8s 0/1 Completed 0 15s
my-job-pxndz 0/1 ContainerCreating 0 0s
my-job-52mf9 1/1 Running 0 5s
my-job-ppltd 0/1 Completed 0 15s
my-job-pxndz 0/1 ContainerCreating 0 0s
my-job-ppltd 0/1 Completed 0 15s
my-job-6tdqn 0/1 Pending 0 0s
my-job-2zl7z 0/1 Completed 0 7s
my-job-6tdqn 0/1 Pending 0 0s
my-job-ppltd 0/1 Completed 0 16s
my-job-6tdqn 0/1 ContainerCreating 0 0s
my-job-ppltd 0/1 Completed 0 16s
my-job-6tdqn 0/1 ContainerCreating 0 0s
my-job-ftzpl 1/1 Running 0 5s
my-job-2zl7z 0/1 Completed 0 8s
my-job-2zl7z 0/1 Completed 0 8s
my-job-52mf9 0/1 Completed 0 7s
my-job-2zl7z 0/1 Completed 0 9s
my-job-cxfmh 0/1 Pending 0 0s
my-job-cxfmh 0/1 Pending 0 0s
my-job-2zl7z 0/1 Completed 0 9s
my-job-cxfmh 0/1 ContainerCreating 0 0s
my-job-8hf4n 1/1 Running 0 5s
my-job-52mf9 0/1 Completed 0 8s
my-job-cxfmh 0/1 ContainerCreating 0 0s
my-job-52mf9 0/1 Completed 0 8s
my-job-ftzpl 0/1 Completed 0 7s
my-job-4zg6h 0/1 Pending 0 0s
my-job-4zg6h 0/1 Pending 0 0s
my-job-52mf9 0/1 Completed 0 9s
my-job-4zg6h 0/1 ContainerCreating 0 0s
my-job-52mf9 0/1 Completed 0 9s
my-job-4zg6h 0/1 ContainerCreating 0 0s
my-job-pxndz 1/1 Running 0 5s
my-job-ftzpl 0/1 Completed 0 8s
my-job-ftzpl 0/1 Completed 0 8s
my-job-8hf4n 0/1 Completed 0 7s
my-job-ftzpl 0/1 Completed 0 9s
my-job-5spg7 0/1 Pending 0 0s
my-job-5spg7 0/1 Pending 0 0s
my-job-ftzpl 0/1 Completed 0 9s
my-job-5spg7 0/1 ContainerCreating 0 0s
my-job-6tdqn 1/1 Running 0 5s
my-job-8hf4n 0/1 Completed 0 8s
my-job-5spg7 0/1 ContainerCreating 0 0s
my-job-8hf4n 0/1 Completed 0 8s
my-job-pxndz 0/1 Completed 0 7s
my-job-dr2mp 0/1 Pending 0 0s
my-job-dr2mp 0/1 Pending 0 0s
my-job-8hf4n 0/1 Completed 0 9s
my-job-dr2mp 0/1 ContainerCreating 0 0s
my-job-8hf4n 0/1 Completed 0 9s
my-job-dr2mp 0/1 ContainerCreating 0 0s
my-job-cxfmh 1/1 Running 0 5s
my-job-pxndz 0/1 Completed 0 8s
my-job-pxndz 0/1 Completed 0 8s
my-job-6tdqn 0/1 Completed 0 7s
my-job-pxndz 0/1 Completed 0 9s
my-job-7wjqq 0/1 Pending 0 0s
my-job-7wjqq 0/1 Pending 0 0s
my-job-pxndz 0/1 Completed 0 9s
my-job-7wjqq 0/1 ContainerCreating 0 0s
my-job-4zg6h 1/1 Running 0 5s
my-job-6tdqn 0/1 Completed 0 8s
my-job-7wjqq 0/1 ContainerCreating 0 0s
my-job-6tdqn 0/1 Completed 0 8s
my-job-cxfmh 0/1 Completed 0 7s
my-job-cz8f4 0/1 Pending 0 0s
my-job-cz8f4 0/1 Pending 0 0s
my-job-6tdqn 0/1 Completed 0 9s
my-job-cz8f4 0/1 ContainerCreating 0 0s
my-job-6tdqn 0/1 Completed 0 9s
my-job-cz8f4 0/1 ContainerCreating 0 0s
my-job-5spg7 1/1 Running 0 5s
my-job-cxfmh 0/1 Completed 0 8s
my-job-cxfmh 0/1 Completed 0 8s
my-job-4zg6h 0/1 Completed 0 7s
my-job-cxfmh 0/1 Completed 0 9s
my-job-cxfmh 0/1 Completed 0 9s
my-job-4zg6h 0/1 Completed 0 8s
my-job-4zg6h 0/1 Completed 0 8s
my-job-5spg7 0/1 Completed 0 7s
my-job-4zg6h 0/1 Completed 0 9s
my-job-4zg6h 0/1 Completed 0 9s
my-job-dr2mp 1/1 Running 0 6s
my-job-7wjqq 1/1 Running 0 5s
my-job-5spg7 0/1 Completed 0 8s
my-job-5spg7 0/1 Completed 0 8s
my-job-5spg7 0/1 Completed 0 9s
my-job-5spg7 0/1 Completed 0 9s
my-job-dr2mp 0/1 Completed 0 8s
my-job-7wjqq 0/1 Completed 0 7s
my-job-cz8f4 1/1 Running 0 6s
my-job-dr2mp 0/1 Completed 0 9s
my-job-dr2mp 0/1 Completed 0 9s
my-job-dr2mp 0/1 Completed 0 10s
my-job-7wjqq 0/1 Completed 0 8s
my-job-7wjqq 0/1 Completed 0 8s
my-job-dr2mp 0/1 Completed 0 10s
my-job-7wjqq 0/1 Completed 0 9s
my-job-7wjqq 0/1 Completed 0 9s
my-job-cz8f4 0/1 Completed 0 8s
my-job-cz8f4 0/1 Completed 0 9s
my-job-cz8f4 0/1 Completed 0 9s
my-job-cz8f4 0/1 Completed 0 10s
my-job-cz8f4 0/1 Completed 0 10s
[rootk8s-master pod]# kubectl get Jobs -n myns
NAME COMPLETIONS DURATION AGE
my-job 18/18 35s 4m15s
4.注意如上例的话执行“kubectl delete -f myJob.yaml”就可以将job删掉
二.CronJob简写为cj
1.简介
他是在借助Job的情况下按照指定的时间节点去循环重复执行任务。在 CronJob 对象中定义时间表schedule该时间表指定了作业运行的时间间隔或特定的运行时间。CronJob 控制器会定期检查时间表如果当前时间匹配时间表中定义的时间则创建一个新的 Job 对象其中包含要执行的任务如容器镜像、命令、参数等。
当 Job 对象创建后k8s会自动将其调度到可用节点上进行运行并自动管理作业的生命周期包括启动、监控、重试和清理等操作。执行成功后pod会被表示为completed该pod的主进程已经完成并退出。
2.CronJob较完整解释
截取自edit cj的spec部分
spec:schedule: */1 * * * * #这里是为任务定义时间分时日月周的顺序书写控制任务再什么时候执行如果这里需要指定多个时间时可以用逗号隔开startingDeadlineSeconds: 300 #同jobs解释successfulJobsHistoryLimit: 3 #同jobs解释suspend: falseconcurrencyPolicy: Allow #并发执行策略用于定义前一次作业运行尚未完成时是否以及如何运行后一次的作业#默认Allow允许jobs并发运行#Forbid禁止并发运行上一次的运行失败会跳过下一次运行#Replace用新定时任务区替换旧任务的执行failedJobsHistoryLimit: 1 #同jobsjobTemplate: #定义job的控制模板在pod模板外面嵌套一个对job的模板定义为cronjob控制器生成jobsmetadata:creationTimestamp: nullspec:completions: 3 #这里就是jobs的定义了parallelism: 1template:metadata:creationTimestamp: nullspec:containers:- command:- /bin/sh- -c- for i in [1..10]; do /bin/echo $i;sleep 2; done;image: busyboximagePullPolicy: Alwaysname: my-cronjob-containerresources: {}terminationMessagePath: /dev/termination-logterminationMessagePolicy: FilednsPolicy: ClusterFirstrestartPolicy: NeverschedulerName: default-schedulersecurityContext: {}terminationGracePeriodSeconds: 30
格式类似于Linux上的这个定时任务分时日月周周表示一周中的第几天可填值如图示 3.案例演示
这里我们创建一个Cronjob每隔一分钟只是为了测试效果执行指定的遍历任务记录jobs的成功次数。最后结果可以观察jobs的创建时间25s-85s-2m25s确实是按照每分钟执行一次
[rootk8s-master pod]# cat myCronJob.yaml
apiVersion: batch/v1
kind: CronJob
metadata:name: my-cronjobnamespace: myns
spec:schedule: */1 * * * *startingDeadlineSeconds: 300jobTemplate:metadata:spec:completions: 3parallelism: 1template:spec:restartPolicy: Nevercontainers:- name: my-cronjob-containerimage: busyboxcommand: [/bin/sh,-c,for i in [1..10]; do /bin/echo $i;sleep 2; done;]
[rootk8s-master pod]# kubectl get cj -n myns
NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE
my-cronjob */1 * * * * False 0 53s 3m9s
[rootk8s-master pod]# kubectl get jobs -n myns
NAME COMPLETIONS DURATION AGE
my-cronjob-28354471 3/3 24s 2m25s
my-cronjob-28354472 3/3 24s 85s
my-cronjob-28354473 3/3 23s 25s
4.如上例的话执行“kubectl delete -f myCronJob.yaml”就可以将cj删掉jobs一并被删除