Kubernetes --(k8s)Job、CronJob
Job
https://www.kubernetes.org.cn/job
https://www.kubernetes.org.cn/cronjob
Job负责批量处理短暂的一次性任务 (short lived one-off tasks),即仅执行一次的任务,它保证批处理任务的一个或多个Pod成功结束.
Kubernetes支持以下几种Job:
- 非并行Job:通常创建一个Pod直至其成功结束
- 固定结束次数的Job:设置.spec.completions,创建多个Pod,直到.spec.completions个Pod成功结束
- 带有工作队列的并行Job:设置.spec.Parallelism但不设置.spec.completions,当所有Pod结束并且至少一个成功时,Job就认为是成功
- 根据.spec.completions和.spec.Parallelism的设置,可以将Job划分为以下几种pattern:
| Job类型 | 使用示例 | 行为 | completions | Parallelism |
|---|---|---|---|---|
| 一次性Job | 数据库迁移 | 创建一个Pod直至其成功结束 | 1 | 1 |
| 固定结束次数的Job | 处理工作队列的Pod | 依次创建一个Pod运行直至completions个成功结束 | 2+ | 1 |
| 固定结束次数的并行Job | 多个Pod同时处理工作队列 | 依次创建多个Pod运行直至completions个成功结束 | 2+ | 2+ |
| 并行Job | 多个Pod同时处理工作队列 | 创建一个或多个Pod直至有一个成功结束 | 1 | 2+ |
实验1:一次性Job
第一步:编写job的yml文件
apiVersion: batch/v1
kind: Job
metadata:
name: job
spec:
template:
spec:
restartPolicy: Never
containers:
- name: job
image: busybox
command: ["echooo","Hello World"]
第二步:执行yml文件
╭─root@node1 ~
╰─➤ kubectl apply -f job.yml
job.batch/job created
第三步:查看pod
╭─root@node1 ~
╰─➤ kubectl get pod
NAME READY STATUS RESTARTS AGE
job-jhlsf 0/1 ContainerCannotRun 0 53s
job-ldxnr 0/1 ContainerCannotRun 0 23s
job-m6cpf 0/1 ContainerCreating 0 3s
job-m8skh 0/1 ContainerCannotRun 0 64s
问题发现:创建了很多pod,为什么?
解答:Job Controller负责根据Job Spec创建Pod,并持续监控Pod的状态,直至其成功结束。如果失败,则根据restartPolicy(只支持OnFailure和Never,不支持Always)决定是否创建新的Pod再次重试任务。如果重启策略为OnFailure的话,pod会一直重启!
实验2:固定结束次数的并行Job
第一步:编写yml文件
apiVersion: batch/v1
kind: Job
metadata:
name: job
spec:
completions: 2 # 完成数
parallelism: 2 # 并行数
template:
spec:
restartPolicy: OnFailure
containers:
- name: job
image: busybox
command: ["/bin/sh","-c","sleep 5;echo Hello World"]
第二步:运行
╭─root@node1 ~
╰─➤ kubectl apply -f job.yml
job.batch/job created
第三步:查看
╭─root@node1 ~
╰─➤ kubectl get pod
NAME READY STATUS RESTARTS AGE
job-x5tfw 1/1 Running 0 35s
job-zx8p2 0/1 Completed 0 35s
╭─root@node1 ~
╰─➤ kubectl logs job-x5tfw
Hello World
╭─root@node1 ~
╰─➤ kubectl logs job-zx8p2
Hello World
CronJob
CronJob即定时任务,就类似于Linux系统的crontab,在指定的时间周期运行指定的任务。
实验:
第一步:编写yml文件
apiVersion: batch/v1beta1
kind: CronJob
metadata:
name: cronjob1
spec:
schedule: "* * * * *"
jobTemplate:
metadata:
name: job
spec:
template:
metadata:
name: pod
spec:
restartPolicy: OnFailure
containers:
- name: busybox
image: busybox
command: ["echo","hello"]
imagePullPolicy: IfNotPresent
第二步:运行
╭─root@node1 ~
╰─➤ kubectl apply -f cronjob.yml
cronjob.batch/cronjob1 created
第三步: 查看
╭─root@node1 ~
╰─➤ kubectl get pod
NAME READY STATUS RESTARTS AGE
cronjob1-1567149060-vjqtp 0/1 Completed 0 43s
╭─root@node1 ~
╰─➤ kubectl logs cronjob1-1567149060-vjqtp
hello

Kubernetes --(k8s)Job、CronJob的更多相关文章
- Docker集群编排工具之Kubernetes(K8s)介绍、安装及使用
K8s基础原理 k8s中文社区:https://www.kubernetes.org.cn/ 简介 Kubernetes与较早的集群管理系统Mesos和YARN相比,对容器尤其是 Docker的支持更 ...
- Kubernetes(k8s)入门、单机版安装、kuberctl指令、k8s服务实例
1.切换root .关闭centos自带的防火墙 # systemctl disable firewalld # systemctl stop firewalld .安装etcd和kubernetes ...
- Kubernetes --(k8s)入门
k8s 简介: 什么是k8s? Kubernetes (k8s)是Google开源的容器集群管理系统(谷歌内部:Borg).在Docker技术基础上,为容器化的应用提供部署运行.资源调度.服务发现和动 ...
- Kubernetes(K8s)基础概念 —— 凿壁偷光
Kubernetes(K8s)基础概念 -- 凿壁偷光 K8s是什么:全称 kubernetes (k12345678s) 作用:用于自动部署,扩展和管理"容器化应用程序"的 ...
- kubernetes(K8S)快速安装与配置集群搭建图文教程
kubernetes(K8S)快速安装与配置集群搭建图文教程 作者: admin 分类: K8S 发布时间: 2018-09-16 12:20 Kubernetes是什么? 首先,它是一个全新的基于容 ...
- 使用国内的镜像源搭建 kubernetes(k8s)集群
1. 概述 老话说的好:努力学习,提高自己,让自己知道的比别人多,了解的别人多. 言归正传,之前我们聊了 Docker,随着业务的不断扩大,Docker 容器不断增多,物理机也不断增多,此时我们会发现 ...
- Kubernetes(K8s)极速入门
1. 概述 老话说的好:努力学习,努力提高,做一个有真才实学的人. 言归正传,之前我们聊了 如何使用国内的镜像源搭建 kubernetes(k8s)集群 ,今天我们来聊聊如何在 kubernetes( ...
- Kubernetes(K8s)部署 SpringCloud 服务实战
1. 概述 老话说的好:有可能性就不要放弃,要敢于尝试. 言归正传,之前我们聊了一下如何在 Kubernetes(K8s)中部署容器,今天我们来聊一下如何将 SpringCloud 的服务部署到 Ku ...
- 使用 Skywalking 对 Kubernetes(K8s)中的微服务进行监控
1. 概述 老话说的好:任何成功都不是轻易得来的,是不断地坚持与面对的结果. 言归正传,之前我们聊了 SpringCloud 开发的微服务是如何部署在 Kubernetes(K8s)集群中的,今天我 ...
随机推荐
- 加薪攻略之UI组件库实践—storybook
目录 加薪攻略之UI组件库实践-storybook 一.业务背景 二.选用方案 三.引入分析 项目结构 项目效果 四.实现步骤 1.添加依赖 2.添加npm执行脚本 3.添加配置文件 4.添加必要的w ...
- hive 将hive表数据查询出来转为json对象和json数组输出
一.将hive表数据查询出来转为json对象输出 1.将查询出来的数据转为一行一行,并指定分割符的数据 2.使用UDF函数,将每一行数据作为string传入UDF函数中转换为json再返回 1.准备数 ...
- case when then else end用法
case具有两种格式,简单case函数和case搜索函数 case函数只返回第一个符合条件的值,剩下的case部分将会被自动忽略 1.简单函数 CASE sex WHEN '1 ...
- flume集成hdfs(hdfs开启kerberos认证)
)当 sink 到 hdfs 时: ) 需修改 flume-env.sh 配置,增添 hdfs 依赖库: FLUME_CLASSPATH="/root/TDH-Client/hadoop/h ...
- shell脚本学习之6小时搞定(1)
shell脚本学习之6小时搞定(1) 简介 Shell是一种脚本语言,那么,就必须有解释器来执行这些脚本. Unix/Linux上常见的Shell脚本解释器有bash.sh.csh.ksh等,习惯上把 ...
- introJs用法及在webkit内核浏览器的一个报错
1.用法 很简单的用法,引入js,引入css,再执行introJs().start();就可以了(备注:introJs会自动去抓取含有data-intro的dom在introJs源码中_introFo ...
- 电脑加载有文件的CD、DVD驱动器图标修改
CD的图标有一定限制,不知道你说的是有盘状态还是默认的状态.插入光盘状态:用autorun.inf格式:[autorun]open=Install.exe 点击光盘时的起动程序icon=Autorun ...
- Linux LVM Logical Volume Management 逻辑卷的管理
博主是一个数据库DBA,但是一般来说,是不做linux服务器LVM 逻辑卷的创建.扩容和减容操作的,基本上有系统管理员操作,一是各司其职,专业的事专业的人做,二是做多了你的责任也多了,哈哈! 但是li ...
- Lesson_strange_words5
certain 一些 the company's 公司的 implement 实现 plane 平面 sluggishly 迟缓地,缓慢地 frustrated 懊恼的 profiler 分析器,分析 ...
- Salesforce 大数据量处理篇(二)Index
本篇参考: https://developer.salesforce.com/docs/atlas.en-us.202.0.salesforce_large_data_volumes_bp.meta/ ...