常见类型的yaml文件如何编写?--kind: Job|CronJob

本次介绍两个关联度很高的类型,Job和CronJob。

Job基本说明

在 Kubernetes 中,Job 是一种用于运行一次性任务的资源对象。它用于确保在集群内部执行某个任务,即使任务运行失败或其中一个 Pod 发生故障时,也会进行重试。Job 可以保证任务的结束状态为成功(成功完成所有任务)或失败(任何一个任务失败)。

Job 的主要特点包括:

  1. 一次性任务:Job 用于运行一次性任务,即执行一次特定任务后就完成了它的工作。与其他资源对象(如 Deployment)不同,Job 不会持续运行,而是等待任务完成后进行清理。

  2. 并行任务:Job 可以指定要并行运行多少个任务。例如,可以创建一个 Job,并指定要同时运行 5 个 Pod 来执行任务,从而提高任务执行效率。

  3. 任务重试:如果某个 Pod 的任务运行失败,则 Kubernetes 会自动重新创建一个新的 Pod 来重试任务,直到成功完成任务为止。这有助于确保任务的可靠性。

  4. 完成状态:Job 的任务可以定义为成功完成或失败完成。如果所有的任务都成功完成,则 Job 的状态将被标记为成功。如果任何一个任务失败,则 Job 的状态将被标记为失败。

Job 使用一个或多个 Pod 来执行任务,并通过 Pod 的数量来决定任务的并行性。可以使用控制器(如 CronJob)来调度 Job 的运行时间,并可以使用 Pod 模板来定义 Job 中运行的任务。

Job基本样例

以下是 kind 类型为 Job 的 YAML 编写示例:

apiVersion: batch/v1
kind: Job
metadata:
  name: my-job
spec:
  template:
    spec:
      containers:
        - name: my-container
          image: my-image
          command:
            - "echo"
            - "Hello, World!"
      restartPolicy: OnFailure

常见关键字说明

  • apiVersionbatch/v1,指定使用的 API 版本。
  • kindJob,定义资源类型为 Job。
  • metadata: 元数据,包括 Job 的名称。
  • spec: Job 的规范,包含以下关键字:
    • template: 定义 Job 中用于创建 Pod 的模板。
      • spec: Pod 的规范,与 Pod 的 YAML 定义相同。
      • spec.template.spec.containers: Pod 中的容器列表,定义要运行的容器和相关信息。
      • spec.template.spec.containers[].name: 容器的名称。
      • spec.template.spec.containers[].image: 容器的镜像。
      • spec.template.spec.containers[].command: 容器的命令和参数。
      • spec.template.spec.restartPolicy: Pod 中容器的重启策略,可选值为 AlwaysOnFailure 或 Never

以上示例展示了一个简单的 Job,它创建一个包含一个容器的 Pod,在容器中执行命令打印 “Hello, World!”。你可以根据实际需求来自定义和扩展。

扩展关键字及举例

除了上述提到的关键字,还有一些其他常用的关键字可以在 Job 的 YAML 中添加,以下是一些示例:

  • metadata.namespace: 指定 Job 所属的命名空间。
apiVersion: batch/v1
kind: Job
metadata:
  name: my-job
  namespace: my-namespace
spec:
  template:
    spec:
      # ...
  • spec.completions: 定义 Job 需要成功完成的 Pod 的个数,默认值为 1。
apiVersion: batch/v1
kind: Job
metadata:
  name: my-job
spec:
  completions: 2
  template:
    spec:
      # ...
  • spec.parallelism: 定义同时进行的 Pod 的最大数量,默认值为 1。
apiVersion: batch/v1
kind: Job
metadata:
  name: my-job
spec:
  parallelism: 3
  template:
    spec:
      # ...
  • spec.backoffLimit: 定义当 Job 失败并且达到重试次数上限时的行为,默认值为 6。
apiVersion: batch/v1
kind: Job
metadata:
  name: my-job
spec:
  backoffLimit: 3
  template:
    spec:
      # ...
  • spec.activeDeadlineSeconds: 定义 Job 的最长执行时间,超过此时间将被终止并认为是失败,默认值为 3600 秒。
apiVersion: batch/v1
kind: Job
metadata:
  name: my-job
spec:
  activeDeadlineSeconds: 1800
  template:
    spec:
      # ...
  • spec.ttlSecondsAfterFinished: 定义 Job 完成后保留的时间,默认值为 nil(保留 Job)。
apiVersion: batch/v1
kind: Job
metadata:
  name: my-job
spec:
  ttlSecondsAfterFinished: 3600
  template:
    spec:
      # ...

这些关键字可以根据实际需求来设置和调整 Job 的行为和配置,从而满足特定的业务需求。

CronJob基本说明

在 Kubernetes 中,CronJob 是一种用于定期运行任务的资源对象。它继承自 Kubernetes 的 Job 对象,可以按照 Cron 表达式指定的时间计划运行 Jobs。

CronJob 的特点包括:

  1. 定期执行:CronJob 可以按照 Cron 表达式指定的时间周期性地调度 Job 的运行。Cron 表达式语法可以很容易地指定要运行的时间和日期,例如每天 8 点运行任务或者每周五下午 5 点运行任务等。

  2. 任务运行:CronJob 创建 Job 对象来运行一次性任务。它们的表现就像执行单次任务的 Job。任务并行性可以通过设置 spec.parallelism 字段指定。

  3. 处理 Job 运行:CronJob 可以根据不同的策略,如 spec.concurrencyPolicy,处理 Job 运行和完成情况。CronJob 还会保存成功完成 Job 的历史纪录,以及保留失败 Job 的日志。

CronJob基本样例

kind 类型为 CronJob 和 Job 的 YAML 编写示例,以及常见关键字的说明:

  1. CronJob 的 YAML 示例:
apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: my-cronjob
spec:
  schedule: "*/1 * * * *"
  jobTemplate:
    spec:
      template:
        spec:
          containers:
            - name: my-container
              image: my-image
          restartPolicy: OnFailure

常见关键字说明

  • apiVersionbatch/v1beta1,指定使用的 API 版本。
  • kindCronJob,定义资源类型为 CronJob。
  • metadata: 元数据,包括 CronJob 的名称。
  • spec: CronJob 的规范,包含以下关键字:
    • schedule: 定义 CronJob 的调度规则。示例中的 */1 * * * * 表示每分钟执行一次。
    • jobTemplate: 定义生成的 Job 的模板。
      • spec: Job 的规范,与 Job 的 YAML 定义相同。

补充:Crontab表达式

Crontab的语法规则格式

Crontab规则由五个时间字段和一个命令字段组成,每个字段之间由空格或制表符分隔。

代表意义    分钟      小时    日期      月份     周      命令
数字范围    0~59    0~23    1~31    1~12    0~7    需要执行的命令

在这些时间字段中,您可以使用以下特殊字符:

  • 星号(*):表示匹配所有可能的值。例如,"*"在分钟字段中表示每分钟。
  • 逗号(,):用于指定多个值。例如,"1,3,5"在小时字段中表示1点、3点和5点。
  • 连字符(-):用于指定一个范围。例如,"10-15"在分钟字段中表示从10到15分钟。
  • 斜杠(/):用于指定一个步长。例如,"*/5"在分钟字段中表示每隔5分钟。
  • @符号:用于指定一些特定的预定义值,如"@reboot"表示在系统启动时执行任务。

参考

https://blog.csdn.net/m0_61452396/article/details/131270621

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

软件测试|使用Pytest、Allure Step和Allure Attach创建详细测试报告

引言 在软件开发过程中,测试是不可或缺的一部分。为了更好地展示测试结果并定位问题,结合Pytest测试框架和Allure测试报告工具可以创建清晰、详细的测试报告。本文将介绍如何使用Pytest、Allure的allure.step()和allure.attach()功能来创建具有丰富信息…

AI嵌入式K210项目(2)-开发环境搭建

文章目录 前言windows开发环境(vscode)VSCode下载安装CMake下载安装交叉编译器Toolchain下载安装SDK下载安装Kflash下载安装镜像烧录 总结 前言 该教程先介绍使用C语言进行裸机开发,完成这一部分的学习之后在介绍如何使用MicroPython进行开发…

Django 框架添加管理员,完成对普通用户信息管理

前情回顾:Django框架 完成用户登录注册 文章目录 1.创建管理员2.完善管理员功能2.1增加管理员登录功能2.2完善展示用户信息功能2.3完善修改用户信息功能2.4完善删除用户信息功能 1.创建管理员 一般管理员都是直接指定,不开放页面注册,可以直…

工程机械比例阀电流采集方案——IPEhub2与IPEmotion APP

自从国家实施一带一路和新基建计划以来,工程机械的需求量呈现出快速增长的趋势。而关于工程机械,其比例阀的控制问题不容忽视。比例阀是一种新型的液压控制装置——在普通压力阀、流量阀和方向阀上,用比例电磁铁替代原有的控制部分&#xff0…

大创项目推荐 深度学习机器视觉车道线识别与检测 -自动驾驶

文章目录 1 前言2 先上成果3 车道线4 问题抽象(建立模型)5 帧掩码(Frame Mask)6 车道检测的图像预处理7 图像阈值化8 霍夫线变换9 实现车道检测9.1 帧掩码创建9.2 图像预处理9.2.1 图像阈值化9.2.2 霍夫线变换 最后 1 前言 🔥 优质竞赛项目系列,今天要分…

C++ λ表达式

λ表达式提供了函数对象的另一种编程机制。 在 C 11 和更高版本中,Lambda 表达式(通常称为 Lambda)是一种在被调用的位置或作为参数传递给函数的位置定义匿名函数对象(闭包)的简便方法。 Lambda 通常用于封装传递给算法…

LLVM的安装步骤实战

目录 1. 准备环境 1.1 安装必备软件包 1.2 配置Git 2. 用CMake构建 2.1 克隆代码库 2.2 创建构建目录 2.3 生成构建系统文件 3. 自定义构建 3.1 CMake定义的变量 3.2 LLVM定义的变量 4. 总结 1. 准备环境 首先操作系统可以是Linux、FreeBSD、macOS或Windows。 同…

Python基础(二十四、JSON和pyecharts)

文章目录 一、JSON1.JSON介绍2.JSON格式数据转化3.示例 二、pyecharts1.安装pyecharts包2.查看官方示例 三、开发示例 一、JSON 1.JSON介绍 JSON是一种轻量级的数据交互格式,采用完全独立于编程语言的文本格式来存储和表示数据(就是字符串)…

邻接矩阵、可达性矩阵、完全关联矩阵、可达性矩阵的计算

邻接矩阵:很简单,就是两个点有关系就是1,没有关系就是0 可达性矩阵:非常简单,两点之间有路为1,没有路为0 可发行矩阵的计算:有n个元素,初始可达性矩阵为A,那么最终的矩阵…

实战环境搭建-linux下安装tomcat

安装tomcat Index of /dist/tomcat/tomcat-9/v9.0.8/bin 下载apache-tomcat-9.0.8.tar.gz,可以使用wget; 2、将压缩包tar -zxvf apache-tomcat-9.0.8.tar.gz解压到/home/tomcat 3、修改环境变量 vi /etc/profile export JAVA_HOME/home/java/jdk1.8.0_221 expo…

C++ 深度优先搜索DFS || 模版题:排列数字

给定一个整数 n ,将数字 1∼n 排成一排,将会有很多种排列方法。 现在,请你按照字典序将所有的排列方法输出。 输入格式 共一行,包含一个整数 n 。 输出格式 按字典序输出所有排列方案,每个方案占一行。 数据范围 1…

力扣热题 100

文章目录 哈希双指针滑动窗口子串普通数组矩阵链表二叉树图论回溯二分查找栈堆贪心算法动态规划多维动态规划技巧 哈希 双指针 移动零 class Solution {public void moveZeroes(int[] nums) {int k 0;for(int i 0;i < nums.length; i){if(nums[i] ! 0) {nums[k] nums[…

行为型设计模式——策略模式

策略模式 策略模式非常简单&#xff0c;只需要将策略或者某个算法定义成一个类&#xff0c;然后传给需要使用的对象即可。**定义&#xff1a;**该模式定义了一系列算法&#xff0c;并将每个算法封装起来&#xff0c;使它们可以相互替换&#xff0c;且算法的变化不会影响使用算…

【ITK库学习】使用itk库进行图像分割(四):水平集分割

目录 1、水平集2、itkFastMarchingImageFilter 快速步进分割3、itkShapeDetectionLevelSetImageFilter 快速步进分割 1、水平集 水平集是跟踪轮廓和表面运动的一种数字化方法。基于图像的亮度均值、梯度、边缘特征的微分计算&#xff0c;进行水平集分割。在itk中&#xff0c;所…

1.10 Unity中的数据存储 JSON

一、介绍 Json是最常用也是目前用的比较多的一种&#xff0c;超轻量级&#xff0c;可便捷性使用&#xff0c;平时用到比较多的都是解析Json和往Json中添加数据、修改数据等等JSON(JavaScript Object Notation,JS对象标记)是一种轻量级的数据交换格式&#xff0c;它基于ECMAScr…

git 使用 submodule 如何指定分支

写在前面, 作为一个前端我是不喜欢使用 submodule的, 我更喜欢 npm 包的管理方式。 首次添加子模块 git submodule add -b <branch> <remote> <path> 不指定分支就不传 -b <branch> <branch> 分支名<remote> 仓库地址<path> 子模块…

Unity中URP下抓屏的 开启 和 使用

文章目录 前言一、抓屏开启1、Unity下开启抓屏2、Shader中开启抓屏 二、抓屏使用1、设置为半透明渲染队列&#xff0c;关闭深度写入2、申明纹理和采样器3、在片元着色器使用请添加图片描述 三、测试代码 前言 我们在这篇文章中看一下&#xff0c;URP下怎么开启抓屏。 一、抓屏…

兴业证券分布式数据库云应用实践

数据库技术作为信息技术应用创新过程中的一项重要技术&#xff0c;其面临的难题也是亟需解决的关键问题。兴业证券在《集团五年金融科技规划》中提出&#xff0c;要以信息技术应用创新架构评审为抓手&#xff0c;制定信息技术应用创新规划和建设方案&#xff0c;以高可用性、开…

LeetCode+ 56 - 60

合并区间 双指针算法、位运算、离散化、区间合并_小雪菜本菜的博客-CSDN博客 class Solution { public:vector<vector<int>> merge(vector<vector<int>>& a) {vector<vector<int>> res;if(a.empty()) return res;sort(a.begin(),a.en…

10款强大的iPhone微信恢复软件:轻松恢复丢失的微信数据

微信已成为近年来最受欢迎的消息和社交媒体平台之一。它在全球拥有数百万用户&#xff0c;让人们能够联系、分享时刻并进行各种交易。随着微信的普及&#xff0c;对全面恢复解决方案的需求从未如此之大。本文探讨了专为 iPhone 用户设计的十款顶级微信恢复软件选项。每个软件都…