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.mzph.cn/news/797445.shtml

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

相关文章

Day3-HBase重要概念

HBase 结构 HRegion 概述 在HBase中,会从行键方向上对表来进行切分,切分出来的每一个结构称之为是一个HRegion 切分之后,每一个HRegion会交给某一个HRegionServer来进行管理。HRegionServer是HBase的从节点,每一个HRegionServ…

C++ 内存分配时地址对齐

如果数据地址的对齐与CPU相兼容,那么CPU读写内存时性能会更高。 因此在C中,有时会希望在堆或栈中分配内存时,返回的地址能按照特定的长度对齐。 如果希望在栈中分配的内存时,返回地址按照特定长度对齐,可以使用 alig…

光伏接口转接器配合光伏规约转换器实现发电用电信息采集支持接入各个型号逆变器

1.产品概述 DAQ-GP-485PIA光伏接口转接器(以下简称转接器)是我公司针对光伏发电领域国家电网公司最新需求设计的,光伏接口转接器是配合光伏规约转换器,实现逆变器发电、用电信息采集的设备。支持锦浪、古瑞瓦特、固德威、华为、奥…

阿里云数据库RDS MySQL实例删除ONLY_FULL_GROUP_BY参数值

概述 阿里云云数据库RDS MySQL实例中,如何删除sql_mode参数的ONLY_FULL_GROUP_BY值。 详细信息 阿里云提醒您:如果您对实例或数据有修改、变更等风险操作,务必注意实例的容灾、容错能力,确保数据安全。如果您对实例(…

大模型现有领域研究

分类参考https://csdnnews.blog.csdn.net/article/details/137337597?spm1000.2115.3001.5926&ydrefereraHR0cHM6Ly93d3cuY3Nkbi5uZXQv 对现有领域热点进行总结,后续会基于这些进行补充,会对其中的名词进行解释。 开始编辑日期2024/4//4&#xff…

提升团队工程交付能力,从“看见”工程活动和研发模式开始

作者:张裕、雅纯 理想中的研发团队应当具有以下特征: 总是工作在最高优先级的事项上 理想的研发团队能够识别并始终集中精力在当前最紧迫和最有价值的任务上。这需要团队具备出色的项目管理能力和决策能力,以便能够正确评估优先级&#xff0…

Vue 项目如何在VSCode中进行断点调试

概要: 简单介绍一下,在VSCode中如何对Vue项目进行断点调试。具体内容包括但不限于:如何配置调试环境、如何在代码中设置断点、如何启动调试以及如何解决在调试过程中可能遇到的问题。 实际开发中,我们的前端项目一般都是在浏览器…

算法 day28 回溯4

93 复原IP地址 给定一个只包含数字的字符串 s ,用以表示一个 IP 地址,返回所有可能的有效 IP 地址,这些地址可以通过在 s 中插入 ‘.’ 来形成。你 不能 重新排序或删除 s 中的任何数字。你可以按 任何 顺序返回答案。 有效 IP 地址 正好由…

设计模式:享元模式案例

让我们以游戏开发中的棋类游戏(例如国际象棋)为例来展示享元模式的代码实现。在这个例子中,棋子的类型是内部状态,而棋子的位置是外部状态。 Java 代码示例 import java.util.HashMap; import java.util.Map;// 享元接口 interf…

windows 系统下 mysql 数据库的下载与安装(包括升级安装)

windows 系统下 mysql 数据库的下载与安装(包括升级安装) 一、mysql 介绍: MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,属于 Oracle 旗下产品。 MySQL 是最流行的关系型数据库管理系统之一&#xf…

Springboot的事务管理

在Service层的方法头顶上加上Transactional 声明这个方法是个事务,要么都成功,要么都失败。 这经常用于批量操作,避免第一次没成功,执行第二次的时候重复插入相同数据,或者有些插入删除操作未被执行,就开…

从300亿分子中筛出6款,结构新且易合成,斯坦福抗生素设计AI模型登Nature子刊

ChatGPT狂飙160天,世界已经不是之前的样子。 新建了免费的人工智能中文站https://ai.weoknow.com 新建了收费的人工智能中文站https://ai.hzytsoft.cn/ 更多资源欢迎关注 全球每年有近 500 万人死于抗生素耐药性,因此迫切需要新的方法来对抗耐药菌株。 …

5G时代下电子元器件电商平台的发展策略与应对措施

在5G时代下,电子元器件电商平台的发展策略与应对措施需要考虑以下几个关键因素: 技术产品更新换代: 随着5G技术的普及和应用,电子元器件的需求将发生变化,对于支持5G技术的电子元器件的需求会增加,而对于旧…

llama2的python视角

1 调试代码 if __name__ __main__ :config ModelArgs(dim8, n_layers2, n_heads32, n_kv_heads32, vocab_size32000, hidden_dimNone, multiple_of256, norm_eps1e-05, max_seq_len3, dropout0.0)model Transformer(config)input_tokens torch.randint(0, 32000, (1, 3)) …

【已解决】HalconDotNet.HOperatorException:“HALCON error #1201: Wrong type of control

前言 最近在学习Halcon视觉和C#的联合开发,碰到一个比较有意思的问题记录一下,大致的报错信息是说我用的halcondotnet版本和我在halcon导出的使用的halcondotnet.dll版本不一致,所以才报错的! 解决 首先你得找到你安装halcon的…

大模型技术ollama入门教程

下载 下载:https://ollama.com/download 我下载的是Windows版本: Docker启动 使用Docker启动要更简单点。 拉取镜像: docker pull ollama/ollama使用CPU启动: docker run -d -v ollama:/root/.ollama -p 11434:11434 --nam…

设计模式面试题(六)

1.什么是建造者模式 建造者模式(Builder Pattern)是一种创建型设计模式,它提供了一种构建复杂对象的最佳方式。这种模式允许你将一个复杂对象的构造过程分解成若干个简单的步骤,这样可以使最终对象的构建过程和表示方式分离&…

云骑士数据恢复怎么授权别的电脑

随着科技的不断发展,数据恢复已经成为了我们生活中不可或缺的一部分。云骑士数据恢复作为一款功能强大的数据恢复软件,受到了广泛的欢迎。但是,有时候我们需要将云骑士数据恢复授权给其他电脑使用,这就需要我们了解相关的操作步骤…

夯实智慧新能源数据底座,TiDB Serverless 在 Sandisolar+ 的应用实践

本文介绍了 SandiSolar通过 TiDB Serverless 构建智慧新能源数据底座的思路与实践。作为一家致力于为全球提供清洁电力解决方案的新能源企业,SandiSolar面临着处理大量实时数据的挑战。为了应对这一问题,SandiSolar选择了 TiDB Serverless 作为他们的数据…

【JAVASE】带你了解instanceof和equals的魅力

✅作者简介:大家好,我是橘橙黄又青,一个想要与大家共同进步的男人😉😉 🍎个人主页:再无B~U~G-CSDN博客 1.instanceof instanceof 是 Java 的保留关键字。它的作用是测试…