kubernets之job资源
一 介绍job资源
1.1 前面介绍的RC,RS,DS等等,管控的pod都是需要长期持久的运行的应用,但是尝试考虑另外一种场景,在微服务的场景下,有些pod的作用就是需要
执行完一些命令之后正常退出,这时候上面的资源都无法利用,kubernets提供了一种解决方案,job,job的作用就是保障管理的pod能够在集群的节点上正
常运行,当出现异常的时候(异常退出或者节点被下线的情况的时候),需要将任务进行重新调度至集群其他节点。
二 定义job资源
2.1 一个简单的job资源的定义yml文件如下所示
apiVersion: batch/v1
kind: Job
metadata:
name: ex-job
spec:
template:
metadata:
labels:
app: ex-job
spec:
restartPolicy: OnFailure
containers:
- name: main
image: luksa/batch-job
三 创建Job资源
3.1 k create -f exporter.yml
[root@node01 Chapter04]# k create -f exporter.yml --validate=false
job.batch/ex-job created
[root@node01 Chapter04]# k get po
NAME READY STATUS RESTARTS AGE
ex-job-tjs8l 1/1 Running 0 109s
[root@node01 Chapter04]# k get po
NAME READY STATUS RESTARTS AGE
ex-job-tjs8l 0/1 Completed 0 2m32s
可以看到大约过了2分组该Job顺利的完成它的任务之后,状态也变成了Completed
3.2 完成后的job仍然支持查看pod的日志等操作
[root@node01 Chapter04]# k logs ex-job-tjs8l
Wed Dec 23 09:28:43 UTC 2020 Batch job starting
Wed Dec 23 09:30:43 UTC 2020 Finished succesfully
四 创建多pod的Job资源
4.1 定义多pod的job资源并且串行的去执行一些列pod
apiVersion: batch/v1
kind: Job
metadata:
name: ex-multi-job
spec:
completions: 5
template:
metadata:
labels:
app: ex-job
spec:
restartPolicy: OnFailure
containers:
- name: main
image: luksa/batch-job
在2.1的基础上添加了一个参数,kubernets会依次串行的创建的pod,当前面一个pod创建完成,并以正常的方式退出,集群就会继续创建第二个,这次依次进行创建,当有pod运行失败的
时候,集群也会重新创建,所以,集群创建的pod数量会大于等于5个
4.2 结果如下
[root@node01 Chapter04]# k get po
NAME READY STATUS RESTARTS AGE
ex-multi-job-gjpvs 0/1 Completed 0 11m
ex-multi-job-kgpfk 0/1 Completed 0 9m14s
ex-multi-job-m29nq 0/1 Completed 0 7m8s
ex-multi-job-rhwn5 0/1 Completed 0 2m55s
ex-multi-job-rrf5g 0/1 Completed 0 5m2s
4.3 创建一个并行的job的定义
apiVersion: batch/v1
kind: Job
metadata:
name: ex-multi-job
spec:
completions: 5
parallelism: 2
template:
metadata:
labels:
app: ex-job
spec:
restartPolicy: OnFailure
containers:
- name: main
image: luksa/batch-job
4.4 显示的结果如下所示
[root@node01 Chapter04]# k get po
NAME READY STATUS RESTARTS AGE
ex-multi-job-6dzpl 1/1 Running 0 109s
ex-multi-job-kffd6 1/1 Running 0 109s [root@node01 Chapter04]# k get po
NAME READY STATUS RESTARTS AGE
ex-multi-job-6dzpl 0/1 Completed 0 2m55s
ex-multi-job-b9t4w 1/1 Running 0 48s
ex-multi-job-g7trs 1/1 Running 0 50s
ex-multi-job-kffd6 0/1 Completed 0 2m55s
可以看到加入 parallelism: 2这个参数后,job会每2个一起创建
4.5 即使在运行的时候,你依然可以使用命令来改变pod的每次创建的数量
kubectl scale job ex-multi-job --replicas 3
4.6 限制job pod的完成任务运行时间
如果一个pod完成任务的时间过长,或者由于代码等原因导致pod直接卡住,无法完成又该怎么办
可以通过在pod中配置activeDeadlineSecond属性,可以限制job的运行时间
4.7 job的最后一个用法,cronjob,创建定时执行的pod,类似于linux里面的定时任务
apiVersion: batch/v1beta1
kind: CronJob
metadata:
name: ex-cronjob
spec:
schedule: "0,15,30,45 * * * *"
#当计划的时间超过15s之后仍然未成功创建pod则显示此次失败
startingDeadlineSeconds: 15
jobTemplate:
spec:
template:
metadata:
labels:
app: ex-cronjob
spec:
restartPolicy: OnFailure
containers:
- name: main
image: luksa/batch-job
会创建一个每小时的15/30/45都会创建pod,并且当15s过后还未成功拉起pod,则系统判定该次创建失败
kubernets之job资源的更多相关文章
- kubernets之statefulset资源
一 了解Statefulset 1.1 对比statefulset与RS以及RC的区别以及相同点 Statefulset是有状态的,而RC以及RS等是没有状态的 Statefulset是有序的,拥 ...
- kubernets之Deployment资源
一 声明式的升级应用 1.1 回顾一下kubernets集群里面部署一个应用的形态应该是什么样子的,通过一副简单的图来描述一下 通过RC或者RS里面的模板创建了三个pod,之后通过一个servci ...
- kubernets之secret资源
一 对于一些保密度比较高的文件,k8s又是如何存储的呢? 针对那些保密度比较高的配置文件,例如证书以及一些认证配置不能直接存储在configmap中,而是需要存储在另外一种资源中,需要对存储在里面的 ...
- kubernets之Ingress资源
一 Ingress集中式的kubernets服务转发控制器 1.1 认识Ingress的工作原理 注意:图片来源于kubernets in action一书,如若觉得侵权,请第一时间联系博主进行删 ...
- kubernets之服务资源
一 服务集群内部或者客户端与pod的通信桥梁 kubernets集群的内部pod访问为啥不能使用传统的IP:PORT的形式? pod是短暂的,它们会随时启动或者关闭,原因可能是pod所在的节点下 ...
- kubernets之计算资源
一 为pod分配cpu,内存以及其他的资源 1.1 创建一个pod,同时为这个pod分配内存以及cpu的资源请求量 apiVersion: v1 kind: Pod metadata: name: ...
- kubernetes 基本概念和资源对象汇总
kubernetes 基本概念和知识点脑图 基本概念 kubernetes 中的绝大部分概念都抽象成kubernets管理的资源对象,主要有以下类别: Master : Master节点是kubern ...
- kubernets之pod的标签的使用
一 对于kubernets里面的资源标记完成之后的使用 1 node节点标签的应用(将资源调度到特定的节点上) #kubia-gpu.ymlapiVersion: v1 kind: Pod metad ...
- 使用 C# 开发 Kubernetes 组件,获取集群资源信息
写什么呢 前段时间使用 C# 写了个项目,使用 Kubernetes API Server,获取信息以及监控 Kubernetes 资源,然后结合 Neting 做 API 网关. 体验地址 http ...
随机推荐
- DG修改SYS用户密码(ORA-16810,ORA-01017)
修改主库PROD1密码后,查看configuration状态看到以下报错: [oracle@edgzrip1-PROD1 ~]$ dgmgrl sys/oracleDGMGRL for Linux: ...
- Mysql常用函数合集
1. 字符函数 length(获取字节数,UTF-8编码中 一个汉字占3个字节,GBK编码中一个汉字占2个字节) select length('abc'); #结果:3 select length(' ...
- 公司项目适配IOS9总结
1.JSONKit 项目在xcode7 IOS9 开发环境上报错,不能进行JSONSring和JSONData的使用 .在真机上没有问题,在模拟器上put和post数据适合JSONKit报空对象野指针 ...
- 2. 使用Shell能做什么
批处理 在批处理的过程中,能够实现脚步自动化,比GUI自动化速度高效 日常工作场景 服务端测试 移动端测试 持续集成与自动化部署,这是最最场景的场景,可以说离开了shell,持续集成和自动化部署也会遇 ...
- Java基础数据类型详解
在Java中的数据类型一共有8种,大致分为整型(4个)浮点型(2个)布尔(1)字符(1个) 分类 类型 默认值 占用字节 范围 整型 byte 0 1 = 8 bit -2^7 - 2^7 short ...
- html 04-HTML标签图文详解(一)
04-HTML标签图文详解(一) #一.排版标签 #注释标签 <!-- 注释 --> #段落标签<p> <p>This is a paragraph</p ...
- 持久层之 MyBatis: 第三篇 :缓存 And 高级查询
MyBatis入门到精通3 缓存机制 Mybatis一级缓存测试 Mybatis二级缓存测试 高级查询 表关系说明 一对一查询 一对多查询 多对多查询 缓存机制 正如大多数持久层框架一样,MyBati ...
- Python之word文档替换字符串(也可以用于短模板套用)
Python之word文档替换字符串(也可以用于短模板套用),代码如下: 1 ''' 2 #word模板套用1:创建模板,适合比较短的文档 3 ''' 4 5 #导入所需库 6 from docx i ...
- Spring Cloud 2020.0.0正式发布,再见了Netflix
目录 ✍前言 版本约定 ✍正文 Spring Cloud版本管理 与Spring Boot版本对应关系 当前支持的版本 阻断式升级(不向下兼容) 1.再见了,Netflix Netflix组件替代方案 ...
- 2.mysql explain命令详解
EXPLAIN详解 SQL编写和解析 编写过程 select-distinct-from-join-on-where-group by-having-order by-limit- 解析过程 from ...