当前位置: 首页 > news >正文

K8S中Pod控制器之Job控制器

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.lryc.cn/news/523784.html

相关文章:

  • macOS安装Gradle环境
  • 2024年美赛C题评委文章及O奖论文解读 | AI工具如何影响数学建模?从评委和O奖论文出发-O奖论文做对了什么?
  • LDD3学习9--数据类型和定时器
  • 一文夯实垃圾收集的理论基础
  • OpenWRT Conserver 共享串口服务实现
  • 第12章:Python TDD完善货币加法运算(一)
  • Springboot项目Jackson支持多种接收多种时间格式
  • 两台电脑互PING不通的解决办法
  • No. 34 笔记 | Python知识架构与数据类型相关内容 | 实操
  • 【2024年华为OD机试】 (B卷,100分)- 字符串分割(Java JS PythonC/C++)
  • Pix2Pix :用于图像到图像转换的条件生成对抗网络
  • 基于VSCODE+GDB+GDBSERVER远程单步调试设备篇(可视化界面)
  • CamemBERT:一款出色的法语语言模型
  • 0基础跟德姆(dom)一起学AI 自然语言处理18-解码器部分实现
  • 我的创作纪念日——我与CSDN一起走过的365天
  • C++:bfs解决多源最短路与拓扑排序问题习题
  • 【面试题】JVM部分[2025/1/13 ~ 2025/1/19]
  • 文献综述相关ChatGPT提示词分享
  • Excel 技巧14 - 如何批量删除表格中的空行(★)
  • 图片生成Prompt编写技巧
  • 【STM32-学习笔记-4-】PWM、输入捕获(PWMI)
  • TOSUN同星TsMaster使用入门——3、使用系统变量及c小程序结合panel面板发送报文
  • 【Web】2025-SUCTF个人wp
  • React进阶之react.js、jsx模板语法及babel编译
  • 在Linux上如何让ollama在GPU上运行模型
  • R 语言科研绘图第 20 期 --- 箱线图-配对
  • suctf2025
  • Quinlan C4.5剪枝U(0,6)U(1,16)等置信上限如何计算?
  • 计算机组成原理--笔记二
  • 麒麟系统中删除权限不够的文件方法