Kubernetes --(k8s)Job、CronJob

Job

https://www.kubernetes.org.cn/job
https://www.kubernetes.org.cn/cronjob

Job负责批量处理短暂的一次性任务 (short lived one-off tasks),即仅执行一次的任务,它保证批处理任务的一个或多个Pod成功结束.

Kubernetes支持以下几种Job:

1.非并行Job:通常创建一个Pod直至其成功结束
2.固定结束次数的Job:设置.spec.completions,创建多个Pod,直到.spec.completions个Pod成功结束
3.带有工作队列的并行Job:设置.spec.Parallelism但不设置.spec.completions,当所有Pod结束并且至少一个成功时,Job就认为是成功

根据.spec.completions和.spec.Parallelism的设置,可以将Job划分为以下几种pattern:
在这里插入图片描述

实验1:一次性Job

第一步:编写job的yml文件

apiVersion: batch/v1
kind: Job
metadata:
name: job
spec:
template:
spec:
restartPolicy: Never
containers:
- name: job
image: busybox
command: [“echooo”,“Hello World”]

第二步:执行yml文件

kubectl apply -f job.yml
job.batch/job created

第三步:查看pod

kubectl get pod
NAME READY STATUS RESTARTS AGE
job-jhlsf 0/1 ContainerCannotRun 0 53s
job-ldxnr 0/1 ContainerCannotRun 0 23s
job-m6cpf 0/1 ContainerCreating 0 3s
job-m8skh 0/1 ContainerCannotRun 0 64s

问题发现:创建了很多pod,为什么?
解答:Job Controller负责根据Job Spec创建Pod,并持续监控Pod的状态,直至其成功结束。如果失败,则根据restartPolicy(只支持OnFailure和Never,不支持Always)决定是否创建新的Pod再次重试任务。如果重启策略为OnFailure的话,pod会一直重启!

实验2:固定结束次数的并行Job

第一步:编写yml文件

apiVersion: batch/v1
kind: Job
metadata:
name: job
spec:
completions: 2 # 完成数
parallelism: 2 # 并行数
template:
spec:
restartPolicy: OnFailure
containers:
- name: job
image: busybox
command: ["/bin/sh","-c",“sleep 5;echo Hello World”]

第二步:运行

kubectl apply -f job.yml
job.batch/job created

第三步:查看

kubectl get pod
NAME READY STATUS RESTARTS AGE
job-x5tfw 1/1 Running 0 35s
job-zx8p2 0/1 Completed 0 35s

kubectl logs job-x5tfw
Hello World

kubectl logs job-zx8p2
Hello World

CronJob

CronJob即定时任务,就类似于Linux系统的crontab,在指定的时间周期运行指定的任务。

实验:

第一步:编写yml文件

apiVersion: batch/v1beta1
kind: CronJob
metadata:
name: cronjob1
spec:
schedule: “* * * * *”
jobTemplate:
metadata:
name: job
spec:
template:
metadata:
name: pod
spec:
restartPolicy: OnFailure
containers:
- name: busybox
image: busybox
command: [“echo”,“hello”]
imagePullPolicy: IfNotPresent

第二步:运行

kubectl apply -f cronjob.yml
cronjob.batch/cronjob1 created

第三步: 查看

kubectl get pod
NAME READY STATUS RESTARTS AGE
cronjob1-1567149060-vjqtp 0/1 Completed 0 43s

kubectl logs cronjob1-1567149060-vjqtp
hello
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值