这里将介绍Kubernetes工作负载资源中的Job、CronJob
Job
对于RC、RS、DS等类型的资源,其会持续运行Pod永远不会达到完成状态,其Pod会在进程退出后重新启动。为此K8s提供一种Job类型的工作负载资源,以实现完成任务后就终止。具体地,Job会创建一个或多个Pod。Job跟踪记录成功完成的Pod个数,当数量达到指定的成功个数阈值时,Job即会结束。当Pod执行失败或所在节点发生故障时,Job会创建、启动新的Pod继续执行任务。此外Job还支持以并行的方式运行多个Pod
# API组、版本
apiVersion: batch/v1
# 资源类型
kind: Job
metadata:
# Job名称
name: my-convert-data-job-1
spec:
# 该Job需要执行5次, 每次执行该Job都需要创建一个Pod
completions: 5
# 该Job并行执行的最大Pod数
parallelism: 2
# Pod 模板
template:
metadata:
# 标签信息
labels:
app: convert-data
spec:
# 重启策略: 失败时
restartPolicy: OnFailure
# 容器信息
containers:
- name: my-convert-data-1
image: luksa/batch-job
效果如下所示
CronJob
Job资源在被创建后会立即创建Pod来运行任务。而很多时候一些任务需要在特定时间内执行或按一定频率重复执行。例如备份、生成报告等。为此K8s中提供了CronJob资源来执行对周期性任务的执行。具体地,我们通过Cron表达式设置任务的执行周期。然后CronJob根据其计划编排,在每次该执行任务的时候会先创建Job资源。然后Job资源再根据Pod模板创建相应的Pod来执行任务
┌───────────── 分钟 (0 - 59)
│ ┌───────────── 小时 (0 - 23)
│ │ ┌───────────── 月的某天 (1 - 31)
│ │ │ ┌───────────── 月份 (1 - 12)
│ │ │ │ ┌───────────── 周的某天 (0 - 6)(周日到周一;在某些系统上,7 也是星期日)
│ │ │ │ │ 或者是 sun,mon,tue,web,thu,fri,sat
│ │ │ │ │
│ │ │ │ │
* * * * *
配置文件如下所示
# API组、版本
apiVersion: batch/v1
# 资源类型
kind: CronJob
metadata:
# Job名称
name: my-convert-data-job-2
spec:
# Cron 表达式: 每天每小时的0、15、30、45分钟调度执行
schedule: "0,15,30,45 * * * *"
# Job 模板
jobTemplate:
spec:
# Pod 模板
template:
metadata:
# 标签信息
labels:
app: convert-data-2
spec:
# 重启策略: 失败时
restartPolicy: OnFailure
# 容器信息
containers:
- name: my-convert-data-2
image: luksa/batch-job
效果如下所示
参考文献
-
Kubernetes in Action中文版 Marko Luksa著 -
深入剖析Kubernetes 张磊著
原文始发于微信公众号(青灯抽丝):Kubernetes工作负载资源之Job、CronJob
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/42019.html