一  介绍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资源的更多相关文章

  1. kubernets之statefulset资源

    一  了解Statefulset 1.1  对比statefulset与RS以及RC的区别以及相同点 Statefulset是有状态的,而RC以及RS等是没有状态的 Statefulset是有序的,拥 ...

  2. kubernets之Deployment资源

    一  声明式的升级应用 1.1  回顾一下kubernets集群里面部署一个应用的形态应该是什么样子的,通过一副简单的图来描述一下 通过RC或者RS里面的模板创建了三个pod,之后通过一个servci ...

  3. kubernets之secret资源

    一  对于一些保密度比较高的文件,k8s又是如何存储的呢? 针对那些保密度比较高的配置文件,例如证书以及一些认证配置不能直接存储在configmap中,而是需要存储在另外一种资源中,需要对存储在里面的 ...

  4. kubernets之Ingress资源

    一  Ingress集中式的kubernets服务转发控制器 1.1  认识Ingress的工作原理 注意:图片来源于kubernets in action一书,如若觉得侵权,请第一时间联系博主进行删 ...

  5. kubernets之服务资源

    一  服务集群内部或者客户端与pod的通信桥梁   kubernets集群的内部pod访问为啥不能使用传统的IP:PORT的形式? pod是短暂的,它们会随时启动或者关闭,原因可能是pod所在的节点下 ...

  6. kubernets之计算资源

    一  为pod分配cpu,内存以及其他的资源 1.1  创建一个pod,同时为这个pod分配内存以及cpu的资源请求量 apiVersion: v1 kind: Pod metadata: name: ...

  7. kubernetes 基本概念和资源对象汇总

    kubernetes 基本概念和知识点脑图 基本概念 kubernetes 中的绝大部分概念都抽象成kubernets管理的资源对象,主要有以下类别: Master : Master节点是kubern ...

  8. kubernets之pod的标签的使用

    一 对于kubernets里面的资源标记完成之后的使用 1 node节点标签的应用(将资源调度到特定的节点上) #kubia-gpu.ymlapiVersion: v1 kind: Pod metad ...

  9. 使用 C# 开发 Kubernetes 组件,获取集群资源信息

    写什么呢 前段时间使用 C# 写了个项目,使用 Kubernetes API Server,获取信息以及监控 Kubernetes 资源,然后结合 Neting 做 API 网关. 体验地址 http ...

随机推荐

  1. DG修改SYS用户密码(ORA-16810,ORA-01017)

    修改主库PROD1密码后,查看configuration状态看到以下报错: [oracle@edgzrip1-PROD1 ~]$ dgmgrl sys/oracleDGMGRL for Linux: ...

  2. Mysql常用函数合集

    1. 字符函数 length(获取字节数,UTF-8编码中 一个汉字占3个字节,GBK编码中一个汉字占2个字节) select length('abc'); #结果:3 select length(' ...

  3. 公司项目适配IOS9总结

    1.JSONKit 项目在xcode7 IOS9 开发环境上报错,不能进行JSONSring和JSONData的使用 .在真机上没有问题,在模拟器上put和post数据适合JSONKit报空对象野指针 ...

  4. 2. 使用Shell能做什么

    批处理 在批处理的过程中,能够实现脚步自动化,比GUI自动化速度高效 日常工作场景 服务端测试 移动端测试 持续集成与自动化部署,这是最最场景的场景,可以说离开了shell,持续集成和自动化部署也会遇 ...

  5. Java基础数据类型详解

    在Java中的数据类型一共有8种,大致分为整型(4个)浮点型(2个)布尔(1)字符(1个) 分类 类型 默认值 占用字节 范围 整型 byte 0 1 = 8 bit -2^7 - 2^7 short ...

  6. html 04-HTML标签图文详解(一)

    04-HTML标签图文详解(一) #一.排版标签 #注释标签 <!-- 注释 -->   #段落标签<p> <p>This is a paragraph</p ...

  7. 持久层之 MyBatis: 第三篇 :缓存 And 高级查询

    MyBatis入门到精通3 缓存机制 Mybatis一级缓存测试 Mybatis二级缓存测试 高级查询 表关系说明 一对一查询 一对多查询 多对多查询 缓存机制 正如大多数持久层框架一样,MyBati ...

  8. Python之word文档替换字符串(也可以用于短模板套用)

    Python之word文档替换字符串(也可以用于短模板套用),代码如下: 1 ''' 2 #word模板套用1:创建模板,适合比较短的文档 3 ''' 4 5 #导入所需库 6 from docx i ...

  9. Spring Cloud 2020.0.0正式发布,再见了Netflix

    目录 ✍前言 版本约定 ✍正文 Spring Cloud版本管理 与Spring Boot版本对应关系 当前支持的版本 阻断式升级(不向下兼容) 1.再见了,Netflix Netflix组件替代方案 ...

  10. 2.mysql explain命令详解

    EXPLAIN详解 SQL编写和解析 编写过程 select-distinct-from-join-on-where-group by-having-order by-limit- 解析过程 from ...