当前位置: 首页 > news >正文

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

在这里插入图片描述

相关文章:

K8S之Job和CronJob控制器

这里写目录标题 Job概念适用场景使用案例 CronJob概念适用场景使用案例 Job 概念 Job控制器用于管理Pod对象运行一次性任务,例如:对数据库备份,可以直接在k8s上启动一个mysqldump备份程序,也可以启动一个pod,这个pod…...

基于SSM的基于个人需求和地域特色的外卖推荐系统(有报告)。Javaee项目。ssm项目。

演示视频: 基于SSM的基于个人需求和地域特色的外卖推荐系统(有报告)。Javaee项目。ssm项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系结构&…...

哈佛大学商业评论 --- 第三篇:真实世界中的增强现实

AR将全面融入公司发展战略! AR将成为人类和机器之间的新接口! AR将成为人类的关键技术之一! 请将此文转发给您的老板! --- 本文作者:Michael E.Porter和James E.Heppelmann 虽然物理世界是三维的,但大…...

华为ICT七力助推文化产业新质生产力发展

创新起主导作用的新质生产力由新劳动者、新劳动对象、新劳动工具、新基础设施等四大要素共同构成,符合新发展理念的先进生产力质态;具有高科技、高能效、高质量等三大突出特征。而通过壮大新产业、打造新模式、激发新动能,新质生产力能够摆脱…...

FastGpt流程

1.知识库 引入文本——>数据清洗 最好将pdf/ppt/xx转换成文本,在文本里面进行数据清洗(以防知识库删除后,数据清洗失效) 可以插图,将图片通过网页检查F12查看路径放进去 或者直接在csdn放,直接复制链接…...

怎么在UE游戏中加入原生振动效果

我是做振动触感的。人类的五感“视听嗅味触”,其中的“触”就是触觉,是指皮肤、毛发与物体接触时的感觉。触感可以带来更加逼真的沉浸式体验。但也许过于司空见惯,也是习以为常,很多人漠视了触感的价值。大家对触感的认知还远远不…...

【Hadoop技术框架-MapReduce和Yarn的详细描述和部署】

前言: 💞💞大家好,我是书生♡,今天的内容主要是Hadoop的后两个组件:MapReduce和yarn的相关内容。同时还有Hadoop的完整流程。希望对大家有所帮助。感谢大家关注点赞。 💞💞前路漫漫&…...

蓝桥杯刷题 前缀和与差分-[3507]异或和之和(C++)

题目描述 给定一个数组 Ai,分别求其每个子段的异或和,并求出它们的和。 或者说,对于每组满足 1≤L≤R≤n 的 L,R求出数组中第 L 至第 R 个元素的异或和。 然后输出每组 L,R 得到的结果加起来的值。 输入格式 输入…...

background背景图参数边渐变CSS中创建背景图像的渐变效果

效果:可以看到灰色边边很难受,希望和背景融为一体 原理: 可以使用线性渐变(linear-gradient)或径向渐变(radial-gradient)。以下是一个使用线性渐变作为背景图像 代码: background: linear-gradient(to top, rgba(255,255,255,0)…...

『大模型笔记』吴恩达:AI 智能体工作流引领人工智能新趋势

吴恩达:AI 智能体工作流引领人工智能新趋势 文章目录 一. 概述二. AI 智能体的设计模式2.1. 反思(Reflection)2.2. 使用工具(Tool use)2.3. 规划(Planning)2.4. 多智能体协作(Multi-agent collaboration)三. 最后总结四. 参考文献一. 概述 我期待与大家分享我在 AI 智能体方面…...

腾讯光子工作室群 一面 (30min)

问题: 你毕业是打算考研还是直接工作 深挖项目(介绍、剖析遇到问题如何解决): 你在进行攻击的时候会不会有穿模的情况,怎么解决 为什么会造成卡顿(多嘴说的) 说说行为树和状态机之间的差别 …...

Linux的信号栈的实现(1)

作者 pengdonglin137@163.com 环境 Linux 6.5 + ARM64 概述 在前一篇文章中介绍了Linux系统中的几种栈以及它们之间的切换,进程在用户态和内核态会使用不同的栈,在用户态的主线程和其他线程都有各自的栈,此外进程在执行信号处理程序时也需要栈,那么这个栈来自哪呢? …...

Python学习笔记——heapq

堆排序 思路 堆排序思路是: 将数组以二叉树的形式分析,令根节点索引值为0,索引值为index的节点,子节点索引值分别为index*21、index*22;对二叉树进行维护,使得每个非叶子节点的值,都大于或者…...

搜索与图论——拓扑排序

有向图的拓扑排序就是图的宽度优先遍历的一个应用 有向无环图一定存在拓扑序列(有向无环图又被称为拓扑图),有向有环图一定不存在拓扑序列。无向图没有拓扑序列。 拓扑序列:将一个图排成拓扑序后,所有的边都是从前指…...

linux CentOS7配置docker的yum源并安装

[TOC](这里写目录标题 配置yum源Docker的自动化安装一些其他启动相关的命令: 配置yum源 使用以下命令下载CentOS官方的yum源文件 wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo 清除yum缓存 yum clean all 更新yum缓存…...

vue结合Elempent-Plus/UI穿梭框更改宽度以及悬浮文本显示

由于分辨率不同会导致文本内容显示不全,如下所示: 因此需要 1、悬浮到对应行上出现悬浮信息 实现代码如下所示: 这里只演示Vue3版本代码,Vue2版本不再演示 区别就在插槽使用上Vue3使用:#default“”;Vu…...

汇川PLC学习Day4:电机参数和气缸控制参数

汇川PLC学习Day4:伺服电机参数和气缸控制参数 一、伺服电机参数二、气缸参数1. 输入IO映射(1)输入IO映射(2) 输入IO触摸屏标签显示映射 2. 输出IO映射(1)输出IO映射(2) …...

数据可视化高级技术Echarts(快速上手柱状图进阶操作)

目录 1.Echarts的配置 2.程序的编码 3.柱状图的实现(入门实现) 相关属性介绍(进阶): 1.标记最大值/最小值 2.标记平均值 3.柱的宽度 4. 横向柱状图 5.colorBy series系列(需要构造多组数据才能实现…...

【数据结构与算法】力扣 206. 反转链表

题目描述 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 示例 1: 输入: head [1,2,3,4,5] 输出: [5,4,3,2,1]示例 2: 输入: head [1,2] 输出: [2,1]示例 3&#…...

【随笔】Git 高级篇 -- 本地栈式提交 rebase | cherry-pick(十七)

💌 所属专栏:【Git】 😀 作  者:我是夜阑的狗🐶 🚀 个人简介:一个正在努力学技术的CV工程师,专注基础和实战分享 ,欢迎咨询! 💖 欢迎大…...

生成xcframework

打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式,可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...

简易版抽奖活动的设计技术方案

1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...

Neo4j 集群管理:原理、技术与最佳实践深度解析

Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...

数据库分批入库

今天在工作中,遇到一个问题,就是分批查询的时候,由于批次过大导致出现了一些问题,一下是问题描述和解决方案: 示例: // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...

【JavaSE】绘图与事件入门学习笔记

-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角,以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向,距离坐标原点x个像素;第二个是y坐标,表示当前位置为垂直方向,距离坐标原点y个像素。 坐标体系-像素 …...

基于matlab策略迭代和值迭代法的动态规划

经典的基于策略迭代和值迭代法的动态规划matlab代码,实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...

使用 SymPy 进行向量和矩阵的高级操作

在科学计算和工程领域,向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能,能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作,并通过具体…...

听写流程自动化实践,轻量级教育辅助

随着智能教育工具的发展,越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式,也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建,…...

Hive 存储格式深度解析:从 TextFile 到 ORC,如何选对数据存储方案?

在大数据处理领域,Hive 作为 Hadoop 生态中重要的数据仓库工具,其存储格式的选择直接影响数据存储成本、查询效率和计算资源消耗。面对 TextFile、SequenceFile、Parquet、RCFile、ORC 等多种存储格式,很多开发者常常陷入选择困境。本文将从底…...

AI病理诊断七剑下天山,医疗未来触手可及

一、病理诊断困局:刀尖上的医学艺术 1.1 金标准背后的隐痛 病理诊断被誉为"诊断的诊断",医生需通过显微镜观察组织切片,在细胞迷宫中捕捉癌变信号。某省病理质控报告显示,基层医院误诊率达12%-15%,专家会诊…...