Kubernetes学习之Crontab控制器

部署k8s基础环境、配置内核模块、基本组件安装 K8S基本概念(功能、架构);部署k8s基础环境;配置内核模块;基本组件安装; 阅读详情

一、认识CronJob控制器
  CronJob控制器用于管理Job控制器资源的运行时间。Job控制器定义的作业任务在其控制器资源创建之后便会立即执行,但是CronJob可以以类似于Linux操作系统中的周期任务作业计划(crontab)的方式控制其运行的时间点及重复运行的方式,具体如下:
  1)在未来某个时间点运行作业一次
  2)在指定的时间点重复运行作业
  CronJob对象支持使用时间格式类似于CronJob,略微有不同的是,CronJob控制器在指定的时间点时,"?“和”*"的意义相同,都表示任何可用的有效值。
在这里插入图片描述

二、创建CronJob对象
  CronJob控制器的spec字段可嵌套使用以下字段:
  1)jobTemplate<Object>:Job控制器模板,用于为CronJob控制器生成Job对象;必选字段;
  2)schedule<string>:Cron格式的作业调度运行时间点;必须字段;
  3)concurrencyPolicy<string>:并发执行策略,可用的值有"Allow(允许)"、"Forbid(禁止)“和"Replace(替换)”,用于定义前一次作业运行尚未完成时是否以及如何运行后一次作业;
  4)failedJobHistoryLimit<integer>:为失败的任务执行保留的历史记录数,默认为1;
  5)successfulJobHistoryLimit<integer>:为成功的任务执行保留的历史记录数,默认为3;
  6)startingDeadlineSeconds<integer>:因各种原因缺乏执行作业的时间点所导致的启动作业错误的超时时长,会被记入错误历史记录;
  7)suspend<bollean>:是否挂起后续的任务执行,默认为false,对运行中的作业不会产生影响;

]# cat cronjob.yaml 
apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: crontab-example
  labels:
    app: mycronjob
spec:
  schedule: "*/2 * * * *"
  jobTemplate:
    metadata:
      labels:
        app: mycronjob-jobs
    spec:
      parallelism: 2
      template:
        spec:
          containers:
          - name: myjob
            image: alpine
            imagePullPolicy: IfNotPresent
            command: 
            - /bin/sh
            - -c 
            - date; echo Hello from the Kubernetes cluster; sleep 10
          restartPolicy: OnFailure

]# kubectl apply -f cronjob.yaml 
cronjob.batch/crontab-example created

2)查看CronJob控制器信息

]# kubectl get cronjob -o wide 
NAME              SCHEDULE      SUSPEND   ACTIVE   LAST SCHEDULE   AGE   CONTAINERS   IMAGES   SELECTOR
crontab-example   */2 * * * *   False     0        <none>          8s    myjob        alpine   <none>

命令结果的显示:
  SCHEDULE:是指其调度的时间点
  SUSPEND:表示后续任务是否处于挂起状态,即暂停任务的调度和运行
  ACTIVE:表示活动状态的Job对象的数量
  LAST SCHEDULE:表示上次调度运行至此刻的时长

]# kubectl get pods -o wide  -w 
NAME                               READY   STATUS      RESTARTS   AGE   IP            NODE    NOMINATED NODE   READINESS GATES
crontab-example-1597022880-bj7c8   0/1     Completed   0          71s   10.244.2.30   node2   <none>           <none>
crontab-example-1597022880-nvc4r   0/1     Completed   0          71s   10.244.1.73   node1   <none>           <none>

crontab-example-1597023000-rjfvw   0/1     Pending     0          0s    <none>        <none>   <none>           <none>
crontab-example-1597023000-g7r5q   0/1     Pending     0          0s    <none>        <none>   <none>           <none>
crontab-example-1597023000-rjfvw   0/1     Pending     0          0s    <none>        node2    <none>           <none>
crontab-example-1597023000-g7r5q   0/1     Pending     0          0s    <none>        node1    <none>           <none>
crontab-example-1597023000-g7r5q   0/1     ContainerCreating   0          0s    <none>        node1    <none>           <none>
crontab-example-1597023000-rjfvw   0/1     ContainerCreating   0          0s    <none>        node2    <none>           <none>
crontab-example-1597023000-g7r5q   1/1     Running             0          1s    10.244.1.74   node1    <none>           <none>
crontab-example-1597023000-rjfvw   1/1     Running             0          1s    10.244.2.31   node2    <none>           <none>
crontab-example-1597023000-rjfvw   0/1     Completed           0          11s   10.244.2.31   node2    <none>           <none>
crontab-example-1597023000-g7r5q   0/1     Completed           0          12s   10.244.1.74   node1    <none>           <none>


crontab-example-1597023120-r87rw   0/1     Pending             0          0s    <none>        <none>   <none>           <none>
crontab-example-1597023120-z9gbg   0/1     Pending             0          0s    <none>        <none>   <none>           <none>
crontab-example-1597023120-r87rw   0/1     Pending             0          0s    <none>        node2    <none>           <none>
crontab-example-1597023120-z9gbg   0/1     Pending             0          0s    <none>        node1    <none>           <none>
crontab-example-1597023120-r87rw   0/1     ContainerCreating   0          0s    <none>        node2    <none>           <none>
crontab-example-1597023120-z9gbg   0/1     ContainerCreating   0          0s    <none>        node1    <none>           <none>
crontab-example-1597023120-r87rw   1/1     Running             0          1s    10.244.2.32   node2    <none>           <none>
crontab-example-1597023120-z9gbg   1/1     Running             0          1s    10.244.1.75   node1    <none>           <none>
crontab-example-1597023120-r87rw   0/1     Completed           0          11s   10.244.2.32   node2    <none>           <none>
crontab-example-1597023120-z9gbg   0/1     Completed           0          11s   10.244.1.75   node1    <none>           <none>



]# kubectl get pods -o wide  -w 
NAME                               READY   STATUS      RESTARTS   AGE   IP            NODE    NOMINATED NODE   READINESS GATES
crontab-example-1597022880-bj7c8   0/1     Completed   0          71s   10.244.2.30   node2   <none>           <none>
crontab-example-1597022880-nvc4r   0/1     Completed   0          71s   10.244.1.73   node1   <none>           <none>

crontab-example-1597023000-rjfvw   0/1     Pending     0          0s    <none>        <none>   <none>           <none>
crontab-example-1597023000-g7r5q   0/1     Pending     0          0s    <none>        <none>   <none>           <none>
crontab-example-1597023000-rjfvw   0/1     Pending     0          0s    <none>        node2    <none>           <none>
crontab-example-1597023000-g7r5q   0/1     Pending     0          0s    <none>        node1    <none>           <none>
crontab-example-1597023000-g7r5q   0/1     ContainerCreating   0          0s    <none>        node1    <none>           <none>
crontab-example-1597023000-rjfvw   0/1     ContainerCreating   0          0s    <none>        node2    <none>           <none>
crontab-example-1597023000-g7r5q   1/1     Running             0          1s    10.244.1.74   node1    <none>           <none>
crontab-example-1597023000-rjfvw   1/1     Running             0          1s    10.244.2.31   node2    <none>           <none>
crontab-example-1597023000-rjfvw   0/1     Completed           0          11s   10.244.2.31   node2    <none>           <none>
crontab-example-1597023000-g7r5q   0/1     Completed           0          12s   10.244.1.74   node1    <none>           <none>


crontab-example-1597023120-r87rw   0/1     Pending             0          0s    <none>        <none>   <none>           <none>
crontab-example-1597023120-z9gbg   0/1     Pending             0          0s    <none>        <none>   <none>           <none>
crontab-example-1597023120-r87rw   0/1     Pending             0          0s    <none>        node2    <none>           <none>
crontab-example-1597023120-z9gbg   0/1     Pending             0          0s    <none>        node1    <none>           <none>
crontab-example-1597023120-r87rw   0/1     ContainerCreating   0          0s    <none>        node2    <none>           <none>
crontab-example-1597023120-z9gbg   0/1     ContainerCreating   0          0s    <none>        node1    <none>           <none>
crontab-example-1597023120-r87rw   1/1     Running             0          1s    10.244.2.32   node2    <none>           <none>
crontab-example-1597023120-z9gbg   1/1     Running             0          1s    10.244.1.75   node1    <none>           <none>
crontab-example-1597023120-r87rw   0/1     Completed           0          11s   10.244.2.32   node2    <none>           <none>
crontab-example-1597023120-z9gbg   0/1     Completed           0          11s   10.244.1.75   node1    <none>           <none>

从观察CronJob控制器与Pod可以看到每隔两分钟都会创建两个并发执行的Pod任务,呆任务完成结束之后便退出状态变成Completed(完成状态)

3)查看CronJob控制器详细信息

]# kubectl describe cronjob crontab-example
Name:                          crontab-example
Namespace:                     default
Labels:                        app=mycronjob
Annotations:                   Schedule:  */2 * * * *
Concurrency Policy:            Allow
Suspend:                       False
Successful Job History Limit:  3
Failed Job History Limit:      1
Starting Deadline Seconds:     <unset>
Selector:                      <unset>
Parallelism:                   2
Completions:                   <unset>
Pod Template:
  Labels:  <none>
  Containers:
   myjob:
    Image:      alpine
    Port:       <none>
    Host Port:  <none>
    Command:
      /bin/sh
      -c
      date; echo Hello from the Kubernetes cluster; sleep 10
    Environment:     <none>
    Mounts:          <none>
  Volumes:           <none>
Last Schedule Time:  Mon, 10 Aug 2020 09:36:00 +0800
Active Jobs:         crontab-example-1597023360
Events:
  Type    Reason            Age    From                Message
  ----    ------            ----   ----                -------
  Normal  SuccessfulCreate  8m9s   cronjob-controller  Created job crontab-example-1597022880
  Normal  SawCompletedJob   7m49s  cronjob-controller  Saw completed job: crontab-example-1597022880, status: Complete
  Normal  SuccessfulCreate  6m9s   cronjob-controller  Created job crontab-example-1597023000
  Normal  SawCompletedJob   5m49s  cronjob-controller  Saw completed job: crontab-example-1597023000, status: Complete
  Normal  SuccessfulCreate  4m9s   cronjob-controller  Created job crontab-example-1597023120
  Normal  SawCompletedJob   3m49s  cronjob-controller  Saw completed job: crontab-example-1597023120, status: Complete
  Normal  SuccessfulCreate  2m9s   cronjob-controller  Created job crontab-example-1597023240
  Normal  SawCompletedJob   109s   cronjob-controller  Saw completed job: crontab-example-1597023240, status: Complete
  Normal  SuccessfulDelete  109s   cronjob-controller  Deleted job crontab-example-1597022880
  Normal  SuccessfulCreate  9s     cronjob-controller  Created job crontab-example-1597023360

三、CronJob的控制机制
  CronJob控制器是一个更高级别的资源,它以Job控制器资源为其管控对象,并借助它管理Pod资源对象。可列出的Job对象的数量取决于CronJob资源的.spec.successfulJobsHistoryLimit的属性值,默认为3;
  在这里插入图片描述
  如果作业重复执行时指定的时间点接近,而作业执行时长(普遍或偶尔)跨过了其两次执行的时间长度,则会出现两个Job对象同时存在的情形。有些Job对象可能会存在无法或不能同时运行的情况,这个时候就要通过.spec.concurrencyPolicy属性控制作业并存的机制,其默认值为"Allow",即允许前后Job,甚至属于同一个CronJob的更多Job同时运行。其他两个可用值中,"Forbid"用于禁止前后两个Job同时运行,如果前一个尚未结束,后一个则不予启动(跳过),"Replace"用于让后一个Job取代前一个,即终止前一个启动后一个。

kubernetes之crontab k8s的学习之crontab 阅读详情

相关推荐

LTspice仿真实战:共模电感差模/共模插入损耗测试全流程(附WE 744821201参数)

本文以Würth Elektronik 744821201型号共模电感为例,详细介绍了在LTspice中搭建差模与共模插入损耗测试电路的全流程。通过从规格书提取关键参数、构建SPICE模型,到执行仿真并与官方数据对比,旨在帮助硬件工程师在PCB设计前期精准预测EMC性能,弥合器件选型与系统设计之间的鸿沟。

info6的博客 761

k8s之任务控制器

前言 略 作用 创建一个或多个Pod,确保指定数量的Pod可以成功的运行终止 跟踪Pod状态,根据配置及时重试失败的Pod 确定依赖关系,保证上一个任务运行完毕后,再运行下一个任务 控制任务并行度,并根据配置确保Pod队列大小 并行运行Job 点心 completions: 代表本pod队列执行次数 parallelism: 代表并行执行个数 restartPolicy: 重启策略 backoffLimit: 重启次数限制 示例 ]# cat > pi.yaml <<-EO

weixin_42715225的博客 622

CH341的I2C流模式(StreamI2C)到底怎么用?从EEPROM读写到自定义设备,一篇讲清参数配置逻辑

本文详细解析了CH341的I2C流模式(StreamI2C)的使用方法,从EEPROM读写到自定义设备的参数配置逻辑。通过深入分析I2C协议基础、StreamI2C参数映射关系及典型设备配置示例,帮助开发者快速掌握StreamI2C的应用技巧,解决实际开发中的常见问题。

weixin_30932215的博客 449

深入K8S Job(三):cronJob controller源码分析

k8s version: v1.11.0author: lbl167612@alibaba-inc.com 源码流程图 概述 cronJob controller 的实现比较简单,使用 Cron - Wikipedia 的方法,确定调度规则,底层的调度对象就是依赖了 job,它不会去检查任何 Pod。 该 controller 也没有...

weixin_33932129的博客 517

vue 获取el-table多选的选中行

<el-table :data='tableData' ref="multipleTable" v-loading='loading' border max-height='700' style='width: 100%' size="mini"> <el-table-column type="selection" width="55"></el-table-column> <el-table-column label

且听风吟的博客 6649

C#读取和写入excel表数据--手把手教详解

C#读写excel数据详解

如如水的博客 4055

k8s Job工作模式,Crontab

Job工作模式,Crontab

qq_27164239的博客 1083

Altium Designer系列: 软件系统参数配置保存

【Altium Designer实践】 软件系统参数配置保存 作者 CodeAllen ,转载请注明出处 目录设置中文菜单高亮模式设置文件关联pcb设置布线设置保存配置文件(复用) 设置中文菜单 DXP->Preferences 高亮模式设置 文件关联 pcb设置 布线设置 保存配置文件(复用) ......

CodeAllen嵌入式 2019

k8s 中crontabJob备份恢复etcd数据案例—— 筑梦之路

k8s使用kubeadm方式搭建。

筑梦之路 721

10|Git Diff 与增量代码识别:本次到底改了哪些代码?

本文介绍 Git Diff 和增量代码识别,帮助你理解精准测试如何先找到本次真正变化的代码。测试开发工程师。Java 后端开发工程师。质量平台 / DevOps 平台建设者。想了解精准测试落地方法的技术负责人。

专注 AI 精准测试平台实战落地,分享从代码 Diff 到回归决策的完整工程闭环。主张“先建数据链路,再上 AI 智能”,让测试从“靠经验”走向“基于风险”。 160

[QMT量化交易小白入门]-三十五、如何将聚宽策略信号转为QMT实盘交易

Flask是一个轻量级的Web应用框架,它提供了简单而灵活的方式来构建Web应用程序。在本案例中,将使用Flask来搭建一个本地服务,用于监听来自jq2qmt.py脚本的交易信号,并根据信号执行相应的下单操作。

木头大左的博客 2695

kubernetes的五种控制器

kubernetes的五种控制器k8s的控制器类型Deployment控制器Deployment概述Deployment的创建Deployment的更新Deployment的回滚Replicaset控制器Replicaset概述Replicaset工作原理Replicaset使用案例DaemonSet控制器DaemonSet 简介DaemonSet的主要特征Daemon Pods的调度特性DaemonSet常用场景创建一个DaemonSet对象Job控制器Job Controllerjob的使用CronJo

m0_46289146的博客 3014

【PCIe 总线及设备入门学习专栏 3.2.2 -- PCIe 中什么是 SR-IOV】

SR-IOV(Single Root I/O Virtualization)是 PCIe 规范中的一种技术,允许物理 PCIe 设备(称为 Physical Function, PF)虚拟化为多个虚拟设备(称为 Virtual Functions, VFs),使多个操作系统或虚拟机能够共享同一个物理设备。SR-IOV:一种 PCIe 虚拟化技术,允许将一个物理 PCIe 设备虚拟化为多个虚拟设备。:物理设备的主要管理接口。:PF 的轻量级副本,分配给虚拟机或操作系统。

CodingCos的博客 1513

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

job是执行完一次任务,就结束;cronjob控制器,是基于job控制器,定期频率性执行任务;等同于中的crontab一样;

weixin_61188041的博客 283

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Kubernetes 控制器Job与CronJob

Kubernetes提供了Job和CronJob两种资源来管理任务型工作负载。Job负责执行一次性任务(如数据处理、批处理计算),支持多种并行执行模式,提供失败重试和自动清理机制。CronJob在Job基础上添加定时调度功能(如数据备份、报告生成),支持灵活的并发策略和时区设置。最佳实践包括保障任务幂等性、设置合理资源限制、进行有效监控告警。选择依据是:一次性任务用Job,周期性任务用CronJob。两者可组合使用以满足复杂运维需求。

qq_33525062的博客 773

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

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

Kubernetes:控制器 - Job

Kubernetes:控制器 - Job

weixin_46619605的博客 1736

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

9.4.k8s的控制器资源(job控制器,cronjob控制器)

job控制器就是一次性任务的pod控制器,pod完成作业后不会重启,其重启策略是:Never; ​ cronjob控制器,是基于job控制器,定期频率性执行任务;与linux系统中的crontab一样;

qq_22321199的专栏 609

Kubernetes Operator 模式详解:用 CRD 与控制器把运维知识代码化

Operator 是由 CoreOS 提出并开源的一套 Kubernetes API 扩展模式,其本质是把运维人员对特定有状态应用(数据库、缓存、监控系统等)的运维知识编码为软件,通过自定义资源(CRD)与控制器(Controller)的结合,让 Kubernetes 自动完成应用的创建、配置、升级与故障恢复。本文将基于 kubernetes-handbook 仓库中 [develop/opera

gitblog_00464的博客 419

【赵渝强老师】周期性任务控制器CronJob

在K8s中,Job控制器管理的作业在控制器资源被创建之后便会立即执行,而CronJob控制器可用于管理和调度作业运行的时间,从而实现定时作业和周期作业的目的,这种控制器管理和调度作业的方式类似Linux的crontab命令。【赵渝强老师】周期性任务控制器CronJob。

赵渝强老师优快云博客主页 1113

# Kubernetes(K8s)笔记Day13 :工作负载资源概述与 Job (CronJob)控制器

工作负载资源适用场景核心特点Deployment无状态应用(如 Web 服务、API 网关)Pod 相互等价,可随时替换,支持滚动更新和回滚有状态应用(如数据库、消息队列)Pod 有固定身份和独立存储,启停有序DaemonSet节点级支撑服务(如日志采集、网络插件)每个节点上运行且仅运行一个 Pod 副本Job一次性任务(如数据迁移、批量计算)Pod 运行完成后自动退出,不再重启CronJob定时任务(如定期备份、定时报表)按照 Cron 表达式周期性地创建 Job核心概念。

weixin_46136019的博客 429

kubernetes-handbook 实战:使用自定义资源(CRD)扩展 Kubernetes API 与构建自定义控制器

自定义资源(Custom Resource)是 Kubernetes 对外提供的最重要扩展机制之一:它允许你在不修改 Kubernetes 官方源码的前提下,向集群 API 中注入新的对象类型,并用 `kubectl`、RBAC、watch、CRUD 等内建能力像管理原生对象一样管理它们。本文以 kubernetes-handbook 中 [使用自定义资源扩展 API](https://link.

gitblog_00733的博客 437

k8s---pod控制器

Pod 是 Kubernetes 集群中能够被创建和管理的最小部署单元。所以需要有工具去操作和管理它们的生命周期,这里就需要用到控制器了。Pod 控制器由 master 的 kube-controller-manager 组件提供,常见的此类控制器有 Replication Controller、ReplicaSet、Deployment、DaemonSet、StatefulSet、Job 和 CronJob 等,它们分别以不同的方式管理 Pod 资源对象。 pod控制器:工作负载,workload。用来

qq_51506982的博客 1204

kubernetes--Pod控制器详解

部署有状态应用(有实时的数据需要存储)每个Pod名称标识都是唯一且固定不变的每个Pod都可以有自己专属的持久化存储(基于PVC模板volumeClaimTemplates实现的)需要提前创建一个Headless Service资源(无头服务,ClusterIP可以为Node),并在StatefulSet资源清单配置中使用serviceName字段指定Headless Service资源名称。

2301_78106979的博客 803

Kubernetes CRD 完全指南:使用 CustomResourceDefinition 扩展 Kubernetes API

本文以 kubernetes-handbook 仓库中的 [CRD 教程](https://link.gitcode.com/i/a33f88fc2262e44e96085dc3b48f04b6) 为核心,系统讲解如何通过 CustomResourceDefinition(CRD)扩展 Kubernetes API:从创建 CRD 与自定义对象、删除清理,到 Finalizer 终结器、OpenA

gitblog_00302的博客 411

kubernetes资源控制器【五】之 CronJob 控制器

CronJob控制器用于管理Job控制器资源的运行时间。Job控制器定义的作业任务在其控制器资源创建之后便会立即执行,但CronJob可以以类似于Linux操作系统的周期性任务作业计划(crontab)的方式控制其运行的时间点及重复运行的方式

yuan_jiaoyoung的博客 965
上一篇: Kubernetes学习之Job控制器
下一篇: Kubernetes学习之Service
Micky_Yang
博客等级 码龄8年 58粉丝 143原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值