Job 和 DaemonSet

2024-02-21 18:36
文章标签 job daemonset

本文主要是介绍Job 和 DaemonSet,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、Job

1Job 背景问题

K8s 里,最小的调度单元是 Pod,如果直接通过 Pod 来运行任务进程,会产生以下几种问题:

如何保证 Pod 内进程正确的结束?

如何保证进程运行失败后重试?

如何管理多个任务,且任务之间有依赖关系?

如何并行地运行任务,并管理任务的队列大小?

2Job:管理任务的控制器

Kubernetes 的 Job 为我们提供了什么功能:

创建一个或多个Pod确保指定数量的Pod可以成功地运行终止;

跟踪Pod状态,根据配置及时重试失败的 Pod;

确定依赖关系,保证上一个任务运行完毕后再运行下一个任务;

控制任务并行度,并根据配置确保Pod 队列大小。

3、Job 解读:

(1) Job 语法:

① metadata 里面的 name 指定这个 Job 的名称,spec.template 是 pod 的 spec。

② restartPolicy 重启策略:

在 Job 里面可以设置 Never、OnFailure、Always 这三种重试策略。

Never 表示不会重启 Pod,即使 Pod 失败也不会重启。

OnFailure 表示只有在 Pod 失败时才会重启。

Always 表示无论何时,都会尝试重启 Pod,即使它已经成功运行。

③ backoffLimit 重试次数限制:

Job 在运行的时候不可能去无限的重试,需要一个参数来控制重试的次数。backoffLimit 就是来保证一个 Job 到底能重试多少次。

(2) 查看 Job 状态:

Job 创建完成之后,可以通过 kubectl get jobs 这个命令,查看当前 job 的运行状态。

(3) 查看 Pod:

通过 Job 创建出来的 Pod 比普通的 Pod 多了一个 ownerReferences,用来声明此 pod 是归哪个上一层 controller 来管理。可以通过 pod 返查到它的控制器是谁,同时也能根据 Job 来查一下它下属有哪些 Pod。

(4) 并行 Job:

Job 控制器可以并行出 n 个 Pod 去快速地执行,同时设置并行度。

主要看两个参数:一个是 completions,一个是 parallelism。

第一个参数是用来指定 Pod 队列执行次数。可以把它认为是这个 Job 指定的可以运行的总次数。比如这里设置成 8,即这个任务一共会被执行 8 次。

第二个参数代表这个并行执行的个数。所谓并行执行的次数,就是一个管道或者缓冲器中缓冲队列的大小,把它设置成 2,就是说这个 Job 要执行 8 次,每次并行 2 个 Pod,这样的话,一共会执行 4 个批次。

(5) Cronjob

CronJob,也叫定时运行 Job。它可以设计一个时间决定 Job 在几点几分执行。

① schedule:这个字段主要设置时间格式。

② startingDeadlineSeconds:每次运行 Job 的时候,它最长可以等多长时间,如果超过时间,CronJob 就会停止这个 Job。

③ concurrencyPolicy:是否允许并行运行。如果这个 policy 设置为 true 的话,不管前面的 Job 是否运行完成,下一个 Job 都会去执行;如果是 false,它就会等上一个 Job 运行完成之后才会运行下一个。

④ JobsHistoryLimit:每一次 CronJob 运行完之后,它都会遗留上一个 Job 的运行历史、查看时间。可以根据需要设置历史存留数,一般可以设置默认 10 个或 100 个。

二、DaemonSet

1DaemonSet 背景问题

如何保证每个节点都运行一个pod?

如果新节点加入集群,如何感知并部署对应的Pod?

如果有节点退出,如何删除对应的Pod?

如果Pod状态异常,如何监控并恢复Pod的状态 ?

2DaemonSet 功能:

保证集群内每一个(或者一些)节点都运行一组相同的 Pod;

跟踪集群节点状态,保证新加入的节点自动创建对应的 Pod;

跟踪集群节点状态,保证移除的节点删除对应的 Pod;

跟踪 Pod 状态,保证每个节点 Pod 处于运行状态。

3、DaemonSet 语法:

(1) 查看 DaemonSet 状态:

创建完 DaemonSet 之后,我们可以使用 kubectl get DaemonSet(DaemonSet 缩写为 ds)

(2) 更新 DaemonSet:

DaemonSet 有两种更新策略:一个是 RollingUpdate,另一个是 OnDelete

这篇关于Job 和 DaemonSet的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/732697

相关文章

springboot整合 xxl-job及使用步骤

《springboot整合xxl-job及使用步骤》XXL-JOB是一个分布式任务调度平台,用于解决分布式系统中的任务调度和管理问题,文章详细介绍了XXL-JOB的架构,包括调度中心、执行器和Web... 目录一、xxl-job是什么二、使用步骤1. 下载并运行管理端代码2. 访问管理页面,确认是否启动成功

XXL-JOB实践:从零开始构建你的任务调度系统

目录 一、序言1、系统组成2、架构图 二、部署调度中心1、下载源码2、执行数据库脚本3、修改application.properties配置文件4、启动调度中心 三、部署执行器1、引入依赖2、执行器配置2.1 XxlJobProperties属性文件2.2 XxlJobConfig配置类2.3 XxlJobHanlder作业处理器2.4 application.yml 3、启动执行器 四、调

XXL-JOB分布式任务调度教程(持续更新~)

先大致声明一下流程(具体细节在下面哦~)  步骤: 1.下载xxl-job并配置以及启动 2.导入对应maven坐标 3.配置对应的配置文件以及编写对应的配置类config 4.编写要触发的方法并且给方法打上@XXlJob("")注解 5.设置xxl-Job平台上的任务    5.1创建执行器  5.2创建任务,5,3配置任务具体细节(比如  (1触发执行器,(2执行时间,(3运行模式,(4以

App使用Job中遇到的WAIT DEV_NOT_DOZING的解决方案

摘要: 由于原生Job机制会使用Doze的白名单,故遇到WAIT:DEV_NOT_DOZING现象,一般配置为Whitelist user apps名单即可解决问题 Doze名单类型 配置对象 配置方法 影响 Whitelist user apps 第三方应用 1.Adb shell 命令:adb shell dumpsys deviceidle whitelist +com.t

如何解决XXL-JOB依赖包冲突导致的`XxlJobSpringExecutor`类找不到问题

如何解决XXL-JOB依赖包冲突导致的XxlJobSpringExecutor类找不到问题 在Java项目开发中,依赖包冲突是一个常见问题,尤其是在多个项目之间存在传递性依赖的情况下。本文将以XXL-JOB项目中的 XxlJobSpringExecutor 类找不到为例,介绍如何在依赖冲突场景下排查并解决问题。 问题背景 我们在项目A中使用了XXL-JOB进行任务调度,项目A依赖于项目B,而

专访当当网张亮:深度解读分布式作业调度框架elastic-job

摘要:日前,笔者采访了当当网架构师、当当技术委员会成员张亮,在本次采访中他主要分享了对架构师的理解,以及重点解读了分布式作业调度框架elastic-job是什么、架构设计思路、具体模块的底层及如何实现等。 【编者按】互联网从诞生到现在,网站的规模不断扩大,存储和处理的数据量也远远超出了人们的想象,又随着对信息实时性、多媒体需求大幅增长的现象,互联网架构面临越来越大的挑战。CSDN致力于

搭建 xxl-job 执行器项目

文章目录 1、添加xxl-job-core依赖2、修改执行器配置3、添加执行器配置类4、给执行器添加任务 1、添加xxl-job-core依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><

xxl-job介绍

文章目录 1、现有的定时任务存在缺点:2、分布式定时任务xxl-Job3、项目结构 1、现有的定时任务存在缺点: 定时任务和触发机制耦合(使用xxl-job统一定义任务及管理任务,任务代码和触发机制解耦合)修改触发机制需要重启(使用xxl-job统一配置不重启)不具备分布式 2、分布式定时任务xxl-Job xxl(作者:许雪里)官方网站:https://www.xuxuel

《花100块做个摸鱼小网站! 》第五篇—通过xxl-job定时获取热搜数据

⭐️基础链接导航⭐️ 服务器 → ☁️ 阿里云活动地址 看样例 → 🐟 摸鱼小网站地址 学代码 → 💻 源码库地址 一、前言 我们已经成功实现了一个完整的热搜组件,从后端到前端,构建了这个小网站的核心功能。接下来,我们将不断完善其功能,使其更加美观和实用。今天的主题是如何定时获取热搜数据。如果热搜数据无法定时更新,小网站将失去其核心价值。之前,我采用了@Scheduled注解来实现定

git pull失败提示fatal: Unable to create 'E:/job/tpaas-web/.git/index.lock': File exists.

git 提交时失败   提示如下错误:fatal: Unable to create 'E:/job/tpaas-web/.git/index.lock': File exists.   解决方法:删除.lock文件       rm -f ./.git/index.lock 命令执行后再次pull