k8s中批量处理Pod应用的Job和CronJob控制器介绍

目录

一.Job控制器

1.简介

2.Jobs较完整解释

3.示例演示

4.注意:如上例的话,执行“kubectl delete -f myJob.yaml”就可以将job删掉

二.CronJob(简写为cj)

1.简介

2.CronJob较完整解释

3.案例演示

4.如上例的话,执行“kubectl delete -f myCronJob.yaml”就可以将cj删掉,jobs一并被删除


 

一.Job控制器

1.简介

他主要是用于批量地去执行一次性任务,确保在pod上让指定的任务能够正确完成,我们可以在配置中指定期望其完成的数量,执行成功后会记录下成功的数量,执行完成后pod会标识为completed(该pod的主进程已经完成并退出)。

2.Jobs较完整解释

截取至edit Jobs的spec部分

spec:backoffLimit: 6   #执行失败后的重试次数,不指定就默认6completionMode: NonIndexedcompletions: 18  #期望job成功运行的数量,不指定就默认为1manualSelector: true   #是否可以使用selector选择器,不指定就默认false那么将无法应用selector部分parallelism: 6   #job执行的并发数量,不指定的话默认1selector:matchLabels:app: job-podsuspend: falsetemplate:metadata:creationTimestamp: nulllabels:app: job-podspec:containers:- command:- /bin/sh- -c- for i in [1..10];do /bin/echo $i;sleep 2; done;image: busyboximagePullPolicy: Alwaysname: my-job-containerresources: {}terminationMessagePath: /dev/termination-log  #这些参数之前介绍过terminationMessagePolicy: FilednsPolicy: ClusterFirstrestartPolicy: Never#这里的重启策略算是比较特殊的,尤其注意这里template.spec的restartPolicy会覆盖模板外设置的restartPolicy#若为Never,pod出现故障时job会创建新的pod,故障pod不消失,且不重启,failed次数加1。#若为OnFailure,pod出现故障时job会重启容器,不创建pod,failed次数不变。#若为Always,一直重启,job就会重复执行,不使用。
置为AlwaysschedulerName: default-schedulersecurityContext: {}terminationGracePeriodSeconds: 30

3.示例演示

这里创建一个Job,执行指定遍历命令,期望运行成功18个pod,每次并发运行6个pod。最后可以观察到是运行了18个pod,pod的最后状态也变为Completed。

[root@k8s-master pod]# cat myJob.yaml 
apiVersion: batch/v1
kind: Job
metadata:name: my-jobnamespace: myns
spec:completions: 18parallelism: 6manualSelector: trueselector:matchLabels:app: job-podtemplate:metadata:labels:app: job-podspec:restartPolicy: Nevercontainers:- name: my-job-containerimage: busyboxcommand: ["/bin/sh","-c","for i in [1..10];do /bin/echo $i;sleep 2; done;"]
​
[root@k8s-master pod]# kubectl apply -f myJob.yaml
job.batch/my-job created
[root@k8s-master pod]# kubectl get pods -n myns -w
NAME           READY   STATUS              RESTARTS   AGE
my-job-b6s8s   0/1     ContainerCreating   0          2s
my-job-jc4zz   0/1     ContainerCreating   0          2s
my-job-kts5m   0/1     ContainerCreating   0          2s
my-job-ppltd   0/1     ContainerCreating   0          2s
my-job-shn8q   0/1     ContainerCreating   0          2s
my-job-zb757   0/1     ContainerCreating   0          2s
my-job-kts5m   0/1     ContainerCreating   0          2s
my-job-shn8q   0/1     ContainerCreating   0          2s
my-job-ppltd   0/1     ContainerCreating   0          2s
my-job-jc4zz   1/1     Running             0          5s
my-job-kts5m   1/1     Running             0          6s
my-job-jc4zz   0/1     Completed           0          7s
my-job-zb757   1/1     Running             0          8s
my-job-jc4zz   0/1     Completed           0          8s
my-job-jc4zz   0/1     Completed           0          8s
my-job-kts5m   0/1     Completed           0          8s
my-job-jc4zz   0/1     Completed           0          9s
my-job-2zl7z   0/1     Pending             0          0s
my-job-2zl7z   0/1     Pending             0          0s
my-job-jc4zz   0/1     Completed           0          9s
my-job-2zl7z   0/1     ContainerCreating   0          0s
my-job-shn8q   1/1     Running             0          9s
my-job-kts5m   0/1     Completed           0          9s
my-job-2zl7z   0/1     ContainerCreating   0          0s
my-job-kts5m   0/1     Completed           0          9s
my-job-zb757   0/1     Completed           0          10s
my-job-52mf9   0/1     Pending             0          0s
my-job-52mf9   0/1     Pending             0          0s
my-job-kts5m   0/1     Completed           0          10s
my-job-52mf9   0/1     ContainerCreating   0          0s
my-job-kts5m   0/1     Completed           0          10s
my-job-52mf9   0/1     ContainerCreating   0          0s
my-job-b6s8s   1/1     Running             0          11s
my-job-zb757   0/1     Completed           0          11s
my-job-zb757   0/1     Completed           0          11s
my-job-shn8q   0/1     Completed           0          11s
my-job-zb757   0/1     Completed           0          12s
my-job-ftzpl   0/1     Pending             0          0s
my-job-ftzpl   0/1     Pending             0          0s
my-job-zb757   0/1     Completed           0          12s
my-job-ftzpl   0/1     ContainerCreating   0          0s
my-job-ppltd   1/1     Running             0          12s
my-job-shn8q   0/1     Completed           0          12s
my-job-ftzpl   0/1     ContainerCreating   0          0s
my-job-shn8q   0/1     Completed           0          12s
my-job-b6s8s   0/1     Completed           0          13s
my-job-8hf4n   0/1     Pending             0          0s
my-job-8hf4n   0/1     Pending             0          0s
my-job-shn8q   0/1     Completed           0          13s
my-job-8hf4n   0/1     ContainerCreating   0          0s
my-job-shn8q   0/1     Completed           0          13s
my-job-8hf4n   0/1     ContainerCreating   0          0s
my-job-2zl7z   1/1     Running             0          5s
my-job-b6s8s   0/1     Completed           0          14s
my-job-b6s8s   0/1     Completed           0          14s
my-job-ppltd   0/1     Completed           0          14s
my-job-pxndz   0/1     Pending             0          0s
my-job-b6s8s   0/1     Completed           0          15s
my-job-pxndz   0/1     Pending             0          0s
my-job-b6s8s   0/1     Completed           0          15s
my-job-pxndz   0/1     ContainerCreating   0          0s
my-job-52mf9   1/1     Running             0          5s
my-job-ppltd   0/1     Completed           0          15s
my-job-pxndz   0/1     ContainerCreating   0          0s
my-job-ppltd   0/1     Completed           0          15s
my-job-6tdqn   0/1     Pending             0          0s
my-job-2zl7z   0/1     Completed           0          7s
my-job-6tdqn   0/1     Pending             0          0s
my-job-ppltd   0/1     Completed           0          16s
my-job-6tdqn   0/1     ContainerCreating   0          0s
my-job-ppltd   0/1     Completed           0          16s
my-job-6tdqn   0/1     ContainerCreating   0          0s
my-job-ftzpl   1/1     Running             0          5s
my-job-2zl7z   0/1     Completed           0          8s
my-job-2zl7z   0/1     Completed           0          8s
my-job-52mf9   0/1     Completed           0          7s
my-job-2zl7z   0/1     Completed           0          9s
my-job-cxfmh   0/1     Pending             0          0s
my-job-cxfmh   0/1     Pending             0          0s
my-job-2zl7z   0/1     Completed           0          9s
my-job-cxfmh   0/1     ContainerCreating   0          0s
my-job-8hf4n   1/1     Running             0          5s
my-job-52mf9   0/1     Completed           0          8s
my-job-cxfmh   0/1     ContainerCreating   0          0s
my-job-52mf9   0/1     Completed           0          8s
my-job-ftzpl   0/1     Completed           0          7s
my-job-4zg6h   0/1     Pending             0          0s
my-job-4zg6h   0/1     Pending             0          0s
my-job-52mf9   0/1     Completed           0          9s
my-job-4zg6h   0/1     ContainerCreating   0          0s
my-job-52mf9   0/1     Completed           0          9s
my-job-4zg6h   0/1     ContainerCreating   0          0s
my-job-pxndz   1/1     Running             0          5s
my-job-ftzpl   0/1     Completed           0          8s
my-job-ftzpl   0/1     Completed           0          8s
my-job-8hf4n   0/1     Completed           0          7s
my-job-ftzpl   0/1     Completed           0          9s
my-job-5spg7   0/1     Pending             0          0s
my-job-5spg7   0/1     Pending             0          0s
my-job-ftzpl   0/1     Completed           0          9s
my-job-5spg7   0/1     ContainerCreating   0          0s
my-job-6tdqn   1/1     Running             0          5s
my-job-8hf4n   0/1     Completed           0          8s
my-job-5spg7   0/1     ContainerCreating   0          0s
my-job-8hf4n   0/1     Completed           0          8s
my-job-pxndz   0/1     Completed           0          7s
my-job-dr2mp   0/1     Pending             0          0s
my-job-dr2mp   0/1     Pending             0          0s
my-job-8hf4n   0/1     Completed           0          9s
my-job-dr2mp   0/1     ContainerCreating   0          0s
my-job-8hf4n   0/1     Completed           0          9s
my-job-dr2mp   0/1     ContainerCreating   0          0s
my-job-cxfmh   1/1     Running             0          5s
my-job-pxndz   0/1     Completed           0          8s
my-job-pxndz   0/1     Completed           0          8s
my-job-6tdqn   0/1     Completed           0          7s
my-job-pxndz   0/1     Completed           0          9s
my-job-7wjqq   0/1     Pending             0          0s
my-job-7wjqq   0/1     Pending             0          0s
my-job-pxndz   0/1     Completed           0          9s
my-job-7wjqq   0/1     ContainerCreating   0          0s
my-job-4zg6h   1/1     Running             0          5s
my-job-6tdqn   0/1     Completed           0          8s
my-job-7wjqq   0/1     ContainerCreating   0          0s
my-job-6tdqn   0/1     Completed           0          8s
my-job-cxfmh   0/1     Completed           0          7s
my-job-cz8f4   0/1     Pending             0          0s
my-job-cz8f4   0/1     Pending             0          0s
my-job-6tdqn   0/1     Completed           0          9s
my-job-cz8f4   0/1     ContainerCreating   0          0s
my-job-6tdqn   0/1     Completed           0          9s
my-job-cz8f4   0/1     ContainerCreating   0          0s
my-job-5spg7   1/1     Running             0          5s
my-job-cxfmh   0/1     Completed           0          8s
my-job-cxfmh   0/1     Completed           0          8s
my-job-4zg6h   0/1     Completed           0          7s
my-job-cxfmh   0/1     Completed           0          9s
my-job-cxfmh   0/1     Completed           0          9s
my-job-4zg6h   0/1     Completed           0          8s
my-job-4zg6h   0/1     Completed           0          8s
my-job-5spg7   0/1     Completed           0          7s
my-job-4zg6h   0/1     Completed           0          9s
my-job-4zg6h   0/1     Completed           0          9s
my-job-dr2mp   1/1     Running             0          6s
my-job-7wjqq   1/1     Running             0          5s
my-job-5spg7   0/1     Completed           0          8s
my-job-5spg7   0/1     Completed           0          8s
my-job-5spg7   0/1     Completed           0          9s
my-job-5spg7   0/1     Completed           0          9s
my-job-dr2mp   0/1     Completed           0          8s
my-job-7wjqq   0/1     Completed           0          7s
my-job-cz8f4   1/1     Running             0          6s
my-job-dr2mp   0/1     Completed           0          9s
my-job-dr2mp   0/1     Completed           0          9s
my-job-dr2mp   0/1     Completed           0          10s
my-job-7wjqq   0/1     Completed           0          8s
my-job-7wjqq   0/1     Completed           0          8s
my-job-dr2mp   0/1     Completed           0          10s
my-job-7wjqq   0/1     Completed           0          9s
my-job-7wjqq   0/1     Completed           0          9s
my-job-cz8f4   0/1     Completed           0          8s
my-job-cz8f4   0/1     Completed           0          9s
my-job-cz8f4   0/1     Completed           0          9s
my-job-cz8f4   0/1     Completed           0          10s
my-job-cz8f4   0/1     Completed           0          10s
​
[root@k8s-master pod]# kubectl get Jobs -n myns
NAME     COMPLETIONS   DURATION   AGE
my-job   18/18         35s        4m15s

4.注意:如上例的话,执行“kubectl delete -f myJob.yaml”就可以将job删掉

二.CronJob(简写为cj)

1.简介

他是在借助Job的情况下,按照指定的时间节点去循环重复执行任务。在 CronJob 对象中定义时间表(schedule),该时间表指定了作业运行的时间间隔或特定的运行时间。CronJob 控制器会定期检查时间表,如果当前时间匹配时间表中定义的时间,则创建一个新的 Job 对象,其中包含要执行的任务(如容器镜像、命令、参数等)。

当 Job 对象创建后,k8s会自动将其调度到可用节点上进行运行,并自动管理作业的生命周期,包括启动、监控、重试和清理等操作。执行成功后pod会被表示为completed(该pod的主进程已经完成并退出)。

2.CronJob较完整解释

截取自edit cj的spec部分

spec:schedule: '*/1 * * * *'   #这里是为任务定义时间,分时日月周的顺序书写,控制任务再什么时候执行,如果这里需要指定多个时间时可以用逗号隔开startingDeadlineSeconds: 300   #同jobs解释successfulJobsHistoryLimit: 3   #同jobs解释suspend: falseconcurrencyPolicy: Allow  #并发执行策略,用于定义前一次作业运行尚未完成时是否以及如何运行后一次的作业#默认Allow,允许jobs并发运行#Forbid,禁止并发运行,上一次的运行失败会跳过下一次运行#Replace,用新定时任务区替换旧任务的执行failedJobsHistoryLimit: 1   #同jobsjobTemplate:   #定义job的控制模板,在pod模板外面嵌套一个对job的模板定义,为cronjob控制器生成jobsmetadata:creationTimestamp: nullspec:completions: 3  #这里就是jobs的定义了parallelism: 1template:metadata:creationTimestamp: nullspec:containers:- command:- /bin/sh- -c- for i in [1..10]; do /bin/echo $i;sleep 2; done;image: busyboximagePullPolicy: Alwaysname: my-cronjob-containerresources: {}terminationMessagePath: /dev/termination-logterminationMessagePolicy: FilednsPolicy: ClusterFirstrestartPolicy: NeverschedulerName: default-schedulersecurityContext: {}terminationGracePeriodSeconds: 30

格式类似于Linux上的这个定时任务(分时日月周),周表示一周中的第几天,可填值如图示

649b26e6e7a14ae28e9fdccd7a1cc35d.png

3.案例演示

这里我们创建一个Cronjob,每隔一分钟(只是为了测试效果)执行指定的遍历任务,记录jobs的成功次数。最后结果可以观察jobs的创建时间(25s-85s-2m25s),确实是按照每分钟执行一次

[root@k8s-master pod]# cat myCronJob.yaml 
apiVersion: batch/v1
kind: CronJob
metadata:name: my-cronjobnamespace: myns
spec:schedule: "*/1 * * * *"startingDeadlineSeconds: 300jobTemplate:metadata:spec:completions: 3parallelism: 1template:spec:restartPolicy: Nevercontainers:- name: my-cronjob-containerimage: busyboxcommand: ["/bin/sh","-c","for i in [1..10]; do /bin/echo $i;sleep 2; done;"]
​
[root@k8s-master pod]# kubectl get cj -n myns
NAME         SCHEDULE      SUSPEND   ACTIVE   LAST SCHEDULE   AGE
my-cronjob   */1 * * * *   False     0        53s             3m9s
​
[root@k8s-master pod]# kubectl get jobs -n myns   
NAME                  COMPLETIONS   DURATION   AGE
my-cronjob-28354471   3/3           24s        2m25s
my-cronjob-28354472   3/3           24s        85s
my-cronjob-28354473   3/3           23s        25s

4.如上例的话,执行“kubectl delete -f myCronJob.yaml”就可以将cj删掉,jobs一并被删除

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/182891.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

工艺系统所管理数字化实践

摘要 本文介绍了上海核工程设计研究院在数字化转型方面的实践,包括业务数字化和管理数字化两个方面。业务数字化方面,该院通过开发小工具改进工作流程。管理数字化方面,该院采用零代码平台集中管理管道力学信息相关模型和数据,并…

JeeSpringCloud uploadFile.jsp 文件上传漏洞复现

0x01 产品简介 JeeSpringCloud是一款免费开源的JAVA互联网云快速开发平台,微服务分布式代码生成的敏捷开发系统架构,项目代码简洁、注释丰富、上手容易、还同时集中分布式、分布式事务、微服务,同时包含许多基础模块和监控、服务模块,JeeSpri…

RabbitMQ消息模型之Work Queues

Work Queues Work Queues,也被称为(Task Queues),任务模型,也是官网给出的第二个模型,使用的交换机类型是直连direct,也是默认的交换机类型。当消息处理比较耗时的时候,可能生产消息…

供应链 | “利刃出鞘”——顶刊POMS论文解读:制造商借助电子商务部门入侵

论文解读者:肖善,温梓曦,张怡雯,杨子豪 编者按: 解密品牌商在线电商平台:组织结构、策略选择、三方共赢 Manufacturer encroachment with an e‐commerce division 原文作者信息 Shi, S., Wang, C., Ch…

微信小程序上传报错TypeError: Failed to fetch

上传之后报message:TypeError: Failed to fetch这个错误。 关掉项目 > 选择项目的ide界面右上有个齿轮设置 > 代理

嵌入式设备与PC上位机通信协议设计的几点原则

嵌入式设备在运行中需要设置参数,这个工作经常由PC机来实现,需要为双方通信设计协议,有代表性协议是如下三种: 从上表可以看到,一般嵌入式设备内存和运算性能都有限,因此固定二进制是首选通信协议。 一&am…

【智能算法】改进粒子群优化算法及对比分析

程序名称:改进粒子群优化算法及对比分析 实现平台:matlab 代码简介:基本粒子群算法(BPSO)中,每个优化问题的解都可以看作粒子在搜索空间中的位置,粒子通过飞行速度决定它们的搜索方向和搜索范围,粒子群通…

磁环电感参数计算

磁环电感参数计算 1.什么是电感磁饱和2.电感饱和的原因3.电感饱和带来的影响3.1 感应电动势变化3.2 电感值变化3.3 功率损耗增加3.4 系统稳定性受到影响4.饱和电流计算最近在做DC/DC电源,电感是用磁环绕制的,所以关注一下磁环绕制电感参数的计算,学习学习。 某款磁环参数。 …

【Java安全】Java反射机制-成员变量的赋值与取值

文章目录 前言利用反射机制获取类的成员变量利用反射机制获取类的成员方法总结前言 Java反射(Reflection)是Java非常重要的动态特性,通过使用反射我们不仅可以获取到任何类的成员方法(Methods)、成员变量(Fields)、构造方法(Constructors)等信息,还可以动态创建Java类实例、…

【Python】实现一个简单的区块链系统

本文章利用 Python 实现一个简单的功能较为完善的区块链系统(包括区块链结构、账户、钱包、转账),采用的共识机制是 POW。 一、区块与区块链结构 Block.py import hashlib from datetime import datetimeclass Block:"""区…

Linux常用命令——ls 命令详解

文章目录 在Linux操作系统中,ls 命令是最常用且基础的命令之一。它用于列出目录内容,展示文件和目录的信息。本文将详细介绍ls 命令的各个参数及其含义,并通过实例演示它们的用法。 ls命令概述 ls 命令的基本格式为 ls [选项] [文件或目录]…

VirtualBox 7.0.8(虚拟机软件)

VirtualBox是一款开源的虚拟机软件,它是使用Qt编写,在Sun被Oracle收购后正式更名成Oracle VM VirtualBox。它可以在VirtualBox上安装并且执行Solaris、Windows、DOS、Linux、OS/2 Warp、BSD等系统作为客户端操作系统。使用者可以在VirtualBox上安装并且运…

stm32 计数模式

计数模式 但是对于通用定时器而言,计数器的计数模式不止向上计数这一种。上文基本定时器中计数器的计数模式都是向上计数的模式。 向上计数模式:计数器从0开始,向上自增,计到和自动重装寄存器的目标值相等时,计数器清…

C语言、c++史上最全最全爱心代码大全,彩色闪动、字符填充,附源码

第一种&#xff1a;红色爱心代码 直接上代码&#xff1a; #include<stdio.h> #include<Windows.h> int main() {system(" color 0c");//设计程序颜色 printf("遇见你是一件很开心的事情,爱你哟&#xff01;&#xff01;&#xff01;\n");//打…

面试阿里测开岗失败后,被面试官在朋友圈吐槽了......

前一阵子有个徒弟向我诉苦&#xff0c;说自己在参加某大厂测试面试的时候被面试官怼得哑口无言&#xff0c;场面让他一度十分尴尬 印象最深的就是下面几个问题&#xff1a; 根据你以前的工作经验和学习到的测试技术&#xff0c;说说你对质量保证的理解&#xff1f; 非关系型…

【数据结构】栈和队列---C语言版

栈和队列 一、栈的概念二、栈的实现三、栈的应用四、队列的概念五、队列的实现 一、栈的概念 栈&#xff1a;一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶&#xff0c;另一端称为栈底。栈中的数据元素遵守…

【古月居《ros入门21讲》学习笔记】08_发布者Publisher的编程实现

目录 说明&#xff1a; 1. 话题模型 图示 说明 2. 实现过程&#xff08;C&#xff09; 创建功能包 创建发布者代码&#xff08;C&#xff09; 配置发布者代码编译规则 编译并运行 编译 运行 3. 实现过程&#xff08;Python&#xff09; 创建发布者代码&#xff08;…

解决tomcat 启动 , 中文乱码问题

解决tomcat 启动 , 中文乱码问题. 第一步找到server.xml, 找到连接器, 添加 URIEncoding"UTF-8" 注意是英文的引号. 第二步, 找到 logging.properties , 在其中找到 第三步,启动服务, 观察现象,亲测有效.

Django快速搭建静态网页

Django的快速搭建 这个是例子 这个是一个目录 项目名称&#xff1a;项目似乎被命名为DJ0928&#xff0c;这是Django项目的根目录。 文件都是Django项目的核心配置文件。 settings.py 包含了项目的配置设置。urls.py 定义了项目的URL路由。wsgi.py 和 asgi.py 分别用于Web服务器…

【Qt之QSqlRelationalDelegate】描述及使用

描述 QSqlRelationalDelegate类提供了一个委托&#xff0c;用于显示和编辑来自QSqlRelationalTableModel的数据。 与默认委托不同&#xff0c;QSqlRelationalDelegate为作为其他表的外键的字段提供了一个组合框。 要使用该类&#xff0c;只需在带有QSqlRelationalDelegate实例…