Job

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

Kubernetes支持以下几种Job:

非并行Job:通常创建一个Pod直至其成功结束

固定结束次数的Job:设置.spec.completions,创建多个Pod,直到.spec.completions个Pod成功结束

带有工作队列的并行Job:设置.spec.Parallelism但不设置.spec.completions,当所有Pod结束并且至少一个成功时,Job就认为是成功。

根据.spec.completions和.spec.Parallelism的设置,可以将Job划分为以下几种pattern:

(.spec.completions和.spec.Parallelism的值默认为1)

Job类型

使用示例

行为

completions

Parallelism

一次性Job

数据库迁移

创建一个Pod直至其成功结束

1

1

固定结束次数的Job

处理工作队列的Pod

依次创建一个Pod运行直至completions个成功结束

2+

1

固定结束次数的并行Job

多个Pod同时处理工作队列

依次创建多个Pod运行直至completions个成功结束

2+

2+

并行Job

多个Pod同时处理工作队列

创建一个或多个Pod直至有一个成功结束

1

2+

Job示例:

注意:Job的RestartPolicy仅支持Never和OnFailure两种,不支持Always,Job就相当于来执行一个批处理任务,执行完就结束了,如果支持Always的话会陷入了死循环了。

固定结束次数的Job示例:

CronJob

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

Cron Job 管理基于时间的 job,即:

  • 在给定时间点只运行一次
  • 在给定时间点周期性地运行

CronJob示例:

创建的job的操作都是幂等的,因为 会循环执行一些任务,如果不是幂等的话,会影响运行的结果。

Cron Job 在每次调度运行时间内 大概 会创建一个 Job 对象。我们之所以说 大概 ,是因为在特定的环境下可能会创建两个 Job,或者一个 Job 都没创建。我们尝试少发生这种情况,但却不能完全避免。因此,创建 Job 操作应该是 _幂等的_。

Job 根据它所创建的 Pod 的并行度,负责重试创建 Pod,并就决定这一组 Pod 的成功或失败。Cron Job 根本不会去检查 Pod。

编写 Cron Job 规约

和其它 Kubernetes 配置一样,Cron Job 需要 apiVersion、 kind、和 metadata 这三个字段。 关于如何实现一个配置文件的更新信息,参考文档 部署应用、 配置容器 和 使用 kubectl 管理资源。

Cron Job 也需要 .spec 段。

注意: 对一个 Cron Job 的所有修改,尤其是对其 .spec 的修改,仅会在下一次运行的时候生效。

调度

.spec.schedule 是 .spec 中必需的字段,它的值是 Cron 格式字的符串,例如:0 * * * *,或者 @hourly,根据指定的调度时间 Job 会被创建和执行。

Job 模板

.spec.jobTemplate 是另一个 .spec 中必需的字段。它是 Job 的模板。 除了它可以是嵌套的,并且不具有 apiVersion 或 kind 字段之外,它和 Job 一样具有完全相同的模式(schema)。 参考 编写 Job 规格。

启动 Job 的期限(秒级别)

.spec.startingDeadlineSeconds 字段是可选的。它表示启动 Job 的期限(秒级别),如果因为任何原因而错过了被调度的时间,那么错过执行时间的 Job 将被认为是失败的。如果没有指定,则没有期限。

并发策略

.spec.concurrencyPolicy 字段也是可选的。它指定了如何处理被 Cron Job 创建的 Job 的并发执行。只允许指定下面策略中的一种:

  • Allow(默认):允许并发运行 Job
  • Forbid:禁止并发运行,如果前一个还没有完成,则直接跳过下一个
  • Replace:取消当前正在运行的 Job,用一个新的来替换

注意,当前策略只能应用于同一个 Cron Job 创建的 Job。如果存在多个 Cron Job,它们创建的 Job 之间总是允许并发运行。

挂起

.spec.suspend 字段也是可选的。如果设置为 true,后续所有执行都将被挂起。它对已经开始执行的 Job 不起作用。默认值为 false。

Job 历史限制

.spec.successfulJobsHistoryLimit 和 .spec.failedJobsHistoryLimit 这两个字段是可选的。它们指定了可以保留完成和失败 Job 数量的限制。

默认没有限制,所有成功和失败的 Job 都会被保留。然而,当运行一个 Cron Job 时,很快就会堆积很多 Job,推荐设置这两个字段的值。设置限制值为 0,相关类型的 Job 完成后将不会被保留。

Job和CronJob介绍相关推荐

  1. kubernetes之CronJob介绍

    在进行任务自动化的时候,Hadoop生态中有Oozie可以用来管理workflow,但是如果我们的任务是通过pod部署在了kubernetes上的话,我们就可以利用cronJob来进行job的定时与周 ...

  2. Knative 基本功能深入剖析:Knative Eventing 之 Sequence 介绍

    作者 | 元毅,阿里云容器平台高级开发工程师,负责阿里云容器平台 Knative 相关工作. 导读:在实际的开发中我们经常会遇到将一条数据需要经过多次处理的场景,称为 Pipeline.那么在 Kna ...

  3. 学习笔记之-Kubernetes(K8S)介绍,集群环境搭建,Pod详解,Pod控制器详解,Service详解,数据存储,安全认证,DashBoard

    笔记来源于观看黑马程序员Kubernetes(K8S)教程 第一章 kubernetes介绍 应用部署方式演变 在部署应用程序的方式上,主要经历了三个时代: 传统部署:互联网早期,会直接将应用程序部署 ...

  4. Knative 核心概念介绍:Build、Serving 和 Eventing 三大核心组件

    为什么80%的码农都做不了架构师?>>>    作者| 阿里云智能事业群高级开发工程师 元毅 Knative 主要由 Build.Serving 和 Eventing 三大核心组件构 ...

  5. Ansible 自动化运维工具之inventory和常用模块介绍

    一.inventory介绍 前面我们介绍过ansible的hosts文件是存放被管理主机的,被管理主机比较少的情况下,直接在hosts中定义即可,但是以后很定会管理多台主机,而ansible可管理的主 ...

  6. ATTCK v10版本战术介绍执行(下篇)

    一.引言 在上期文章中我们介绍了ATT&CK执行战术前6项技术内容,本期我们为大家介绍执行战术后7项技术内容,后续会陆续介绍ATT&CK其他战术内容,敬请关注. 二.ATT&C ...

  7. ATTCK v12版本战术介绍持久化(三)

    一.引言 在前几期文章中我们介绍了ATT&CK中侦察.资源开发.初始访问.执行战术.持久化战术(一)及(二)知识,本期我们为大家介绍ATT&CK 14项战术中持久化战术(三)涉及的剩余 ...

  8. Kubernetes 核心概念介绍

    云计算.容器化以及容器编排是 DevOps 中最重要的发展趋势,无论你是数据科学家.软件开发者还是产品经理,了解 Docker 和 Kubernetes 的基本概念总是有好处的,二者可以帮助你与他人协 ...

  9. 使用acmesh免费开启https(详细概念介绍与操作步骤记录)

    前言 记录一次使用acme.sh免费开启https的过程,前半部分列举一些用到的概念,后半部分记录具体操作步骤.文章已调整好线性阅读顺序,按顺序阅读即可.流程中涉及的概念会尽量进行讲解,以减少阅读此篇 ...

  10. 【Linux】logrotate 详细介绍,看完就会

    logroutate 介绍 对于大多数应用程序来说,日志文件是极其重要的工具.logrotate是一个日志文件管理工具,用于分割日志文件,删除旧的日志文件,创建新的日志文件,起到"转储&qu ...

最新文章

  1. 计算机二级考试题未来教育里占多少,计算机二级笔试试题未来教育版.doc
  2. 科学家王海峰:从百度十篇论文入选ACL 2019说起
  3. 文字超长自动省略,以...代替,CSS实现
  4. MySQL---Subquery returns more than 1 row
  5. 叮!您有一份来自平安人寿的真AI情书
  6. 软件开发需要学好数学吗?
  7. install openni2 on ubuntu
  8. python logging 工具
  9. QT/QML Text 部分功能(自动省略 自动换行 自动调节字体大小 调节行间距
  10. 小D课堂 - 新版本微服务springcloud+Docker教程_4-02 微服务调用方式之ribbon实战 订单调用商品服务...
  11. 当前最热门的编程语言python_2020年度最热门的编程语言盘点
  12. python 对象_python中对象可不可以
  13. 删除数据清理oracle表空间,oracle删除(释放)数据文件/表空间流程
  14. android 4编程入门经典pdf 下载,Android4开发入门经典 第四部分.pdf
  15. Grafana实现参数查询功能
  16. Linux 的du和df命令
  17. 不喜欢学计算机专业怎么办,录取到不喜欢的专业怎么办?说说我有所不同的“转系生活”...
  18. numpy的stack大白话解释
  19. RSF 分布式服务框架设计:线程模型
  20. lineageos信号叉号_安卓手机刷lineageOS后电信卡不能通话解决办法

热门文章

  1. 10个免费的在线Markdown编辑器
  2. 小米 网络位置服务器,小米科普:一文看懂路由器上的 Mesh 组网是什么
  3. 一个成年自动驾驶公司的底气,都是“前装量产”给的
  4. 读《论人类不平等的起源和基础》
  5. mysql lob 操作_Oracle中LOB 处理
  6. 超图软件裁剪倾斜数据
  7. pyinstaller里居然有木马?
  8. 贪吃蛇 (自我修改添加)
  9. linux五笔教程,RHEL6 64位操作系统安装极点五笔输法
  10. 身份证实名认证设计、实现思路