K8S中Pod控制器之Job控制器

embedded/2025/1/23 3:42:53/

Job,主要用于负责批量处理(一次要处理指定数量任务)短暂的一次性(每个任务仅运行一次就结束)任务。

  • 一次性任务:Job 用于运行那些只需要执行一次的任务,如数据分析、图像渲染或批量处理。

  • 成功终止:Job 会跟踪其创建的 Pod 的成功完成(成功退出,退出状态为 0)的数量。

  • 指定完成数量:Job 有一个目标完成数量,当成功结束的 Pod 数量达到这个指定的数量时,Job 就会完成。

  • 并行处理:Job 可以配置并行性,即同时运行多个 Pod 来加速处理过程。Kubernetes 会尝试以最大并行数启动 Pod,直到达到所需的成功完成 Pod 的数量。

  • 重启策略:Job 的重启策略通常设置为 OnFailure,这意味着如果 Pod 失败(非零退出状态),它将被重启。

  • 自动清理:一旦 Job 完成,即成功结束的 Pod 数量达到指定的目标,Kubernetes 将自动清理与该 Job 相关的所有资源。

  • 回退机制:如果 Pod 由于某种原因(如节点故障)未能成功完成,Job 可以配置以重新创建并启动新的 Pod 来替换失败的 Pod。

  • 监控和日志:Job 可以与 Kubernetes 的日志和监控系统集成,以便于跟踪作业的执行状态和历史。

Job的资源清单文件

---
apiVersion: batch/v1 # 版本号
kind: Job # 类型
metadata: # 元数据name: # rs名称namespace: # 所属命名空间labels: # 标签controller: job
spec: # 详情描述completions: 1 # 指定job需要成功运行Pods的次数。默认值: 1parallelism: 1 # 指定job在任一时刻应该并发运行Pods的数量。默认值: 1activeDeadlineSeconds: 30 # 指定job可运行的时间期限,超过时间还未结束,系统将会尝试进行终止。backoffLimit: 6 # 指定job失败后进行重试的次数。默认是6manualSelector: true # 是否可以使用selector选择器选择pod,默认是falseselector: # 选择器,通过它指定该控制器管理哪些podmatchLabels: # Labels匹配规则app: counter-podmatchExpressions: # Expressions匹配规则- key: appoperator: Invalues: [counter-pod]template: # 模板,当副本数量不足时,会根据下面的模板创建pod副本metadata:labels:app: counter-podspec:restartPolicy: Never # 重启策略只能设置为Never或者OnFailurecontainers:- name: counterimage: busybox:1.30command: ["bin/sh","-c","for i in 9 8 7 6 5 4 3 2 1; do echo $i;sleep 2;done"]

 

在 Kubernetes 中,Job 控制器的重启策略与 Pod 的重启策略是不同的。Job 本身并不控制容器的重启,而是控制着生成新 Pod 的行为。以下是 Job 控制器与重启策略相关的正确说明:

  • OnFailure:这是 Job 的默认重启策略。当 Pod 由于容器故障而失败时(比如退出状态非零),Job 会认为这是一个失败,失败次数会增加,并且 Job 会创建一个新的 Pod 来替换失败的 Pod。这意味着任务会重试,直到成功完成。

  • Never:如果将重启策略设置为 Never,当 Pod 失败时,Job 不会创建新的 Pod 来替换它,失败的 Pod 将保留在系统中,并且失败次数会增加。这种策略通常用于调试,以便可以检查失败的 Pod 的状态和日志。

  • Always:这个选项对于 Pod 的重启策略是有意义的,但对于 Job 控制器来说,并不适用。Job 控制器不负责重启容器,它负责的是生成新的 Pod。如果 Pod 的重启策略设置为 Always,无论何时容器退出,Kubernetes 都会重启该容器,而与 Job 控制器无关。

创建Job控制器

^C[root@k8s-master ~]# cat pc-job.yaml 
---
apiVersion: batch/v1
kind: Job
metadata:name: pc-jobnamespace: test
spec:manualSelector: trueselector:matchLabels:app: counter-pod  # 确保这个与 template 中的 labels 匹配template:metadata:labels:app: counter-pod  # 这里的 labels 需要与 selector 的 matchLabels 对应spec:restartPolicy: Nevercontainers:- name: counterimage: busybox:1.30command: ["/bin/sh", "-c", "for i in 9 8 7 6 5 4 3 2 1; do echo $i; sleep 3; done"]
[root@k8s-master ~]# 

查看job

[root@k8s-master ~]# kubectl get job -n test -o wide -w
NAME     COMPLETIONS   DURATION   AGE   CONTAINERS   IMAGES         SELECTOR
pc-job   0/1           2s         2s    counter      busybox:1.30   app=counter-pod
pc-job   1/1           43s        43s   counter      busybox:1.30   app=counter-pod

查看pod

可以看的pod在启动成功之后就变为completed状态

[root@k8s-master ~]# kubectl get pods -n test -w
NAME                 READY   STATUS    RESTARTS   AGE
pc-daemonset-9vwvd   1/1     Running   0          24m
pc-daemonset-drdt5   1/1     Running   0          24m
pc-job-dhgqw         1/1     Running   0          41s
pc-job-dhgqw         0/1     Completed   0          43s
pc-job-dhgqw         0/1     Completed   0          43s

 


http://www.ppmy.cn/embedded/156217.html

相关文章

【网络协议】【http】【https】TLS1.3

【网络协议】【http】【https】TLS1.3 TLS1.3它的签名算法和密钥交换算法,默认情况下是被固定了下来的,他的加密套件里面呢,只包含了对称加密算法和摘要算法 客户端和服务器第一次连接 仍然需要1RTT ,不能0-RTT 第一次连接 1.客…

基于微信小程序教学辅助系统设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。 技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:…

SSM旅游信息管理系统

🍅点赞收藏关注 → 添加文档最下方联系方式可咨询本源代码、数据库🍅 本人在Java毕业设计领域有多年的经验,陆续会更新更多优质的Java实战项目希望你能有所收获,少走一些弯路。🍅关注我不迷路🍅 项目视频 …

Unity通过脚本对指定物体进行指定脚本的挂载,并初始化挂载脚本中变量

using System.Collections; using System.Collections.Generic; using Unity.XR.CoreUtils; using UnityEditor; using UnityEngine;public class AutoDetectScript : MonoBehaviour {public GameObject[] games; //[ContextMenu("一键挂载脚本")]public void UpScri…

C语言程序设计十大排序—冒泡排序

文章目录 1.概念✅2.冒泡排序🎈3.代码实现✅3.1 直接写✨3.2 函数✨ 4.总结✅ 1.概念✅ 排序是数据处理的基本操作之一,每次算法竞赛都很多题目用到排序。排序算法是计算机科学中基础且常用的算法,排序后的数据更易于处理和查找。在计算机发展…

模板编辑器(PHP)(小迪网络安全笔记~

免责声明:本文章仅用于交流学习,因文章内容而产生的任何违法&未授权行为,与文章作者无关!!! 附:完整笔记目录~ ps:本人小白,笔记均在个人理解基础上整理,…

Chrome谷歌浏览器如何能恢复到之前的旧版本

升级了谷歌最新版不习惯,如何降级版本 未完待续。。 电脑中的Chrome谷歌浏览器升级到了最新版本,但是有种种的不适应,如何能恢复到之前的旧版本呢?我们来看看操作步骤,而且无需卸载重装。 怎么恢复Chrome 之前版本&a…

递归40题!再见递归

简介:40个问题,有难有易,均使用递归完成,需要C/C的指针、字符串、数组、链表等基础知识作为基础。 1、数字出现的次数 由键盘录入一个正整数,求该整数中每个数字出现的次数。 输入:19931003 输出&#xf…