当前位置: 首页 > news >正文

K8S中Pod控制器之CronJob(CJ)控制器

CronJob 控制器是 Kubernetes 中用于周期性执行任务的一种控制器,它基于 Job 控制器来创建和管理作业。以下是 CronJob 的一些关键特点:

  • 周期性调度CronJob 允许您定义一个基于时间的调度,类似于 Linux 的 cron 工具,来周期性地执行任务。

  • 时间点触发CronJob 根据指定的时间表(cron 表达式)触发,可以精确到分钟。

  • 一次性或重复执行:尽管 CronJob 主要用于重复性任务,但它也可以配置为仅执行一次。

  • 立即执行:如果需要,可以在创建 CronJob 之后立即启动第一个作业。

  • 并行性控制:可以设置 CronJob 的并行性策略,决定是否允许多个 Job 实例并行运行,或者在新实例启动前完成上一个实例。

  • 成功和失败处理CronJob 可以配置成功和失败的工作节(job history limit)限制,以控制保留成功和失败的 Job 记录的数量。

  • 暂停和恢复CronJob 支持暂停和恢复功能,允许您临时停止或恢复周期性任务的执行。

  • 时区处理CronJob 允许您指定时区,以确保任务在特定地理区域的特定时间执行。

  • 灵活的 cron 表达式:支持复杂的 cron 表达式,以满足不同的时间调度需求。

CronJob的资源清单

---
apiVersion: batch/v1beta1 # 版本号
kind: CronJob # 类型
metadata: # 元数据name: # rs名称namespace: # 所属命名空间labels: # 标签controller: cronjob
spec: # 详情描述schedule: # cron格式的作业调度运行时间点,用于控制任务在什么时间执行concurrencyPolicy: # 并发执行策略,用于定义前一次作业运行尚未完成时是否以及如何运行后一次的作业failedJobHistoryLimit: # 为失败的任务执行保留的历史记录数,默认为1successfulJobHistoryLimit: # 为成功的任务执行保留的历史记录数,默认为3startingDeadlineSeconds: # 启动作业错误的超时时长jobTemplate: # job控制器模板,用于为cronjob控制器生成job对象;下面其实就是job的定义spec:completions: 1parallelism: 1activeDeadlineSeconds: 30backoffLimit: 6manualSelector: truetemplate:metadata:labels:app: counter-podspec:restartPolicy: Nevercontainers:- name: counterimage: busybox:1.30command: ["bin/sh", "-c", "for i in 9 8 7 6 5 4 3 2 1; do echo $i; sleep 20; done"]

schedule

schedule 是一个 cron 表达式,用于定义 CronJob 的执行计划。cron 表达式由五个字段组成,分别表示分钟、小时、日期(一个月中的哪一天)、月份和星期几。每个字段可以包含以下几种类型的值:

  • 具体值:例如 115

  • 逗号分隔的多个值:例如 1,15 表示第 1 分钟和第 15 分钟。

  • 范围:使用连字符 - 表示,例如 1-3 表示从第 1 分钟到第 3 分钟。

  • 通配符:使用星号 * 表示匹配任意值。

  • 步长:使用斜杠 / 表示,例如 */15 表示从 0 开始每 15 分钟。

cron 表达式的字段含义如下:

  • 分钟:0 到 59

  • 小时:0 到 23

  • 日期:1 到 31

  • 月份:1 到 12 或 JAN 到 DEC

  • 星期:0 到 6(0 表示星期天)或 SUN 到 SAT

 测试:

---
apiVersion: batch/v1
kind: CronJob
metadata:name: pc-cronjobnamespace: test
spec:schedule: "*/1 * * * *"jobTemplate:spec:template:spec:restartPolicy: Nevercontainers:- name: counterimage: busybox:1.30command: ["bin/sh", "-c", "for i in 9 8 7 6 5 4 3 2 1; do echo $i; sleep 3; done"]
  • 查看cronjob:

cronjob每分钟执行一次,当job执行时会启动一个pod,pod启动完成job结束当前任务

[root@k8s-master ~]# kubectl get cronjob -n test -w 
NAME         SCHEDULE      SUSPEND   ACTIVE   LAST SCHEDULE   AGE
pc-cronjob   */1 * * * *   False     0        <none>          0s
pc-cronjob   */1 * * * *   False     1        0s              38s
kubectl get job -n test -w
pc-cronjob   */1 * * * *   False     0        30s             68s
pc-cronjob   */1 * * * *   False     1        0s              98s
pc-cronjob   */1 * * * *   False     0        30s             2m8s
  • 查看job:
[root@k8s-master ~]# kubectl get job -n test -wNAME                  COMPLETIONS   DURATION   AGE
pc-cronjob-28956119   0/1           20s        20s
pc-cronjob-28956119   1/1           30s        30s
pc-cronjob-28956120   0/1                      0s
pc-cronjob-28956120   0/1           0s         0s
pc-cronjob-28956120   1/1           30s        30s
  • 查看pod:

可以看的pod创建之后,会结束当前任务,等待一分钟之后再次启动pod

^C[root@k8s-master ~]# kubectl get pods -n test -w
NAME                 READY   STATUS    RESTARTS   AGE
pc-daemonset-9vwvd   1/1     Running   0          52m
pc-daemonset-drdt5   1/1     Running   0          52m
pc-cronjob-28956119-n7cxf   0/1     Pending   0          0s
pc-cronjob-28956119-n7cxf   0/1     Pending   0          0s
pc-cronjob-28956119-n7cxf   0/1     ContainerCreating   0          0s
pc-cronjob-28956119-n7cxf   0/1     ContainerCreating   0          2s
pc-cronjob-28956119-n7cxf   1/1     Running             0          2s
pc-cronjob-28956119-n7cxf   0/1     Completed           0          30s
pc-cronjob-28956119-n7cxf   0/1     Completed           0          30s
pc-cronjob-28956120-4q5sv   0/1     Pending             0          0s
pc-cronjob-28956120-4q5sv   0/1     Pending             0          0s
pc-cronjob-28956120-4q5sv   0/1     ContainerCreating   0          0s
pc-cronjob-28956120-4q5sv   0/1     ContainerCreating   0          1s
pc-cronjob-28956120-4q5sv   1/1     Running             0          2s
pc-cronjob-28956120-4q5sv   0/1     Completed           0          30s
pc-cronjob-28956120-4q5sv   0/1     Completed           0          30s

相关文章:

K8S中Pod控制器之CronJob(CJ)控制器

CronJob 控制器是 Kubernetes 中用于周期性执行任务的一种控制器&#xff0c;它基于 Job 控制器来创建和管理作业。以下是 CronJob 的一些关键特点&#xff1a; 周期性调度&#xff1a;CronJob 允许您定义一个基于时间的调度&#xff0c;类似于 Linux 的 cron 工具&#xff0c;…...

FRP内网穿透0.61.1新版教程

在上一篇zerotier讲述了如何实现虚拟局域网搭建&#xff0c;这篇会讲述FRP内网穿透的使用教程 那么frp与zerotier的区别是什么呢&#xff1f;&#xff08;说人话&#xff09; FRP 主要用于内网服务向外网的单向暴露。 ZeroTier 用于构建一个虚拟的私有网络&#xff0c;实现多点…...

亲测解决`data_array` is not of type `MetaTensor, assuming affine to be identity

这个问题是由于orientation的数据增强在scaling之后导致的,解决方法是将这两个数据增强的顺序调换。 问题原文 lib/python3.10/site-packages/monai/transforms/spatial/array.py:623: UserWarning: `data_array` is...

python+pygame+pytmx+map editor开发一个tiled游戏demo 05使用object层初始化player位置

代码 import mathimport pygame# 限制物体在屏幕内 import pytmxdef limit_position_to_screen(x, y, width, height):"""限制物体在屏幕内"""x max(0, min(x, SCREEN_WIDTH - width)) # 限制x坐标y max(0, min(y, SCREEN_HEIGHT - height))…...

Git实用指南:忽略文件、命令别名、版本控制、撤销修改与标签管理

目录 1.忽略特殊文件 1.1.那如何配置我们需要忽略的文件的呢&#xff1f; 1.2.如何检验效果&#xff1f; 2.给命令配置别名 3.基本操作之版本回退 3.1.使用场景&#xff1a; 3.2.使用方法&#xff1a; 4.撤销修改 情况一&#xff1a;对于工作区的代码&#xff0c;还没…...

wordpress安装完后台无格式解决方法(样式加载不出来)

刚安装的wordpress,进入后台后,没有样式。 1.如果ip进入,可能一切正常 2.域名进入,遇到这种情况概率大(经过了nginx代理) 正常访问文章的话是没问题的,只是管理后台存在这样的代码,样式没加载出来。 美国随机地址生成器:美国随机地址生成器(随机地址生成器 - 生成全…...

数据库管理-第285期 Oracle 23ai:深入浅出向量索引(20250117)

数据库管理285期 20245-01-17 数据库管理-第285期 Oracle 23ai&#xff1a;深入浅出向量索引&#xff08;20250117&#xff09;1 HNSW事务支持解读 2 IVF分区支持解读 3 混合向量索引何时选择混合向量索引为何选择混合向量索引 总结 数据库管理-第285期 Oracle 23ai&#xff1a…...

日志(elk stack)基础语法学习,零基础学习

ELK Stack 是一组开源的日志管理工具&#xff0c;包括 Elasticsearch、Logstash 和 Kibana。Elasticsearch 用于存储和搜索日志数据&#xff0c;Logstash 用于收集和处理日志数据&#xff0c;而 Kibana 提供了一个强大的可视化界面来分析和监控这些数据。以下是 ELK Stack 的基…...

Mysql InnoDB B+Tree是什么?

“mysql中常用的数据库搜索引擎InnoDB,其索引通过BTree的方式进行构建。” 实在想不起来BTree是怎么一回事了。以点带线&#xff0c;将涉及到的数据结构一起复习一下。 文章目录 数据结构定义红黑树定义使命 BTree定义使命 BTree定义 InnoDB BTree 旋转与调整二叉排序树插入删…...

Java基础(二)

提示:这部分内容对逆向重要,需重点掌握。 1.常见数据类型 1.1 List系列 类似于Python中的列表 List是一个接口,接口下面有两个常见的类型(目的是可以存放动态的多个数据) ArrayList,连续的内存地址存储(内部自动扩容) -> Python列表的特点LinkedList,底层基于链表…...

【网络协议】【http】【https】TLS1.3

【网络协议】【http】【https】TLS1.3 TLS1.3它的签名算法和密钥交换算法&#xff0c;默认情况下是被固定了下来的&#xff0c;他的加密套件里面呢&#xff0c;只包含了对称加密算法和摘要算法 客户端和服务器第一次连接 仍然需要1RTT &#xff0c;不能0-RTT 第一次连接 1.客…...

K8S中Pod控制器之Job控制器

Job&#xff0c;主要用于负责批量处理(一次要处理指定数量任务)短暂的一次性(每个任务仅运行一次就结束)任务。 一次性任务&#xff1a;Job 用于运行那些只需要执行一次的任务&#xff0c;如数据分析、图像渲染或批量处理。 成功终止&#xff1a;Job 会跟踪其创建的 Pod 的成功…...

macOS安装Gradle环境

文章目录 说明安装JDK安装Gradle 说明 gradle8.5最高支持jdk21&#xff0c;如果使用jdk22建议使用gradle8.8以上版本 安装JDK mac系统安装最新&#xff08;截止2024.9.13&#xff09;Oracle JDK操作记录 安装Gradle 下载Gradle&#xff0c;解压将其存放到资源java/env目录…...

2024年美赛C题评委文章及O奖论文解读 | AI工具如何影响数学建模?从评委和O奖论文出发-O奖论文做对了什么?

模型假设仅仅是简单陈述吗&#xff1f;允许AI的使用是否降低了比赛难度&#xff1f;还在依赖机器学习的模型吗&#xff1f;处理题目的方法有哪些&#xff1f;O奖论文的优点在哪里&#xff1f; 本文调研了当年赛题的评委文章和O奖论文&#xff0c;这些问题都会在文章中一一解答…...

LDD3学习9--数据类型和定时器

这部分对应的是第七章和第十一章&#xff0c;因为内容也不是很多&#xff0c;就一起写了。里面的内容基本上就是一个个的点&#xff0c;所以也就一个个点简单总结一下。 1 数据类型 1.1 数据长度 不同操作系统类型长度可能不一样&#xff0c;看图的话最好用u8&#xff0c;u16&…...

一文夯实垃圾收集的理论基础

如何判断一个引用是否存活 引用计数法 给对象中添加一个引用计数器&#xff0c;每当有一个地方引用它&#xff0c;计数器就加 1&#xff1b;当引用失效&#xff0c;计数器就减 1&#xff1b;任何时候计数器为 0 的对象就是不可能再被使用的。 优点&#xff1a;可即刻回收垃圾&a…...

OpenWRT Conserver 共享串口服务实现

安装驱动 查看当前可在线安装的USB驱动 opkg update 查看安装的USB驱动 opkg list-installed *usb-serial* 查看所有的USB串口驱动 opkg list *usb-serial* 确认console线的芯片厂商 kmod-usb-serial-pl2303 - 5.15.167-1 - Kernel support for Prolific PL2303 USB-to…...

第12章:Python TDD完善货币加法运算(一)

写在前面 这本书是我们老板推荐过的&#xff0c;我在《价值心法》的推荐书单里也看到了它。用了一段时间 Cursor 软件后&#xff0c;我突然思考&#xff0c;对于测试开发工程师来说&#xff0c;什么才更有价值呢&#xff1f;如何让 AI 工具更好地辅助自己写代码&#xff0c;或许…...

Springboot项目Jackson支持多种接收多种时间格式

前言 在springboot项目中经常会使用Jackson框架,当前端给后端传输时间类型时,我们一般需要先配置好时间格式,否则后端无法接收。以下是一些配置方法 统一配置 spring:jackson:time-zone: GMT+8date-format: yyyy-MM-dd HH:mm:ss这种配置就是要求前端统一传输的格式是yyyy-…...

两台电脑互PING不通的解决办法

当两台电脑无法通过网络Ping通时&#xff0c;可以按照以下步骤进行排查和解决&#xff1a; 一. 检查网络连接 确保两台电脑连接到同一个局域网。 如果是通过网线连接&#xff0c;检查网线是否松动或损坏。 如果是无线连接&#xff0c;确保Wi-Fi信号正常。 二. 检查IP配置 确…...

蓝桥杯单片机各模块化代码

138译码器相关&#xff0c;基础模块的必要工具//HC138端口选择 //通过前三位按位与&#xff0c;其他位数按位或的原理 //省去了部分HC138选端口的代码 //最好分开写 void InitHC138(unsigned char n) {switch(n){case 4:P2P2&0x1f; P2P2|0x80; …...

终极免费内容解锁工具:简单三步绕过所有付费墙限制

终极免费内容解锁工具&#xff1a;简单三步绕过所有付费墙限制 在数字化信息时代&#xff0c;你是否经常遇到这样的情况&#xff1a;一篇深度分析文章正看到关键处&#xff0c;突然弹出付费订阅提示&#xff1f;一个技术教程刚进入核心步骤&#xff0c;却被付费墙完全阻挡&…...

Flowise AI工作流安全通关手册:从零基础入门到攻防专家,全链路守住你的AI核心资产

2026年4月&#xff0c;全球AI圈与网络安全界同步爆发了一场震动行业的大规模攻击事件&#xff1a;黑客利用开源AI工作流编排平台Flowise的CVE-2025-59528满分高危漏洞&#xff0c;对全球公网暴露的上万个AI工作流实例发起无差别攻击。短短一周内&#xff0c;数千个企业与开发者…...

Linux平台哔哩哔哩客户端终极指南:开源移植与完整功能体验

Linux平台哔哩哔哩客户端终极指南&#xff1a;开源移植与完整功能体验 【免费下载链接】bilibili-linux 基于哔哩哔哩官方客户端移植的Linux版本 支持漫游 项目地址: https://gitcode.com/gh_mirrors/bi/bilibili-linux 想在Linux系统上获得与Windows/macOS相同的哔哩哔…...

Pi0具身智能v1在仓储物流中的应用:一套代码实现自动分拣

Pi0具身智能v1在仓储物流中的应用&#xff1a;一套代码实现自动分拣 1. 物流分拣的现状与挑战 走进任何一家现代物流仓库&#xff0c;你都会看到相似的场景&#xff1a;传送带上的包裹川流不息&#xff0c;工人们快速分拣着各种形状和大小的物品。这种传统分拣方式虽然成熟&a…...

Zephyr SMF轻量状态机实战与嵌入式开发优化

1. 项目概述"Zephyr SMF实战&#xff1a;几百行代码实现轻量状态机&#xff01;"这个标题立刻让我想起了在嵌入式开发中经常遇到的状态管理难题。作为一名在RTOS领域摸爬滚打多年的开发者&#xff0c;我深知状态机在嵌入式系统中的重要性——它就像交通信号灯控制系统…...

mPLUG部署避坑指南:缓存机制加速,第二次提问秒出结果

mPLUG部署避坑指南&#xff1a;缓存机制加速&#xff0c;第二次提问秒出结果 你是否遇到过这样的场景&#xff1a;部署一个AI模型&#xff0c;第一次运行还算顺利&#xff0c;但每次重启服务或再次调用时&#xff0c;又要经历漫长的模型加载等待&#xff1f;尤其是在处理图片分…...

华为OD机试真题 新系统2026-04-01 C++实现【空间占用计算】

目录 题目 思路 Code 题目 员工A的磁盘空间经常被耗尽,他需要找到占用空间最大的目录或文件,然后决定如何清理文件释放空间。给定某一目录,请编写程序帮助他统计该目录内一级子目录和文件的占用空间,并返回目标目录一级子项(文件或子目录)中占用空间最大的项。 规则说明…...

Java应用秒级启动不是梦:GraalVM静态镜像内存优化4阶段接入法(含Spring Boot 3.2+自动配置模板)

第一章&#xff1a;Java应用秒级启动不是梦&#xff1a;GraalVM静态镜像内存优化4阶段接入法&#xff08;含Spring Boot 3.2自动配置模板&#xff09;为什么传统JVM启动无法突破1秒瓶颈&#xff1f; JVM预热、类加载、JIT编译及GC初始化共同构成启动延迟主因。Spring Boot 3.2 …...

鸡翅Club项目学习文档 - 第一部分

## 学习进度- [x] 第一部分&#xff1a;项目整体架构与核心概念 - [ ] 第二部分&#xff1a;设计模式详解 - [ ] 第三部分&#xff1a;代码实战演练---## 一、项目概述### 1.1 项目定位| 项目名称 | 鸡翅Club刷题系统 | |----------|------------------| | 英文名 | jc-club&am…...