Job 和 DaemonSet
一、Job
1、Job 背景问题
K8s 里,最小的调度单元是 Pod,如果直接通过 Pod 来运行任务进程,会产生以下几种问题:
① 如何保证 Pod 内进程正确的结束?
② 如何保证进程运行失败后重试?
③ 如何管理多个任务,且任务之间有依赖关系?
④ 如何并行地运行任务,并管理任务的队列大小?
2、Job:管理任务的控制器
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
1、DaemonSet 背景问题
如何保证每个节点都运行一个pod?
如果新节点加入集群,如何感知并部署对应的Pod?
如果有节点退出,如何删除对应的Pod?
如果Pod状态异常,如何监控并恢复Pod的状态 ?
2、DaemonSet 功能:
保证集群内每一个(或者一些)节点都运行一组相同的 Pod;
跟踪集群节点状态,保证新加入的节点自动创建对应的 Pod;
跟踪集群节点状态,保证移除的节点删除对应的 Pod;
跟踪 Pod 状态,保证每个节点 Pod 处于运行状态。
3、DaemonSet 语法:
(1) 查看 DaemonSet 状态:
创建完 DaemonSet 之后,我们可以使用 kubectl get DaemonSet(DaemonSet 缩写为 ds)
(2) 更新 DaemonSet:
DaemonSet 有两种更新策略:一个是 RollingUpdate,另一个是 OnDelete。
相关文章:

Job 和 DaemonSet
一、Job 1、Job 背景问题 K8s 里,最小的调度单元是 Pod,如果直接通过 Pod 来运行任务进程,会产生以下几种问题: ① 如何保证 Pod 内进程正确的结束? ② 如何保证进程运行失败后重试? ③ 如何管理多个任…...

C++ 二维前缀和 子矩阵的和
输入一个 n 行 m 列的整数矩阵,再输入 q 个询问,每个询问包含四个整数 x1,y1,x2,y2 ,表示一个子矩阵的左上角坐标和右下角坐标。 对于每个询问输出子矩阵中所有数的和。 输入格式 第一行包含三个整数 n,m,q 。 接下…...

第六届计算机科学与技术在教育中的应用国际会议(CSTE 2024)
2024年第六届计算机科学与技术在教育中的应用国际会议(CSTE 2024)将于4月19-21日在中国西安举行。此次会议由陕西师范大学主办,陕西师范大学教育学部承办。在前五届成功举办的基础上,CSTE 2024将继续关注计算机科学与技术在教育领…...

Vue3学习——标签的ref属性
在HTML标签上,可以使用相同的ref名称,得到DOM元素ref放在组件上时,拿到的是组件实例(组件defineExpose暴露谁,ref才可以看到谁) <script setup lang"ts"> import RefPractice from /compo…...

数字化转型导师坚鹏:政府数字化转型之数字化技术
政府数字化转型之数字化技术 ——物联网、云计算、大数据、人工智能、虚拟现实、区块链、数字孪生、元宇宙等综合解析及应用 课程背景: 数字化背景下,很多政府存在以下问题: 不清楚新技术的发展现状? 不清楚新技术的重要应…...
go build
go build 作用:将Go语言程序和相关依赖编译成可执行文件 go build 无参数编译 生成当前目录名的可执行文件并放置于当前目录下,如: go build go build文件列表 编译同目录的多个源码文件时,可以在 go build 的后面提供多个文件…...

力扣238和169
一:238. 除自身以外数组的乘积 1.1题目 1.2思路 1.3代码 //左右乘表 int* productExceptSelf(int* nums, int numsSize, int* returnSize) {int* answer (int*)malloc(numsSize*sizeof(int));int i 0;int left[numsSize],right[numsSize];left[0] 1;for(i 1;…...

Android 基础技术——Framework
笔者希望做一个系列,整理 Android 基础技术,本章是关于 Framework 简述 Android 系统启动流程 当按电源键触发开机,首先会从 ROM 中预定义的地方加载引导程序 BootLoader 到 RAM 中,并执行 BootLoader 程序启动 Linux Kernel&…...
JavaWeb 中的静态资源访问
文章目录 JavaWeb 中的静态资源访问1. Tomcat 中的两个默认 ServletJSPServletDefaultServlet配置引起的 bug情况一情况二情况三 2. 总结3. 如何允许静态资源访问 JavaWeb 中的静态资源访问 1. Tomcat 中的两个默认 Servlet Tomcat 有两个默认的 Servlet,你的 Web…...
asp.net web api 用户身份验证
前后端分离的开发中,应用服务需要进行用户身份的验证才允许访问数据。实现的方法很简单。创建一个webapi项目。在App_Start目录下找到WebApiConfig.cs, 在里面增加一个实现类。 public static class WebApiConfig{public static void Register(HttpConfi…...
3DTile是不是没有坐标的选择?
可参考以下内容: 一、坐标参考系统(CRS) 3D Tiles 使用右手笛卡尔坐标系;也就是说,x和y的叉积产生z。3D Tiles 将z轴定义为局部笛卡尔坐标系的向上。tileset的全局坐标系通常位于WGS 84地心固定(ECEF)参考系(EPSG4978)中,但它不是必须的&am…...

数据采集三防平板丨三防平板电脑丨停车场应用
随着现代科技的不断发展,三防平板已经成为许多人工作和生活的必备工具。在停车场这个场景中,三防平板的应用可以大大提高停车场管理的效率和安全性。 停车场是现代城市交通管理的重要组成部分,它直接关系到城市交通的流畅和公共安全。停车场…...

解决git push时的too_many_commits提示
解决git push时的too_many_commits提示 提示内容 push时报错如下: Sorry, you were trying to upload xxxxxx commits in one push 原因分析 这个应该是因为在提交规则里配置了 一次只允许提交一个 commit,这样当 icode 上有 commit 没有合入时&…...

GPT-4助力我们突破思维定势
GPT-4在突破思维局限、激发灵感和促进知识交叉融合方面的作用不可小觑,它正逐渐成为一种有力的工具,助力各行业和研究领域的创新与发展。 GPT-4在突破传统思维模式、拓宽创新视野和促进跨学科知识融合方面扮演着越来越重要的角色: 突破思维…...
【前端工程化面试题】什么是 CI/CD
CI/CD 是软件开发中的两个重要实践,分别代表持续集成(Continuous Integration)和持续交付/持续部署(Continuous Delivery/Continuous Deployment)。 持续集成 (Continuous Integration, CI):持续集成是一种…...

kafka的安装,用于数据库同步数据
1.0 背景调研 因业务需求,需要查询其他部门的数据库数据,不方便直连数据库,所以要定时将他们的数据同步到我们的环境中,技术选型选中了kafkaCDC Kafka是Apache旗下的一款分布式流媒体平台,Kafka是一种高吞吐量、持久…...
Bean 的作用域你知道么 ?
Bean 的作用域有哪些? 所谓的作用域,其实就是说这个东西在哪个范围内可以被使用 , 如我们定义类的成员变量的时候使用的public,private等这些也是作用域的概念 Spring的Bean的作用域, 描述的就是这个Bean在哪个范围内可以被使用. 不同的作用域决定了Bean的创建, 管理和销毁的…...

Windows 使设置更改立即生效——并行发送广播消息
目录 前言 1 遍历窗口句柄列表 2 使用 SendMessageTimeout 发送延时消息 3 并行发送消息实现模拟广播消息 4 修改 UIPI 消息过滤器设置 5 托盘图标刷新的处理 6 完整代码和测试 本文属于原创文章,转载请注明出处: https://blog.csdn.net/qq_5907…...

PostgreSQL使用session_exec和file_fdw实现失败次数锁定用户策略
使用session_exec 、file_fdw以及自定义函数实现该功能。 缺陷:实测发现锁用户后,进去解锁特定用户。只能允许一次登陆,应该再次登陆的时候,触发函数,把之前的日志里的错误登陆的信息也计算到登录次数里了。而且foreig…...

Jmeter实现阶梯式线程增加的压测
安装相应jmeter 插件 1:安装jmeter 管理插件: 下载地址:https://jmeter-plugins.org/install/Install/,将下载下来的jar包放到jmeter文件夹下的lib/ext路径下,然后重启jmeter。 2:接着打开 选项-Plugins Ma…...
Vim 调用外部命令学习笔记
Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...

UE5 学习系列(三)创建和移动物体
这篇博客是该系列的第三篇,是在之前两篇博客的基础上展开,主要介绍如何在操作界面中创建和拖动物体,这篇博客跟随的视频链接如下: B 站视频:s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...
【C语言练习】080. 使用C语言实现简单的数据库操作
080. 使用C语言实现简单的数据库操作 080. 使用C语言实现简单的数据库操作使用原生APIODBC接口第三方库ORM框架文件模拟1. 安装SQLite2. 示例代码:使用SQLite创建数据库、表和插入数据3. 编译和运行4. 示例运行输出:5. 注意事项6. 总结080. 使用C语言实现简单的数据库操作 在…...

tree 树组件大数据卡顿问题优化
问题背景 项目中有用到树组件用来做文件目录,但是由于这个树组件的节点越来越多,导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多,导致的浏览器卡顿,这里很明显就需要用到虚拟列表的技术&…...

分布式增量爬虫实现方案
之前我们在讨论的是分布式爬虫如何实现增量爬取。增量爬虫的目标是只爬取新产生或发生变化的页面,避免重复抓取,以节省资源和时间。 在分布式环境下,增量爬虫的实现需要考虑多个爬虫节点之间的协调和去重。 另一种思路:将增量判…...
React---day11
14.4 react-redux第三方库 提供connect、thunk之类的函数 以获取一个banner数据为例子 store: 我们在使用异步的时候理应是要使用中间件的,但是configureStore 已经自动集成了 redux-thunk,注意action里面要返回函数 import { configureS…...

技术栈RabbitMq的介绍和使用
目录 1. 什么是消息队列?2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...

回溯算法学习
一、电话号码的字母组合 import java.util.ArrayList; import java.util.List;import javax.management.loading.PrivateClassLoader;public class letterCombinations {private static final String[] KEYPAD {"", //0"", //1"abc", //2"…...

RabbitMQ入门4.1.0版本(基于java、SpringBoot操作)
RabbitMQ 一、RabbitMQ概述 RabbitMQ RabbitMQ最初由LShift和CohesiveFT于2007年开发,后来由Pivotal Software Inc.(现为VMware子公司)接管。RabbitMQ 是一个开源的消息代理和队列服务器,用 Erlang 语言编写。广泛应用于各种分布…...

wpf在image控件上快速显示内存图像
wpf在image控件上快速显示内存图像https://www.cnblogs.com/haodafeng/p/10431387.html 如果你在寻找能够快速在image控件刷新大图像(比如分辨率3000*3000的图像)的办法,尤其是想把内存中的裸数据(只有图像的数据,不包…...