K8S之Job和CronJob控制器

这里写目录标题

  • Job
    • 概念
    • 适用场景
    • 使用案例
  • CronJob
    • 概念
    • 适用场景
    • 使用案例

Job

概念

Job控制器用于管理Pod对象运行一次性任务,例如:对数据库备份,可以直接在k8s上启动一个mysqldump备份程序,也可以启动一个pod,这个pod专门用来做备份任务,备份结束pod就可以终止了,不需要重启,将Pod对象置于"Completed"(完成)状态。
若容器中的进程因错误而终止,则需要按照重启策略配置确定是否重启,对于Job这个类型的控制器来说,需不需要重建pod就看任务是否完成,完成就不需要重建,没有完成就需要重建pod。
Job控制器的Pod对象的状态转换如下图所示:
在这里插入图片描述

适用场景

  • 单个任务:只启一个pod,pod成功,job正常结束;
  • 并行任务同时指定成功个数:可通过字段 .spec.completions 指定成功个数,.spec.parallelism(指定并行运行的任务数)。当成功个数达到 指定的 .spec.completions 个,任务结束;

适用场景

Job 常用于并行地处理一组独立但相关的 work item。如发送邮件,渲染帧,转码文件和扫描NoSql数据库中的key。

相关配置字段:

  • .spec.completions:完成该Job需要执行成功的Pod数,默认为1;
  • .spec.parallelism:能够同时运行的Pod数,默认为1,如果设置为0,则job会暂定;
  • .spec.backoffLimit:允许执行失败的Pod数,默认值是6。(ps. 0表示不允许Pod执行失败。如果Pod是restartPolicy为Nerver,则失败后会创建新的Pod,如果是OnFailed,则会重启Pod。)不管是哪种情况,只要Pod失败一次就计算一次,而不是等整个Pod失败后再计算一个。当失败的次数达到该限制时,整个Job随即结束,所有正在运行中的Pod都会被删除;
  • .spec.activeDeadlineSeconds: Job的超时时间,一旦一个Job运行的时间超出该限制,则Job失败,所有运行中的Pod会被结束并删除。该配置指定的值必须是个正整数。不指定则不会超时;
  • .spec.ttlSecondsAfterFinished:通过指定该参数可以实现自动删除job,以及级联的pod资源。如果设置为0,job会被立即删除。如果不指定,job则不会被自动删除。(默认情况下,job异常或者成功结束后,包括job启动的pod,都不会被清理掉,可以依据保存的job和pod,查看状态、日志,以及调试等。用户可手动删除 job 会级联删除对应的pod)。

使用案例

vim job.yaml
apiVersion: batch/v1
kind: Job
metadata:name: my-job
spec:completions: 6 # job结束需要成功运行的Pod个数,即状态为Completed的pod数parallelism: 3 # 同时运行3个pod, 这个值不会超过completions的值backoffLimit: 6 # 如果job失败,则重试几次template:spec:restartPolicy: Nevercontainers:- name: my-container-jobimage: busyboximagePullPolicy: IfNotPresentcommand: ['sh', '-c']args: ['echo "this is my-job";sleep 60; echo "this is my-job too"']

更新资源清单文件

kubectl apply -f job.yaml

刚创建完资源,查看Job状态

kubectl get Job

在这里插入图片描述

刚创建完资源,查看Job控制器创建的pod的状态

kubectl get pods | grep my-job

在这里插入图片描述

1分钟后,看某个pod的日志

kubectl logs my-job-s9m5s

在这里插入图片描述

动态查看pod状态

kubectl get pods -w | grep my-job

在这里插入图片描述
继续观察Job控制器创建的pod
最终 状态都为完成
在这里插入图片描述
加上 “.spec.ttlSecondsAfterFinished” 字段后,任务完成后指定秒数后自动删除job和关联的pod

vim job.yaml
apiVersion: batch/v1
kind: Job
metadata:name: my-job
spec:completions: 6parallelism: 3backoffLimit: 6ttlSecondsAfterFinished: 3  # 加上它,等3秒后资源自动删除template:spec:restartPolicy: Nevercontainers:- name: my-container-jobimage: busyboximagePullPolicy: IfNotPresentcommand: ['sh', '-c']args: ['echo "this is my-job";sleep 5; echo "this is my-job too"']

更新资源清单文件

kubectl apply -f job.yaml

时间到了自动删除pod和job
在这里插入图片描述
在这里插入图片描述

CronJob

概念

CronJob跟Job完成的工作是一样的,只不过CronJob添加了定时任务能力。可以指定时间,实现周期性运行。Job,CronJob 与 Deployment,DaemonSet 显著区别在于不需要持续在后台运行。
Deployment主要用于管理无状态的应用(kubernetes集群有一些 pod,某一个pod出现故障,删除之后会重新启动一个pod,那么kubernetes这个集群中pod数量就正常了,更多关注的是群体,这就是无状态应用)。

适用场景

  • 在给定的时间点调度Job运行。
  • 创建周期性运行的Job,例如数据库备份、发送邮件

使用案例

vim cronjob.yaml 
apiVersion: batch/v1
kind: CronJob
metadata:name: my-cron-job
spec:schedule: "*/1 * * * *" # 1分钟执行一次jobTemplate:spec:template:spec:containers:- name: my-container-cron-jobimage: busyboximagePullPolicy: IfNotPresentcommand:- /bin/sh- -c- date; echo my-container-cron-jobrestartPolicy: OnFailure

更新资源清单文件

kubectl apply -f cronjob.yaml

查看刚才创建的cronJob

kubectl get cronjob

在这里插入图片描述
从命令的结果可以看出,CronJob还没有调度或运行任何Job。观察大概一分钟,等待CronJob创建

kubectl get jobs --watch

现在可以看到由 my-cron-job 这个cronjob调度的一个正在运行的job
在这里插入图片描述

 kubectl get cronjob

可以看到 my-cron-job 这个CronJob成功地在 LAST SCHEDULE中指定的时间点调度了一个作业。当前有1个活动作业,这意味着该作业已经完成或失败
在这里插入图片描述

kubectl get jobs

每60秒建一个job
在这里插入图片描述

kubectl get pods | grep my-cron-job

每60秒执行一个pod
在这里插入图片描述
查看pod执行日志

kubectl logs my-cron-job-28540151-4vhlm

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/299834.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Endnotes编辑参考文献的Style

Endnotes版本:X7 编辑过程: 1:打开软件,点击编辑—输出样式,可以在已有的style上编辑或则在建立新的样式。 我们选择numbered样式进行编辑。 2.我们先插入一个文献看看numbered的样式。关于下载endnotes的文件方法前…

“进击的巨人”:服务器硬件基础知识解析

引言: 服务器是网络环境中负责处理数据、运行应用程序和服务多用户的高性能计算机系统。了解服务器的硬件构成有助于更好地管理和优化IT资源。 服务器和普通PC的差异: 服务器具有比个人电脑更高的处理能力、稳定性和可靠性,它们通常运行在没…

B+树索引(如何设计、用好索引)

1.索引的代价 空间上的代价 时间上的代价 每次对表中的数据进⾏增、删、改操作时,都需要去修改各个B树索引。⽽且我们讲过,B树每层节点都是按照索引列的值从⼩到⼤的顺序排序⽽组成了双 向链表。不论是叶⼦节点中的记录,还是内节点中的记录&a…

Adobe InCopy 2024 v19.3 (macOS, Windows) - 编写和副本编辑软件

Adobe InCopy 2024 v19.3 (macOS, Windows) - 编写和副本编辑软件 Acrobat、After Effects、Animate、Audition、Bridge、Character Animator、Dimension、Dreamweaver、Illustrator、InCopy、InDesign、Lightroom Classic、Media Encoder、Photoshop、Premiere Pro、Adobe XD…

星系炸弹(蓝桥杯真题填空题)

import java.time.LocalDate; import java.time.temporal.ChronoUnit; public class BombExplosionDate { public static void main(String[] args) { // 定义贝塔炸弹的放置日期和定时天数 LocalDate placementDate LocalDate.of(2014, 11, 9); int daysToExplode 10…

【已解决】ZIP压缩文件如何设置密码?

ZIP是常用的压缩格式之一,对于重要的ZIP文件,我们还可设置密码保护,那ZIP压缩文件怎么设置密码呢?不清楚的小伙伴一起来看看吧! 给ZIP文件设置密码,我们需要用到支持ZIP格式的解压缩软件,比如7…

IDEA连接SqlServer数据库

目录 下载jar包 下载sqljdbc_12.6压缩包 解压 导入IDEA 新建文件夹 复制粘贴进JDBC文件夹并设为library 编写类及方法 代码 下载jar包 以sqljdbc_12.6为例 下载sqljdbc_12.6压缩包 最新地址:sqljdbc 官方最新地址 解压 解压即用 导入IDEA 新建文件夹 复制…

秋招刷题4(动态规划)

1.购物单 import java.util.Scanner;public class Main {public static void main(String[] args){Scanner sc new Scanner(System.in);int N sc.nextInt();int m sc.nextInt();Goods[] goods new Goods[m];for(int i 0; i < m; i){goods[i] new Goods();}for(int i …

Python爬虫-爬取药膳食谱数据

&#x1f388; 博主&#xff1a;一只程序猿子 &#x1f388; 博客主页&#xff1a;一只程序猿子 博客主页 &#x1f388; 个人介绍&#xff1a;爱好(bushi)编程&#xff01; &#x1f388; 创作不易&#xff1a;喜欢的话麻烦您点个&#x1f44d;和⭐&#xff01; &#x1f388;…

【STM32】存储器和位带映射(bit band mapping)

文章目录 0 前言1 关于地址和存储器2 STM32内部存储器3 位带映射&#xff08;bit band mapping&#xff09;4 扩展&#xff1a;IAP 0 前言 最近在研究stm32标准库&#xff0c;对使用宏定义实现位操作的函数非常感兴趣&#xff0c;简单的一句PAout(1) 0;就能实现某个引脚电平的…

基于单片机光伏太阳能跟踪系统设计

**单片机设计介绍&#xff0c;基于单片机光伏太阳能跟踪系统设计 文章目录 一 概要二、功能设计三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机光伏太阳能跟踪系统的设计&#xff0c;旨在通过单片机技术实现对光伏太阳能设备的自动跟踪&#xff0c;以提高太阳…

InnoDB 数据页结构

1.行格式 1.1 Compact行格式 1.1.1 示意图 1.1.2 准备一下 1&#xff09;建表 mysql> CREATE TABLE record_format_demo (-> c1 VARCHAR(10),-> c2 VARCHAR(10) NOT NULL,-> c3 CHAR(10),-> c4 VARCHAR(10)-> ) CHARSETascii ROW_FORMATCOM…

ARM、X86、RISC-V三分天下

引入&#xff1a; 简单的介绍一下X86、ARM、RISC-V三种cpu架构的区别和应用场景。 目录 简单概念讲解 1. X86架构 2. ARM架构 3. RISC-V架构 应用场景 X86、ARM和RISC-V是三种不同的CPU架构&#xff0c;它们在设计理念、指令集和应用场景上有一些区别。 简单概念讲解 1. X…

力扣Lc29---- 541. 反转字符串 II(java版)-2024年4月06日

1.题目描述 2.知识点 &#xff08;1&#xff09;执行步骤如下&#xff1a; 初始化 s “abcdefg” 和 k 2 将字符串分割成长度为 2k 4 的块。 对每个块中的前 k 2 个字符进行反转。 执行过程 1&#xff09;第一次循环&#xff08;i 0&#xff09; start 0 end Math.min(0…

MPT - 初识账户状态树(World State)

往期回顾 ETH网络中的账户ETH网络中的区块链 通过以上文章&#xff0c;我们了解到ETH网络中的World State是节点根据交易维护的&#xff0c;节点在维护Wrold State时为了方便操作会将用户状态构建成一颗树&#xff0c;称为账户状态树&#xff0c;采用一种叫做MPT的数据结构 MP…

如何申请到免费SSL证书

免费SSL证书主要通过权威CA机构如Lets Encrypt、JoySSL等签发&#xff0c;具备基础的服务器身份验证功能&#xff0c;能有效防止中间人攻击&#xff0c;确保信息从用户的浏览器到服务器间的全程加密传输&#xff0c;保护用户隐私数据不被窃取或篡改。 尽管免费SSL证书可能存在有…

腾讯云添加域名后不生效

问题原因 添加域名后不生效可能是因为没有加CDN域名解析 解决步骤

ISWH卧式不锈钢管道离心泵

ISWH卧式不锈钢管道离心泵是一种设计精良的泵类产品&#xff0c;它采用先进的水力模型&#xff0c;结合高质量的不锈钢材料&#xff0c;确保了泵在输送流体时的高效率和长久耐用性。这种泵通常用于输送清水或其他类似于水的液体&#xff0c;特别是在需要避免腐蚀或污染的场合&a…

跨境金融区块链服务平台

跨境金融服务是因企业及个人跨境经营、交易、投资、往来等活动而产生的资金使用、调拨、配置等需求&#xff0c;而提供的金融服务。近年来&#xff0c;随着我国经济的快速稳步增长和全球化经济一体化的不断深入发展&#xff0c;跨境金融业务增长迅速&#xff0c;监管也开始转化…

2024年【安全员-C证】最新解析及安全员-C证实操考试视频

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 安全员-C证最新解析是安全生产模拟考试一点通生成的&#xff0c;安全员-C证证模拟考试题库是根据安全员-C证最新版教材汇编出安全员-C证仿真模拟考试。2024年【安全员-C证】最新解析及安全员-C证实操考试视频 1、【多…