Kubernetes必备知识: CronJob

简介: CronJobs提供了在特定的时间或者间隔内处理业务逻辑的方法。一般创建一个Cronjob有两种方式,第一种是定义Java类,由Hybris生成脚本并加入数据库。第二种是直接编写groovy脚本语言并插入数据库,这种应该适合逻辑比较少的时候,比如只有一两句逻辑的时候,一般用得比较少。

所属技术领域:

kubernetes

|名词定义|

CronJobs提供了在特定的时间或者间隔内处理业务逻辑的方法。一般创建一个Cronjob有两种方式,第一种是定义Java类,由Hybris生成脚本并加入数据库。第二种是直接编写groovy脚本语言并插入数据库,这种应该适合逻辑比较少的时候,比如只有一两句逻辑的时候,一般用得比较少。

|技术特点|

 Cronjob 语法
图片.png
图片.png

CronJob可以叫定时运行 Job。CronJob 其实和 Job 大体是相似的,唯一的不同点就是它可以设计一个时间。

定时任务和 Job 相比会多几个不同的字段:

schedule:schedule 这个字段主要是设置时间格式,它的时间格式和 Linux 的 crontime 是一样的,所以直接根据 Linux 的 crontime 书写格式来书写就可以了。举个例子: */1 指每分钟去执行一下 Job,这个 Job 需要做的事情就是打印出大约时间,然后打印出“Hello from the kubernetes cluster” 这一句话;

startingDeadlineSeconds:即:每次运行 Job 的时候,它最长可以等多长时间,有时这个 Job 可能运行很长时间也不会启动。所以这时,如果超过较长时间的话,CronJob 就会停止这个 Job;

concurrencyPolicy:就是说是否允许并行运行。所谓的并行运行就是,比如说我每分钟执行一次,但是这个 Job 可能运行的时间特别长,假如两分钟才能运行成功,也就是第二个 Job 要到时间需要去运行的时候,上一个 Job 还没完成。如果这个 policy 设置为 true 的话,那么不管你前面的 Job 是否运行完成,每分钟都会去执行;如果是 false,它就会等上一个 Job 运行完成之后才会运行下一个;

JobsHistoryLimit:这个就是每一次 CronJob 运行完之后,它都会遗留上一个 Job 的运行历史、查看时间。当然这个额不能是无限的,所以需要设置一下历史存留数,一般可以设置默认 10 个或 100 个都可以,这主要取决于每个人集群不同,然后根据每个人的集群数来确定这个时间。

 CronJob的启动条件:

在k8s 1.8以及更高的版本中的环境中,API server要求的版本为apiVersion: batch/v1beta1,但是这个一般是默认的。当然了,对于之前的版本也可以利用--runtime-config=batch/v2alpha1=true来修改,然后重启API server服务。

运行过程:

我们利用官方的demo,其中下面是cronjob.yaml:

主要功能是:每分钟创建一个job,这个job的功能就是输出Hello World

apiVersion: batch/v1beta1
kind: CronJob
metadata:
name: test
spec:
schedule: "/1 *"
jobTemplate:

spec:
  template:
    spec:
      containers:
      - name: test
        image: docker.hobot.cc/library/centos:7.4
        args:
        - /bin/sh
        - -c
        - echo Hello World
      restartPolicy: OnFailure

创建cronJob:kubectl create -f cronjob.yaml
查看test pods的创建状态:kubectl get jobs --watch
删除CronJob:kubectl delete cronjob test
 Crontab的基本格式

<分钟><小时><日><月份><星期><命令>

分钟值从 0 到 59.
小时值从 0 到 23.
日值从 1 到 31.
月值从 1 到 12.
星期值从 0 到 6, 0 代表星期日
多个时间可以用逗号隔开,范围可以用连字符给出,*可以作为通配符。空格用来分开字段。

|资料来源|

名词定义:https://yq.aliyun.com/articles/616477?spm=a2c4e.11155472.0.0.3ac77816oPD7aV
技术特点:https://blog.csdn.net/hanlaipeng11/article/details/79623636

相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务&nbsp;ACK 容器服务&nbsp;Kubernetes&nbsp;版(简称&nbsp;ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情:&nbsp;https://www.aliyun.com/product/kubernetes
相关文章
|
6月前
|
存储 Kubernetes 负载均衡
【Kubernetes系统原理、核心资源、Pod原理与创建及生命周期管理、Job、Cronjob、Statefulset、Service负载均衡Ingress】
【Kubernetes系统原理、核心资源、Pod原理与创建及生命周期管理、Job、Cronjob、Statefulset、Service负载均衡Ingress】
356 2
|
4月前
|
资源调度 Kubernetes 调度
从 Linux Crontab 到 K8s CronJob,定时任务正在经历怎样的变革
从 Linux Crontab 到 K8s CronJob,定时任务正在经历怎样的变革
118697 59
|
9月前
|
Kubernetes Cloud Native Ubuntu
【探索 Kubernetes|作业管理篇 系列 16】离线业务 Job、CronJob
大家好,我是秋意零。 在上一篇中,我们讲解了 DaemonSet 控制器,相信你以及理解了其的工作过程,分为三部。一是,获取所有 Node 节点中的 Pod;二是,判断是否有符合 DaemonSet 管理的 Pod;三是,通过“亲和性”和“容忍”来精确控制并保证 Pod 在目标节点运行。 今天的内容是 Job 与 CronJob 离线业务控制器。
372 1
|
11月前
|
Kubernetes Linux 容器
【kubernetes】Cronjob: 定时任务
【kubernetes】Cronjob: 定时任务
458 0
|
消息中间件 Kubernetes API
Kubernetes: Job 和 CronJob 的实现原理
Kubernetes: Job 和 CronJob 的实现原理
1042 0
Kubernetes: Job 和 CronJob 的实现原理
|
Kubernetes Linux 调度
十、kubernetes Job和CronJob
kubernetes Job和CronJob
412 0
|
监控 容器
阿里云ack集群部署定时任务cronjob
阿里云ack集群部署定时任务cronjob
阿里云ack集群部署定时任务cronjob
|
canal Kubernetes 负载均衡
Kubernetes必备知识: 主流网络方案
常见的容器网络方案可以从协议栈层级、穿越形态、隔离方式这三种形式进行划分。 协议栈层级: 第一种:协议栈二层。 第二种:协议栈三层(纯路由转发)。 第三种:协议栈二层加三层。
1037 0
Kubernetes必备知识: 主流网络方案
|
Kubernetes 算法 容灾
Kubernetes必备知识: 调度流程
scheduler 是k8s master的一部分,作为插件存在于k8s生态体系。
865 0
Kubernetes必备知识: 调度流程
|
存储 Kubernetes Linux
Kubernetes必备知识: 容器接口CRI
每种容器运行时各有所长,许多用户都希望Kubernetes支持更多的运行时。在Kubernetes 1.5发布版里,我们引入了CRI–一个能让kubelet无需编译就可以支持多种容器运行时的插件接口。CRI包含了一组protocol buffers,gRPC API,相关的库,以及在活跃开发下的额外规范和工具。CRI目前是Alpha版本。 支持可替换的容器运行时在Kubernetes中概念中并非首次。在1.3发布版里,我们介绍了rktnetes项目,它可以让rkt容器引擎作为Docker容器运行时的一个备选。然而,不管是Docker还是Rkt都需要通过内部、不太稳定的接口直接集成到kubele
682 0
Kubernetes必备知识: 容器接口CRI

推荐镜像

更多