Kubernetes组件-CronJob(定时任务)
⒈简介:
Kubernetes的Job资源在创建时会立即运行pod。但是许多批处理任务需要在特定的时间运行,或者在指定的时间间隔内重复运行。在Linux和类UNIX操作系统中,这些任务通常被称为cron任务。Kubernetes也支持这种任务。
Kubernetes中的cron任务通过创建 CronJob资源进行配置。运行任务的时间表以知名的cron格式指定,所以如果你熟悉常规cron任务,你将在几秒钟内了解Kubernetes的CronJob。
在配置的时间,Kubernetes将根据在CronJob对象中配置的Job模板创建Job资源。创建Job资源时,将根据任务的pod模板创建并启动一个或多个pod副本。
⒉定义(创建)CronJob
apiVersion: batch/v1beta1 #指定当前描述文件遵循batch/v1beta1版本的KubernetesAPI
kind: CronJob #我们在描述一个CronJob
metadata:
name: batch-job-every-fifteen-minutes #指定CronJob的名称
spec: #当没有指定pod选择器时它将根据pod模板中的标签创建
schedule: "0,15,30,45 * * * *" #这项工作应该每天在每小时0、、30和45分钟运行
jobTemplate: #创建新pod所使用的pod模板
spec:
template: #此CronJob创建Job资源会用到的模板
metadata:
labels:
app: periodic-batch-job
spec:
restartPolicy: OnFailure #Job不能使用Always作为默认的重新启动策略
containers:
- name: main
image: fanqisoft/batch-job
ports:
- containerPort:
时间表从左到右包含以下五个条目:
·分钟
·小时
·每月中的第几天
·月
·星期几
在该示例中,每15分钟运行一次任务因此schedule字段的值应该是“0,15,30,45****”这意味着每小时的0、15、30和45分钟(第一个星号),每月的每一天(第二个星号),每月(第三个星号)和每周的每一天(第四个星号)。
相反,如果你希望每隔30分钟运行一次,但仅在每月的第一天运行,则应将计划设置为“0,30*1**”,并且如果你希望它每个星期天的3AM运行,将它设置为“03**0”(最后一个零代表星期天)。
⒊计划任务的运行方式
在计划的时间内,CronJob资源会创建Job资源,然后Job创建pod。
可能发生Job或pod创建并运行得相对较晚的情况。你可能对这项工作有很高的要求,任务开始不能落后于预定的时间过多。在这种情况下,可以通过指定CronJob规范中的startingDeadlineseconds字段来指定截止日期。
apiVersion: batch/v1beta1 #指定当前描述文件遵循batch/v1beta1版本的KubernetesAPI
kind: CronJob #我们在描述一个CronJob
metadata:
name: batch-job-every-fifteen-minutes #指定CronJob的名称
spec: #当没有指定pod选择器时它将根据pod模板中的标签创建
schedule: "0,15,30,45 * * * *" #这项工作应该每天在每小时0、、30和45分钟运行
startingDeadlineSeconds: #pod最迟必须在预定时间后15秒开始运行
jobTemplate: #创建新pod所使用的pod模板
spec:
template: #此CronJob创建Job资源会用到的模板
metadata:
labels:
app: periodic-batch-job
spec:
restartPolicy: OnFailure #Job不能使用Always作为默认的重新启动策略
containers:
- name: main
image: fanqisoft/batch-job
ports:
- containerPort:
在上面的例子中,工作运行的时间应该是10:30:00。如果因为任何原因10:30:15不启动,任务将不会运行,并将显示为Failed。
在正常情况下,CronJob总是为计划中配置的每个执行创建一个Job,但可能会同时创建两个Job,或者根本没有创建。为了解决第一个问题,你的任务应该是幂等的(多次而不是一次运行不会得到不希望的结果)。对于第二个问题,请确保下一个任务运行完成本应该由上一次的(错过的)运行完成的任何工作。
Kubernetes组件-CronJob(定时任务)的更多相关文章
- kubernetes组件
kubernetes组件 @(马克飞象)[k8s] 组件 kubernetes除了必备的dns和网络组件外,官方推出大量的cluster-monitoring,dashboard,fluentd-el ...
- 构建Docker平台【第三篇】安装 kubernetes 组件
第一步:准备 1. 安装包: kubeadm-1.6.0-0.alpha.0.2074.a092d8e0f95f52.x86_64.rpm kubernetes-cni-0.3.0.1-0.07a8a ...
- centos7下kubernetes(4.kubernetes组件)
Kubenetes cluster 由master和node组成 Master是kubenetes的大脑.运行着以下进程:kube-apiserver.kube-scheduler.kube-cont ...
- Kubernetes组件与架构
转载请标明出处: 文章首发于>https://www.fangzhipeng.com/kubernetes/2018/09/30/k8s-basic1/ 本文出自方志朋的博客 Kubernete ...
- Kubernetes【K8S】(一):Kubernetes组件
什么是Kubernetes Kubernetes 是一个可移植的.可扩展的开源平台,用于管理容器化的工作负载和服务,可促进声明式配置和自动化.Kubernetes拥有一个庞大且快速增长的生态系统. ...
- 使用 C# 开发 Kubernetes 组件,获取集群资源信息
写什么呢 前段时间使用 C# 写了个项目,使用 Kubernetes API Server,获取信息以及监控 Kubernetes 资源,然后结合 Neting 做 API 网关. 体验地址 http ...
- 使用kubernetes的cronjob定时备份mysql数据库
1.创建cronjob的文件 CronJob所描述的,正是定时任务. 在给定时间点只运行一次 在给定时间点周期性地运行 一个 CronJob 对象类似于 crontab (cron table)文件中 ...
- Kubernetes的CronJob对象
CronJob说白了就是用来管理Job对象的控制器, 通过jobTemplate管理Job对象,定时执行,最终实现我们的cron功能 示例 apiVersion: batch/v1beta1 kind ...
- Kubernetes组件-ReplicaSet
⒈简介 最初,ReplicationController是Kubernetes用于复制和在异常时重新调度节点的唯一组件,后来Kubernetes又引入了一个名为ReplicaSet的类似资源.它是新一 ...
随机推荐
- openstack 无法创建新虚拟机报错 openstack报错:Host is not mapped to any cell
关联错误提示:Host is not mapped to any cell 控制节点上执行: root@ubsv:/home/makeit# nova-manage cell_v2 discover_ ...
- Java实例化对象过程中的内存分配
Java实例化对象过程中的内存分配: https://blog.csdn.net/qq_36934826/article/details/82685791 问题引入这里先定义一个很不标准的“书”类,这 ...
- JAVA - IO - IO的类型(AIO, BIO, NIO)
IO的方式通常分为几种,同步阻塞的BIO.同步非阻塞的NIO.异步非阻塞的AIO. 一.BIO 在JDK1.4出来之前,我们建立网络连接的时候采用BIO模式,需要先在服务端启动一个ServerSock ...
- PyTricks-Differebt ways to test multiple flags at once in
x, y, z = 0, 1, 0 if x == 1 or y == 1 or z == 1: print('passed') if 1 in (x, y, z): print('passed') ...
- 源码编译vi过程中进行配置时报“checking if compile and link flags for Python are sane... no: PYTHON DISABLED”怎么办?
答: 需要安装python开发库(如果不安装这个库,那么在配置时执行./configure --enable-pythoninterp=yes将不会生效,以至于vi的python特性并没有被开启) 如 ...
- linux挂载iscsi出现的问题
挂载的时候我们可以使用永久挂载但是这里我们就需要注意了正常的永久挂载可能会导致系统起不来因为这里我们使用的是服务端的硬盘为网络设备而开机的读取中 会先读取/etc/fstab下的内容 之后再读取网络的 ...
- uni-app 使用 iconfont 图标 自定义图标
uni-app 的uni-ui 的 Icon 图标组件,裡面的图标只是移动端常见的图标,对于一些其他需求所要显示的图标,这个是完全不够用.那么怎么办?模仿它的组件,用阿里巴巴图标矢量库的图标,自己定义 ...
- java+断点续传
在Web应用系统开发中,文件上传和下载功能是非常常用的功能,今天来讲一下JavaWeb中的文件上传和下载功能的实现. 先说下要求: PC端全平台支持,要求支持Windows,Mac,Linux 支持所 ...
- SqlDbx连接oracle(可用)
解压SqlDbx.zip,将SqlDbx放到C:盘根目录 1.Path里面增加:C:\SqlDbx Path是为了找tnsnames.ora 2.增加系统变量:ORACLE_HOME,路径:C:\S ...
- STM32第二章I/O端口应用
STM32F10xxx系列中,有7个I/O端口,每个端口有两个32位配置寄存器(GPIOx_CRL,GPIOx_CRH),两个32位数据寄存器(GPIOx_IDR和GPIOx_ODR),一个32位置位 ...