k8s控制器之job--第二弹编写Job的定义

这篇具有很好参考价值的文章主要介绍了k8s控制器之job--第二弹编写Job的定义。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

与所有的 Kubernetes 对象一样,Job 对象的 YAML 文件中,都需要包括如下三个字段:

  • .apiVersion
  • .kind
  • .metadata

Job 对象的 YAML 文件,还需要一个 .spec 字段。

Pod Template

.spec.template 是必填字段:

  • 用于定义 pod template
  • 与 Pod 有相同的字段内容,但由于是内嵌元素,pod template 不包括阿 apiVersion 字段和 kind 字段
  • 除了 Pod 所需的必填字段之外,Job 中的 pod template 必须指定
    • 合适的标签 .spec.template.spec.labels
    • 指定合适[重启策略 restartPolicy .spec.template.spec.restartPolicy,此处只允许使用 NeverOnFailure 两个取值

Pod Selector

.spec.selector 字段是可选的。绝大部分情况下,您不需要指定该字段。

Parallel Jobs

有三种主要的任务类型适合使用 Job 运行:

  • Non-parallel Jobs
    • 通常,只启动一个 Pod,除非该 Pod 执行失败
    • Pod 执行成功并结束以后,Job 也立刻进入完成 completed 状态
  • Parallel Jobs with a fixed completion count
    • .spec.completions 为一个非零正整数
    • Job 将创建至少 .spec.completions 个 Pod,编号为 1 - .spec.completions
    • Job 记录了任务的整体执行情况,当 1 - .spec.completions 中每一个编号都有一个对应的 Pod 执行成功时,Job 进入完成状态
  • Parallel Jobs with a work queue
    • 不指定 .spec.completions,使用 .spec.parallelism
    • Pod 之间必须相互之间自行协调并发,或者使用一个外部服务决定每个 Pod 各自执行哪些任务。例如,某个Pod可能从带工作队列(work queue)中取出最多N个条目的批次数据
    • 每个 Pod 都可以独立判断其他同僚(peers)是否完成,并确定整个Job是否完成
    • 当 Job 中任何一个 Pod 成功结束,将不再为其创建新的 Pod
    • 当所有的 Pod 都结束了,且至少有一个 Pod 执行成功后才结束,则 Job 判定为成功结束
    • 一旦任何一个 Pod 执行成功并退出,Job 中的任何其他 Pod 都应停止工作和输出信息,并开始终止该 Pod 的进程

completions 和 parallelism

  • 对于 non-parallel Job,.spec.completions.spec.parallelism 可以不填写,默认值都为 1
  • 对于 fixed completion count Job,需要设置 .spec.completions 为您期望的个数;同时不设置 .spec.parallelism 字段(默认值为 1)
  • 对于 work queue Job,不能设置 .spec.completions 字段,且必须设置 .spec.parallelism 为0或任何正整数

Controlling Parallelism 并发控制

并发数 .spec.parallelism 可以被设置为0或者任何正整数,如果不设置,默认为1,如果设置为 0,则 Job 被暂停,直到该数字被调整为一个正整数。

实际的并发数(同一时刻正在运行的 Pod 数量)可能比设定的并发数 .spec.parallelism 要大一些或小一些,不一定严格相等,主要的原因有:文章来源地址https://www.toymoban.com/news/detail-499938.html

  • 对于 fixed completion count Job,实际并发运行的 Pod 数量不会超过剩余未完成的数量。如果 .spec.parallelism 比这个数字更大,将被忽略
  • 对于 work queue Job,任何一个 Pod 成功执行后,将不再创建新的 Pod (剩余的 Pod 将继续执行)
  • Job 控制器可能没有足够的时间处理并发控制
  • 如果 Job 控制器创建 Pod 失败(例如,ResourceQuota 不够用,没有足够的权限等)
  • 同一个Job中,在已创建的 Pod 出现大量失败的情况下,Job 控制器可能限制 Pod 的创建
  • 当 Pod 被优雅地关闭时(gracefully shut down),需要等候一段时间才能结束

到了这里,关于k8s控制器之job--第二弹编写Job的定义的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • k8s控制器之job--第五弹Job的自动清理

    系统中已经完成的 Job 通常是不在需要里的,长期在系统中保留这些对象,将给 apiserver 带来很大的压力。如果通过更高级别的控制器(例如 CronJobs)来管理 Job,则 CronJob 可以根据其中定义的基于容量的清理策略(capacity-based cleanup policy)自动清理Job。 除了 CronJob 之外,TTL 机

    2024年02月11日
    浏览(11)
  • k8s控制器之job--第四弹Job的终止和清理

    当 Job 完成后: 将不会创建新的 Pod 已经创建的 Pod 也不会被清理掉。此时,您仍然可以继续查看已结束 Pod 的日志,以检查 errors/warnings 或者其他诊断用的日志输出 Job 对象也仍然保留着,以便您可以查看该 Job 的状态 由用户决定是否删除已完成的 Job 及其 Pod 可通过 kubectl 命

    2024年02月10日
    浏览(11)
  • k8s控制器之job--第九弹 job如何使用扩展进行并行处理

    下面是一个 Job 的模板文件: 与 pod template 不同,此处的 job template 并不是一个 Kubernetes API 对象,而仅仅是 Job 对象的 yaml 文件(其中包含一些占位符)。例子文件中的 $ITEM 对 Kubernetes 并没有任何意义,仅仅是一个占位符,必须在使用时用实际数值替换。 在此例子中,容器唯

    2024年02月10日
    浏览(16)
  • K8s(Kubernetes)学习(四):Controller 控制器:Deployment、StatefulSet、Daemonset、Job

    K8s(Kubernetes)学习(四):Controller 控制器:Deployment、StatefulSet、Daemonset、Job

    什么是 Controller 以及作用 常见的 Controller 控制器 Controller 如何管理 Pod Deployment 基本操作与应用 通过控制器实现 Pod 升级回滚和弹性伸缩 StatefulSet 基本操作与应用 Daemonset 基本操作与应用 Job 基本操作与应用 Controller 无法解决问题 1 Controller 控制器 官网: http://kubernetes.p2hp.com/

    2024年02月09日
    浏览(35)
  • 18-k8s控制器资源-cronjob控制器

    18-k8s控制器资源-cronjob控制器

            job控制器是执行完一次任务,就结束;         cronjob控制器,是基于job控制器,定期频率性执行任务;等同于linux系统中的crontab一样; [root@k8s231 pi]# vim cronjob.yaml apiVersion: batch/v1 kind: CronJob metadata:   name: xinjizhiwa spec:   schedule: \\\"* * * * *\\\"   #定义job的模板   jobTemplate

    2024年02月22日
    浏览(59)
  • K8s控制器

    K8s控制器

    kubectl create tabtab 下面的所有都可以创建模板文件 --dry-run=client -o yaml 查询资源对象的帮助信息         kubectl explain pod.spec.restartPolicy            #这里对上下层级关系需要清楚 获取Pod模板         kubectl run mypod --image=xxxx --dry-run=client -o yaml 获取Deployment         ku

    2024年02月03日
    浏览(35)
  • k8s 控制器

    Kubernetes(K8S)是一种开源的容器编排平台,它可以自动化地管理容器化应用程序的部署、扩展和运行。K8S中的控制器是一种重要的组件,它可以确保应用程序的状态与期望的状态一致。在K8S中,有五种常见的控制器,它们分别是: 1. ReplicaSet控制器 ReplicaSet控制器用于确保P

    2024年02月13日
    浏览(12)
  • 15-k8s控制器资源-deployment/部署控制器

    15-k8s控制器资源-deployment/部署控制器

            在学习rc和rs控制器资源时,我们指导,这两个资源都是控制pod的副本数量的,但是,他们两个有个缺点,就是在部署新版本pod或者回滚代码的时候,需要先apply资源清单,然后再删除现有pod,通过资源控制,重新拉取新的pod来实现回滚或者迭代升级;         那么

    2024年02月21日
    浏览(17)
  • 14-k8s控制器资源-rs控制器replicasets

    14-k8s控制器资源-rs控制器replicasets

            replicaset副本控制器,简称:rs控制器;         用法:与rc控制器“几乎”相同;         能力:可以指定pod的副本始终存活,相比于rc控制器;支持标签匹配,也支持标签表达式         注意:不论是rc还是rs资源,都是通过“标签”惊醒匹配pod的,如果有同样

    2024年02月21日
    浏览(20)
  • k8s---pod控制器

    k8s---pod控制器

    工作负载,workload用于管理pod的中间层,确保pod资源符合预期的状态。 预期状态: 1、副本数 2、容器重启策略 3、镜像拉取策略 pod出故障的出去等等 1、replicaset:指定pod副本的数量 三个组件:                 1、pod的副本                 2、标签选择器,判断

    2024年01月18日
    浏览(12)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包