K8s新手系列之CronJob
概述
官方文档:https://kubernetes.io/zh-cn/docs/concepts/workloads/controllers/cron-jobs/
CronJob控制器以 Job控制器资源为其管控对象,并借助它管理pod资源对象,Job控制器定义的作业任务在其控制器资源创建之后便会立即执行,但CronJob可以以类似于Linux操作系统的周期性任务作业计划的方式控制其运行时间点及重复运行的方式。也就是说,CronJob可以在特定的时间点(反复的)去运行job任务。
学习Job可以阅读这篇文章:https://www.cnblogs.com/huangSir-devops/p/18904493

CronJob作用
- 按照指定时间周期(如每小时、每天、每周)创建 Job 对象。
- Job 负责运行 Pod 执行具体任务,任务完成后 Pod 自动终止。
CronJob资源清单文件
apiVersion: batch/v1
kind: CronJob
metadata:
name: backup-job
spec:
schedule: "0 2 * * *" # 每天凌晨2点执行
concurrencyPolicy: Forbid # 禁止并发执行
startingDeadlineSeconds: 300 # 任务启动超时时间
successfulJobsHistoryLimit: 3 # 保留成功的Job数量
failedJobsHistoryLimit: 1 # 保留失败的Job数量
jobTemplate: # Job模板
spec:
template:
spec:
containers:
- name: backup
image: my-backup-image
command: ["/bin/sh", "-c", "backup-script.sh"]
restartPolicy: OnFailure # 失败时重启
字段说明
schedule:Cron 表达式,格式为 分钟 小时 日期 月份 星期
- 示例:
- 0 2 * * *:每天凌晨 2 点。
- */15 * * * *:每 15 分钟。
- 0 0 * * 0:每周日午夜。
concurrencyPolicy:控制并发执行策略
- Allow(默认):允许并发运行多个 Job。
- Forbid:禁止并发,若前一个未完成则跳过本次调度。
- Replace:替换未完成的 Job,启动新 Job。
startingDeadlineSeconds
任务启动超时时间,若超过此时间仍未启动,则标记为失败。
jobTemplate
Job 的模板定义,包含 Pod 规范,与独立 Job 资源的 spec 字段相同。
实战案例
[root@master ~/cronjob]# cat cronjob.yaml
apiVersion: batch/v1
kind: CronJob
metadata:
name: hello-cron
spec:
# 每分钟执行一次
schedule: "* * * * *"
# 禁止并发执行
concurrencyPolicy: Forbid
# 任务启动超时时间
startingDeadlineSeconds: 300
# 保留成功的Job数量
successfulJobsHistoryLimit: 10
# 保留失败的Job数量
failedJobsHistoryLimit: 3
jobTemplate:
spec:
template:
spec:
containers:
- name: cj-busybox
image: busybox
args:
- /bin/sh
- -c
- echo "Hello, CronJob!"
restartPolicy: Never
# 创建cronjob
[root@master ~/cronjob]# kubectl apply -f cronjob.yaml
cronjob.batch/hello-cron created
查看资源
# 查看cronjob
# SUSPEND表示是否暂停调度(False表示正常运行)
# ACTIVE:当前活跃的 Job 数量(0表示没有正在运行的 Job)
# LAST SCHEDULE:上一次调度 Job 的时间(57s前)
[root@master ~/cronjob]# kubectl get cj
NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE
hello-cron * * * * * False 0 57s 18m
# 查看job
[root@master ~/cronjob]# kubectl get job
NAME COMPLETIONS DURATION AGE
hello-cron-29156032 1/1 6s 9m8s
hello-cron-29156033 1/1 6s 8m8s
hello-cron-29156034 1/1 5s 7m8s
hello-cron-29156035 1/1 6s 6m8s
hello-cron-29156036 1/1 6s 5m8s
hello-cron-29156037 1/1 5s 4m8s
hello-cron-29156038 1/1 6s 3m8s
hello-cron-29156039 1/1 5s 2m8s
hello-cron-29156040 1/1 5s 68s
hello-cron-29156041 1/1 5s 8s
# 查看Pod
[root@master ~/cronjob]# kubectl get po
NAME READY STATUS RESTARTS AGE
hello-cron-29156031-jnck2 0/1 Completed 0 10m
hello-cron-29156032-cxbsk 0/1 Completed 0 9m4s
hello-cron-29156033-bw6kf 0/1 Completed 0 8m4s
hello-cron-29156034-kkwc2 0/1 Completed 0 7m4s
hello-cron-29156035-bhzkv 0/1 Completed 0 6m4s
hello-cron-29156036-vlxrz 0/1 Completed 0 5m4s
hello-cron-29156037-v968r 0/1 Completed 0 4m4s
hello-cron-29156038-gj9c5 0/1 Completed 0 3m4s
hello-cron-29156039-7lnb4 0/1 Completed 0 2m4s
hello-cron-29156040-lqtfv 0/1 Completed 0 64s
hello-cron-29156041-bndq5 0/1 Completed 0 4s
K8s新手系列之CronJob的更多相关文章
- k8s入门系列之guestbook快速部署
k8s集群以及一些扩展插件已经安装完毕,本篇文章介绍一下如何在k8s集群上快速部署guestbook应用. •实验环境为集群:master(1)+node(4),详细内容参考<k8s入门系列之集 ...
- k8s入门系列之扩展组件(一)DNS安装篇
DNS (domain name system),提供域名解析服务,解决了难于记忆的IP地址问题,以更人性可读可记忆可标识的方式映射对应IP地址. Cluster DNS扩展插件用于支持k8s集群系统 ...
- k8s入门系列之集群安装篇
关于kubernetes组件的详解介绍,请阅读上一篇文章<k8s入门系列之介绍篇> Kubernetes集群安装部署 •Kubernetes集群组件: - etcd 一个高可用的K/V键值 ...
- Android新手系列教程(申明:来源于网络)
Android新手系列教程(申明:来源于网络) 地址:http://blog.csdn.net/column/details/androidcoder666.html
- k8s 入门系列之集群安装篇
关于kubernetes组件的详解介绍,请阅读上一篇文章<k8s入门系列之介绍篇> Kubernetes集群安装部署 •Kubernetes集群组件: - etcd 一个高可用的K/V键值 ...
- SignalR新手系列教程详解总结(转)
SignalR新手系列教程详解总结 GlobalHost.ConnectionManager.GetHubContext<TodoListHub>() .Clients.Clients(l ...
- k8s 关于Job与Cronjob
在Kubernetes 中通过创建工作负载资源 Job 可完成大型计算以及一些批处理任务.比如 Job 转码文件.获取部分文件和目录,机器学习中的训练任务等.这篇小作文我们一起来了解 k8s 中关于 ...
- k8s入门系列之扩展组件(二)kube-ui安装篇
kube-ui是k8s提供的web管理界面,可以展示节点的内存.CPU.磁盘.Pod.RC.SVC等信息. 1.编辑kube-dashboard-rc.yml定义文件[root@master kube ...
- k8s入门系列之介绍篇
•Kubernetes介绍1.背景介绍 云计算飞速发展 - IaaS - PaaS - SaaS Docker技术突飞猛进 - 一次构建,到处运行 - 容器的快速轻量 - 完整的生态环境2.什么是ku ...
- k8s 入门系列之介绍篇
•Kubernetes介绍1.背景介绍 云计算飞速发展 - IaaS - PaaS - SaaS Docker技术突飞猛进 - 一次构建,到处运行 - 容器的快速轻量 - 完整的生态环境2.什么是ku ...
随机推荐
- angular项目中修改nz-zorro组件库字体大小
有时候我们开发时使用到的组件库,可能样式不是符合我们的需求,我试着从谷歌调试工具获取组件的类,给他设置样式,如下我设置tabset的样式 .ant-tabs-nav .ant-tabs-tab { f ...
- 什么是swagger,一篇带你入门
一.前言 在前后端分离开发的过程中,前端和后端需要进行api对接进行交互,就需要一个api规范文档,方便前后端的交互,但api文档不能根据代码的变化发生实时动态的改变,这样后端修改了接口,前端不能及时 ...
- MQTT协议发布和订阅的实现,一步步带你实现发布订阅服务。
MQTT协议 MQTT协议是基于TCP传输协议之上的应用层协议,全程Message Queuing Telemetry Transport.主要用于物联网设备间的通信,在低带宽.不稳定网络环境下的优势 ...
- Python 类型检查与类型注解:mypy 与 typing 深度解析
Python 类型检查与类型注解:mypy 与 typing 深度解析 在 Python 动态类型语言中,mypy 和 typing 是两个提升代码健壮性的核心工具.它们通过静态类型检查与类型注解,帮 ...
- 基于Lighthouse搭建高颜值的YesPlayMusic网易云播放器
本文介绍了如何使用腾讯云的Lighthouse轻量应用服务器来搭建一个高颜值的第三方网易云播放器. 项目简介 本文使用的是YesPlayMusic项目,这是一款高颜值的第三方网易云播放器,它完全可以作 ...
- hashtable底层
一.单线程环境下 底层:hash表结构 (数组 + 链表) 使用无参构造创建对象时 会默认长度11的数组 加载因子0.75 Hashtable<Object, Object> hashta ...
- javaWeb基础之Tomcat
一.Tomcat:web服务器软件 1. 下载:http://tomcat.apache.org/ 2. 安装:解压压缩包即可. * 注意:安装目录建议不要有中文和空格 3. 卸载:删除目录就行了 4 ...
- 刷题——关于struts框架,下面那些说法是正确的?
关于struts框架,下面那些说法是正确的? Struts中无法完成上传功能 Struts框架基于MVC模式 Struts框架容易引起流程复杂.结构不清晰等问题 Struts可以有效地降低项目的类文件 ...
- 康谋分享 | 在基于场景的AD/ADAS验证过程中,识别挑战性场景!
基于场景的验证是AD/ADAS(自动驾驶和高级驾驶辅助)系统开发过程中的重要步骤,它包括对自动化系统进行一系列预定义场景的测试.测试中包含的场景越多,尤其挑战性场景越多,人们对正在测试的AD/ADAS ...
- python相关函数
1.pow()函数 pow()函数解释 pow(x,y):表示x的y次幂. >>> pow(2,4) 16 >>> pow(x,y,z):表示x的y次幂后除以z的余 ...