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. python为什么从0开始_为什么大多数编程语言中,索引都是从0开始
  2. 关于预付卡,您需要知道的事儿
  3. 思科pix防火墙配置实例大全
  4. maven依赖管理的概念
  5. 20道JS原理题助你面试一臂之力!
  6. c语言gets,getc,C语言的getc()函数和gets()函数的使用对比
  7. 使用intellij idea创建JSP和引入Tomecat包
  8. 如何使用 Spring Boot 开发邮件系统
  9. 天联无法ping通服务器地址_金万维天联标准版无法连接,怎么办?
  10. Mysql8.0如何重置密码
  11. php易语言互交_易语言php编码转换 易语言与php数据交互
  12. 为什麽CMOS电路的输入端不准悬空,而TTL电路的输入端不准串接大电阻?
  13. 工程实践中的体系与系统
  14. 2022年北京购房攻略二 (城区交通篇)
  15. 十分钟玩转3D绘图:WxGL完全手册(第二版)
  16. Prettier your project
  17. oracle 截断数据库,Oracle截断表
  18. JavaScript复习笔记(三)数组及数组API
  19. Linux课程project----基于c/c++
  20. (LeetCode)Java 求解无重复字符的最长子串

热门文章

  1. vue echarts 条纹柱状横向图
  2. 数理统计复习笔记二——充分统计量
  3. Matlab中text函数在图像中固定位置添加信息的用法
  4. 手机计算机无法使用,用数据线把手机连接电脑,电脑无法识别,怎么回事?
  5. Xcelsius 使用XML做为数据源 ----利用ASP与数据库进行交互,即时刷新
  6. 身份证验证判断、身份证正则表达式、15位、18位身份证验证
  7. 白蛋白纳米-超声微泡载组织型纤溶酶原激活物基因靶向制备研究
  8. win10虚拟机dhcp服务器设置,win10 配置dhcp服务器设置
  9. ES搜索特殊字符异常Encountered: <EOF> after
  10. 东北四省赛E-Minimum Spanning Tree-贡献求和