Kubernetes笔记(十三)--定时任务Cronjob

【Kubernetes】Pod学习(十二)Pod调度:Job和Cronjob 此文为学习《Kubernetes权威指南》的相关笔记 学习笔记: Job:批处理调度,用于定义并启动一个批处理任务,与RS\RC\Deployment\DaemonSet类似,Job同样作为副本控制器的一种,来控制一组Pod容器,批处理任务的建立目标在于处理一批工作项(work item),在处理完成后,整个批处理任务结束,与其他副本控制器的差别在于: Job所控制的Pod副本短暂运行,且R... 阅读详情

Job 和 Cronjob 的使用

上节课我们学习了Pod自动伸缩的方法,我们使用到了HPA这个资源对象,我们在后面的课程中还会和大家接触到HPA的。今天我们来给大家介绍另外一类资源对象:Job,我们在日常的工作中经常都会遇到一些需要进行批量数据处理和分析的需求,当然也会有按时间来进行调度的工作,在我们的Kubernetes集群中为我们提供了Job和CronJob两种资源对象来应对我们的这种需求。

Job负责处理任务,即仅执行一次的任务,它保证批处理任务的一个或多个Pod成功结束。而CronJob则就是在Job上加上了时间调度。

Job

我们用Job这个资源对象来创建一个任务,我们定一个Job来执行一个倒计时的任务,定义YAML文件:

apiVersion: batch/v1
kind: Job
metadata:
  name: job-demo
spec:
  template:
    metadata:
      name: job-demo
    spec:
      restartPolicy: Never
      containers:
      - name: counter
        image: busybox
        command:
        - "bin/sh"
        - "-c"
        - "for i in 9 8 7 6 5 4 3 2 1; do echo $i; done"

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

然后来创建该Job,保存为job-demo.yaml:

$ kubectl create -f ./job.yaml
job "job-demo" created

然后我们可以查看当前的Job资源对象:

$ kubectl get jobs

注意查看我们的Pod的状态,同样我们可以通过kubectl logs来查看当前任务的执行结果。

CronJob

CronJob其实就是在Job的基础上加上了时间调度,我们可以:在给定的时间点运行一个任务,也可以周期性地在给定时间点运行。这个实际上和我们Linux中的crontab就非常类似了。

一个CronJob对象其实就对应中crontab文件中的一行,它根据配置的时间格式周期性地运行一个Job,格式和crontab也是一样的。

crontab的格式如下:

分 时 日 月 星期 要运行的命令 第1列分钟0~59 第2列小时0~23) 第3列日1~31 第4列月1~12 第5列星期0~7(0和7表示星期天) 第6列要运行的命令

现在,我们用CronJob来管理我们上面的Job任务,

apiVersion: batch/v2alpha1
kind: CronJob
metadata:
  name: cronjob-demo
spec:
  schedule: "*/1 * * * *"
  jobTemplate:
    spec:
      template:
        spec:
          restartPolicy: OnFailure
          containers:
          - name: hello
            image: busybox
            args:
            - "bin/sh"
            - "-c"
            - "for i in 9 8 7 6 5 4 3 2 1; do echo $i; done"

我们这里的Kind是CronJob了,要注意的是.spec.schedule字段是必须填写的,用来指定任务运行的周期,格式就和crontab一样,另外一个字段是.spec.jobTemplate, 用来指定需要运行的任务,格式当然和Job是一致的。还有一些值得我们关注的字段.spec.successfulJobsHistoryLimit和.spec.failedJobsHistoryLimit,表示历史限制,是可选的字段。它们指定了可以保留多少完成和失败的Job,默认没有限制,所有成功和失败的Job都会被保留。然而,当运行一个Cron Job时,Job可以很快就堆积很多,所以一般推荐设置这两个字段的值。如果设置限制的值为 0,那么相关类型的Job完成后将不会被保留。

接下来我们来创建这个cronjob

$ kubectl create -f cronjob-demo.yaml
cronjob "cronjob-demo" created

当然,也可以用kubectl run来创建一个CronJob:

kubectl run hello --schedule="*/1 * * * *" --restart=OnFailure --image=busybox -- /bin/sh -c "date; echo Hello from the Kubernetes cluster"
$ kubectl get cronjob
NAME      SCHEDULE      SUSPEND   ACTIVE    LAST-SCHEDULE
hello     */1 * * * *   False     0         <none>
$ kubectl get jobs
NAME               DESIRED   SUCCESSFUL   AGE
hello-1202039034   1         1            49s
$ pods=$(kubectl get pods --selector=job-name=hello-1202039034 --output=jsonpath={.items..metadata.name} -a)
$ kubectl logs $pods
Mon Aug 29 21:34:09 UTC 2016
Hello from the Kubernetes cluster

$ kubectl delete cronjob hello
cronjob "hello" deleted

一旦不再需要 Cron Job,简单地可以使用 kubectl 命令删除它:

$ kubectl delete cronjob hello
cronjob "hello" deleted

这将会终止正在创建的 Job。然而,运行中的 Job 将不会被终止,不会删除 Job 或 它们的 Pod。为了清理那些 Job 和 Pod,需要列出该 Cron Job 创建的全部 Job,然后删除它们:

$ kubectl get jobs
NAME               DESIRED   SUCCESSFUL   AGE
hello-1201907962   1         1            11m
hello-1202039034   1         1            8m
...

$ kubectl delete jobs hello-1201907962 hello-1202039034 ...
job "hello-1201907962" deleted
job "hello-1202039034" deleted
...

一旦 Job 被删除,由 Job 创建的 Pod 也会被删除。注意,所有由名称为 “hello” 的 Cron Job 创建的 Job 会以前缀字符串 “hello-” 进行命名。如果想要删除当前 Namespace 中的所有 Job,可以通过命令 kubectl delete jobs --all 立刻删除它们。

使用K8s的Cronjob完成定时任务 前言 最近有个任务,需要定时同步数据,我使用的是springboot的@Scheduled来完成的,老大说需要单独写项目使用K8S的Cronjob定时任务来完成。 步骤 1.使用springboot执行单次任务。(之前博客写到过) 将业务代码项目打包,使用Xftp传到服务器下。 2.编写Dockerfile FROM repo.chinare.com.cn/amazoncorretto:8 ADD task-0.0.1-SNAPSHOT.jar /crudp/app1.jar WORKDIR /crudp 阅读详情

相关推荐

Kubernetes——Job与CronJob

一、Job (1)Job概述 Job负责处理短暂的一次性任务,即仅执行一次的任务,它保证批处理任务的一个或多个pod成功结束。 Kubernetes支持以下几种Job: 非并行Job:通常创建一个Pod直到其成功结束; 固定结束次数的Job:在spec字段下添加completions字段。创建多个Pod,直到满足completions规定的数值。如果不添加的话,默认情况下是1个; 带有工作队列的并行Job:在spec字段下添加Parallelism字段。表示几个job同时并行工作。如果不添加的话,默认情况下

看清所以看轻 927

【Kubernetes实战】(十五)Pod 控制器 CronJob相关命令

cronjob是管理job,也就是每一个周期创建一个job去执行任务,一次只能管理一个job。cronjob其实就是在Job的基础上加上了时间调度,我们可以:在给定的时间点运行一个任务,也可以周期性地在给定时间点运行。这个实际上和Linux中的crontab就非常类似了。一个cronjob对象其实就对应crontab文件中的一行,它根据配置的时间格式周期性地运行一个Job,格式和crontab也是一样的。

884

k8s中job与cronjob使用详解

k8s job详细使用

congge 7576

Kubernetes(k8s)的Pod控制器Job和CronJob详细讲解

目录1. Job控制器1.1 概述1.2 Job的创建、查看、删除1.2.1 Job的创建1.2.2 Job的查看1.2.3 Job的删除2. CronJob控制器2.1 概述2.2 CronJob的创建、查看、删除2.2.1 CronJob的创建2.2.2 CronJob的查看2.2.3 CronJob的删除 1. Job控制器 1.1 概述 Job主要用于负责批量处理短暂的一次性任务 Job的特点: 当Job创建的Pod执行成功结束时,Job将记录成功结束的Pod数量 当成功结束的Pod达到指定的数量

Bulut0907 1970

【云原生】Kubernetes中的定时任务cronjob的详细用法与企业级应用案例分享

在现代的云原生应用中,定时任务是一个非常重要的组成部分。Kubernetes(简称k8s)提供了一种称为CronJob的机制,可以让我们方便地定义和管理定时任务。CronJob基于Cron表达式,允许在指定的时间间隔内自动运行容器化的任务,如定时备份、数据清理、定期报告等。本文将结合实际案例,详细介绍Kubernetes中CronJob的详细用法。

景天科技苑 3万+

十六、K8S-Job(批处理)和Cronjob:定时任务

spec.startingDeadlineSeconds 字段是可选的。它表示任务如果由于某种原因错过了调度时间,开始该任务的截止时间的秒数,过了截止时间,CronJob 就不会开始该任务的实例(未来的任务仍在调度之中)。

爱吃西红柿的博客 3293

【kubernetes】k8s的job和cronjob详细说明【job、cronjob(cj)、descheduler(pod均衡)】

文章目录说明 说明

崔崇鑫的博客,你linux/云运维工作中的百科全书。 1万+

Kubernetes实战(八)-定时任务(Cronjob)

Kubernetes 从1.5版本开始增加了一种新的类型 Job,即类似 Linux Cron 的定时任务 Cron Job,但两者之间也有一些区别,支持 ", - * / "四个字符,*:表示匹配任意值,如果在Minutes 中使用,表示每分钟 /: 表示起始时间开始触发,然后每隔固定时间触发一次,例如:在Minutes 设置的是5/20,则表示第一次触发是在第5min时,接下来每20min触发一次,即,第25min,45min等时刻触发

专注基础架构领域 1864

Kubernetes中Job与Cronjob 的使用

Kubernetes集群中为我们提供了Job和CronJob两种资源对象来应对我们的这种需求

驰兔的博客 660

手把手教你用UNet实现轨道缺陷检测(附RSDDs数据集下载与完整代码)

本文详细介绍了如何使用UNet模型实现轨道缺陷检测,包括RSDDs数据集的下载与处理、UNet架构的改进与优化、训练策略设计以及模型部署的全流程。通过实战案例,展示了如何利用深度学习技术提升工业质检效率,特别适合从事工业缺陷检测和图像处理的开发者参考。

dapp9builder的博客 746

别再死记硬背了!用Multisim仿真5分钟搞懂运放电压跟随器到底要不要加反馈电阻

本文通过Multisim仿真实验,深入解析运放电压跟随器中反馈电阻的必要性。实验对比不同阻值对电路性能的影响,揭示反馈电阻在提供偏置电流通路、提升高频稳定性和ESD保护中的关键作用,并给出工程实践中的优化建议,帮助工程师快速掌握运放电路设计要点。

weixin_42641998的博客 371

【Kubernetes】使用CronJob进行高级调度,定时任务的应用

核心部分说明示例或默认值时间规则决定任务执行时间,采用 cron 格式,由分钟、小时、日、月、星期组成0 3 * * *(每天凌晨 3 点)任务模板定义任务具体内容,包括容器镜像、命令等容器使用 busybox 镜像,执行 echo 命令历史记录限制保留已完成和失败的 Job 数量成功 3 个,失败 1 个(默认)并发策略处理任务并发执行的策略Allow(默认)、Forbid、Replace工作流程监控时间→触发任务→执行任务→记录历史→循环执行要点知识。

m0_74282926的博客 2949

Spyglass实战指南:跨时钟域同步方案深度解析

本文深度解析了Spyglass在跨时钟域同步方案验证中的实战应用。通过真实案例阐述了亚稳态的危害,并详细介绍了从基础的两级同步器到复杂的异步FIFO与握手协议等八大同步方案,以及如何利用Spyglass进行有效配置、检查与问题排查,为提升芯片设计可靠性提供系统性的避坑指南。

weixin_29219189的博客 834

k8s 与 cronjob

本次 More Time 介绍 k8s 与 cronjob。有的时候有各种各样的限制不能执行 Linux 的 cronjob但是可以用 k8s(这个k8s上的有点牵强)。本文介绍一个用 k8s 的定时功能。如果能从 OS 层面解构定时任务,就会节约很多时间。没错,肯定要绕道本公众号的宗旨——节约开发时间上。那么来个场景,就往 mysql 里写数据吧,1分钟写1条。 mysql client do...

more time 1136

2025届程序技术类笔试题

希尔排序在直接插入排序的基础上进行了改进,它通过比较相距一定间隔的元素来进行,各轮比较所用的距离随着算法的进行而减小,直到只比较相邻元素的最后一轮排序为止。某人逆着水流的方向向岸边划船,每次行进前进x米后需要休息一下,休息期间船会自行倒退y米,每次休息后再次行进,前进距离缩短1/5,若起始距离岸边为m米,问:能否到达岸上,需要行进多少次才能上岸。直接插入排序的原理是将第i个元素插入前面i-1个已排好序的记录中,将比第i个元素大的记录依次向后移动一个位置,将第i个元素插入空位。第二轮相邻比较,后移2次。

博客 591

OpenGL ES 3.0 开发(一):绘制一个三角形

该原创文章首发于微信公众号:字节流动 什么是 OpenGLES OpenGLES 全称 OpenGL for Embedded Systems ,是三维图形应用程序接口 OpenGL 的子集,本质上是一个跨编程语言、跨平台的编程接口规范,主要应用于嵌入式设备,如手机、平板等。由科纳斯(Khronos)组织定义和推广,科纳斯是一个图形软硬件行业协会,该协会主要关注图形和多媒体方面的开放标准。 O...

字节流动 8万+

K8s Job与CronJob:定时任务与批量处理

摘要:Kubernetes中的Job和CronJob是管理定时任务和批量处理的重要工具。Job用于执行一次性任务(如数据清洗),而CronJob则按计划重复执行任务(如数据库备份)。通过YAML文件定义任务后,使用kubectl命令创建和监控。常见问题包括镜像拉取失败、容器错误和资源不足,可通过检查镜像配置、日志分析和调整资源来解决。这些功能显著提升了K8s的任务调度能力。

fykam的博客 1031

探索激光焊接光束质量诊断系统:原理、应用与前沿

激光焊接光束质量诊断系统是一套专门用于精确评估和监测激光焊接过程中光束特性的精密设备。它宛如一个精密的 “光束医生”,能够全方位地对激光光束进行 “体检”,为焊接工艺提供关键的数据支持。探测器:作为系统的 “感知触角”,探测器负责捕捉激光光束的各种信息,其性能直接影响着诊断的准确性。例如,常见的 CCD(电荷耦合器件)探测器和 CMOS(互补金属氧化物半导体)探测器,它们能够将光信号转化为电信号,具有高灵敏度、高分辨率等特点,可精确探测光束的强度分布、光斑位置等参数。光学透镜。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 2582

K8s系列之:Cronjob定时任务

K8s系列之:Cronjob定时任务 K8s新类型的Job,类似Linux Cron的定时任务Cron Job。 在API Server的启动进程上增加以下配置参数并重启: --runtime-config=batch/v2alpha1=true Cron Job的定时表达式,基本上照搬了Linux Cron的表达式,区别是第1位是分钟而不是秒,格式如下: Minutes Hours DayofMonth Month DayofWeek Year 每一个域可出现的字符如下: Minutes:可出现",

zhengzaifeidelushang的博客 6568

基于jeecgboot3.9.0的项目管理——项目工作台(二)

基于jeecgboot3.9.0的项目管理——项目工作台(二)

宁波阿成的博客 204

matlab 点云可视化(1)——pcshow()函数可视化单个点云

matlab可视化单个点云常用方法汇总。

点云侠的博客 5357

K8S学习之定时任务CronJob配置schedule参数详解

k8s定时任务配置cron表达式语法

CharlesYan的博客 6149

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Java定时任务与Kubernetes CronJob、AWS EventBridge的集成方案指南

本文深入探讨了Java定时任务与Kubernetes CronJob、AWS EventBridge的集成方案。第一部分介绍基础原理:Java定时任务实现方式(Timer、ScheduledExecutorService、Quartz)、K8s CronJob工作机制及AWS EventBridge事件驱动架构。第二部分提出四种集成策略:Java应用作为CronJob执行引擎、监听EventBridge事件、EventBridge触发K8s Job、混合模式组合使用。第三部分提供具体实现代码与最佳实践,包括

索大神的博客 1123

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

深入理解Kubernetes中的CronJob

在Kubernetes(K8s)中,CronJob是一种用于管理定时任务的资源对象。它允许你按照预定的时间表定期运行任务,类似于Linux系统中的cron守护进程。CronJob非常适合用于执行周期性的任务,例如备份、清理、报告生成等。本文将深入探讨CronJob的技术原理,并通过示例展示如何在Kubernetes中使用CronJob。

pengdott的专栏 1517

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

k8s+springboot+CronJob 定时任务部署

k8s+springboot+CronJob 定时任务部署

xiaogg3678的专栏 1749

kubernetes之CronJob介绍

在进行任务自动化的时候,Hadoop生态中有Oozie可以用来管理workflow,但是如果我们的任务是通过pod部署在了kubernetes上的话,我们就可以利用cronJob来进行job的定时与周期性的运行。 CronJob是用来管理基于时间的Job,即: 1     在给定的时间点运行一次Job 2     周期性的在给定的时间点运行 其中指定周期的字段为spec.schedul

hanlaipeng的博客 1万+
上一篇: Kubernetes笔记(十二)--Pod自动扩容(HPA)
下一篇: Kubernetes笔记(十四)--Serviece
那记忆微凉
博客等级 码龄9年 412粉丝 387原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值