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)集群中的,今天我 ...
随机推荐
- Thread中run和start方法的模板设计模式
创建一个Thread需要继承Thread重写run方法或者实现Runnable接口中的run方法,其实两者都是一样因为Thread也继承了Runnable接口. 实现了run方法,但是启动确实用sta ...
- ECMAScript概述及浅谈const,let与块级作用域
ECMAScript可以看作javascript的标准规范,实际上javascript是ECMAScript的一门脚本语言,ECMAScript只提供了最基本的语言JavaScript对ECMAScr ...
- 基于nginx实现web服务器的双机热备
1.适用场景 对于部署重要的服务,会使用两台服务器,互相备份,共同执行同一服务.当一台服务器出现故障时,可以由另一台服务器承担服务任务,从而在不需要人工干预的情况下,自动保证系统能持续提供服务.双机热 ...
- 机器学习算法·KNN
机器学习算法应用·KNN算法 一.问题描述 验证码目前在互联网上非常常见,从学校的教务系统到12306购票系统,充当着防火墙的功能.但是随着OCR技术的发展,验证码暴露出的安全问题越来越严峻.目前对验 ...
- 通过写n本书的积累,我似乎找到了写好技术文章的方法(回复送我写的python股票电子书)
我写的书不算少,写的博文就更多了,但大多数书的销量也就一般,而我写的技术文章里,虽然也有点击过万的,但不少点击量也就只有三位数. 通过不断反思,也通过对比了一些畅销书和顶流文章,我似乎找到了一些原因, ...
- 相同的class的各位object互为友元(friend)
相同的class的各位object互为友元(friend) 这句话是啥意思? 我们来看一段代码: 1 class complex{ 2 3 private: 4 5 int r,i; 6 public ...
- 十五:SQL注入之oracle,Mangodb注入
Access,Mysql,mssql,mangoDB,postgresql,sqlite,oracle,sybase JSON类型的数据注入: 键名:键值 {"a":"1 ...
- Burp suite的系列介绍 (1)
前言 为了进行Web安全方面的学习,Burp suite是必备的工具之一,我们将会从多个模块进行逐步的学习. Burp suite的应用场景 1.HTTP服务端接口测试. 2.HTTP客户端和HTTP ...
- 18.java设计模式之中介者模式
基本需求 智能家庭包括各种设备,闹钟.咖啡机.电视机.窗帘等 要看电视时,各个设备可以协同工作,自动完成看电视的准备工作,比如流程为:闹铃响起->咖啡机开始做咖啡->窗帘自动落下-> ...
- 使用git同步代码
方法1.先把远程仓库clone到本地,本地修改后再push到gitee的远程仓库 1. 配置本地的git配置信息 git config -l #查看git本地配置信息 # 如果没有配置,需要配置自己的 ...