一  介绍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. centos 7系统安装mysql 8.0

    一.关闭防火墙 [root@node01 ~]# systemctl disable firewalld [root@node01 ~]# systemctl stop firewalld [root ...

  2. screw一键生成数据库文档

    1. 简介   在项目开发和交付阶段,数据库文档是必不可少的.对于大型项目多个数据库几百甚至几千张表来说,手写数据库文档必然是耗时且痛苦的.因此需要一个插件自动生成文档.   screw提供了多种文件 ...

  3. 安装xshell6

    xshell作为一个强大的安全终端模拟软件,深受广大人民喜爱,本文将介绍如何在Windows环境下安装最新版本的xshell客户端. 一,下载 1,打开官网下载链接https://www.netsar ...

  4. Leetcode——练习

    平时没事刷刷Leetcode,还办了个年会员.为了自己150刀.为了自己的大脑投资,从不差钱儿.刷刷题能练习coding,此外看一些别人的优秀的答案,能增长见解.大家共同努力,共勉. 十.Google ...

  5. 深度图解Redis Cluster原理

    不想谈好吉他的撸铁狗,不是好的程序员,欢迎微信关注「SH的全栈笔记」 前言 上文我们聊了基于Sentinel的Redis高可用架构,了解了Redis基于读写分离的主从架构,同时也知道当Redis的ma ...

  6. C#数据结构-赫夫曼树

    什么是赫夫曼树? 赫夫曼树(Huffman Tree)是指给定N个权值作为N个叶子结点,构造一棵二叉树,若该树的带权路径长度达到最小.哈夫曼树(也称为最优二叉树)是带权路径长度最短的树,权值较大的结点 ...

  7. MySQL5.7.26安装及启动报错解决

    一.安装依赖包 [root@db01 ~]# yum install -y lrzsz [文件上传/下载] [root@db01 ~]# yum -y install xfsprogs [安装磁盘格式 ...

  8. Office__自动保存和恢复

    #1.前言 在您埋头辛苦编辑Excel.Word或PPT文档的时候,如果突然发生断电.系统崩溃.意外误操作,本文将以Excel2010为例详细阐述其中自动保存功能的工作机理和恢复文件的访问方法,Exc ...

  9. 本地H5模式写的APP体验可以比APP还好

    很多APP使用H5编写,但APP链接的是远程的url的模式,导致了APP的用户体验极差,因为当你使用远程的H5 url的时候,打开H5页面的速度由网络决定,而不是由手机性能决定,假如用户在没有网络的地 ...

  10. oracle 19c dataguard silent install (oracle 19c dataguard 静默安装)

    环境说明 1.关闭透明大页 RHEL  6: # cat /sys/kernel/mm/redhat_transparent_hugepage/enabled [oracle@rhel 6 ~]$ c ...