k8s初级实战06--Job CronJob

2024-05-31 00:08

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

k8s初级实战06--Job & CronJob

  • 1 基础概念
  • 2 常见用法
    • 2.1 Job
    • 2.2 CronJob
  • 3 注意事项
  • 4 说明

1 基础概念

  1. Job
    Job负责批量处理短暂的一次性任务 (short lived one-off tasks),即仅执行一次的任务,它保证批处理任务的一个或多个Pod成功结束。
    当第一个 Pod 失败或者被删除(比如因为节点硬件失效或者重启)时,Job 对象会启动一个新的 Pod。删除 Job 的操作会清除所创建的全部 Pods。
    Kubernetes支持以下几种Job:
    1. 非并行Job:通常创建一个Pod直至其成功结束
    2. 固定结束次数的Job:设置.spec.completions,创建多个Pod,直到.spec.completions个Pod成功结束
    3. 带有工作队列的并行Job:设置.spec.Parallelism但不设置.spec.completions,当所有Pod结束并且至少一个成功时,Job就认为是成功
  2. CronJob
    CronJob 即定时任务,就类似于 Linux 系统的 crontab,在指定的时间周期运行指定的任务。
    CronJobs 对于创建周期性的、反复重复的任务很有用,例如执行数据备份或者发送邮件。 CronJobs 也可以用来计划在指定时间来执行的独立任务,例如计划当集群看起来很空闲时 执行某个 Job。
    crontab 时间表7语法:
    # ┌───────────── 分钟 (0 - 59)
    # │ ┌───────────── 小时 (0 - 23)
    # │ │ ┌───────────── 月的某天 (1 - 31)
    # │ │ │ ┌───────────── 月份 (1 - 12)
    # │ │ │ │ ┌───────────── 周的某天 (0 - 6) (周日到周一;在某些系统上,7 也是星期日)
    # │ │ │ │ │ 
    # │ │ │ │ │
    # │ │ │ │ │
    # * * * * *
    

2 常见用法

2.1 Job

  1. 创建Job 计算pi小数点后100位
    $ kubectl create job cal-pi --image=perl:5.32 -- perl -Mbignum=bpi -wle 'print bpi(100)'
    job.batch/cal-pi created
    查看输出日志:
    $ kubectl logs cal-pi-dh766     
    3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117068
    或者yaml
    vim job-cal-pi.yaml 
    kind: Job
    apiVersion: batch/v1
    metadata:name: cal-pi
    spec:template:spec:containers:- name: cal-piimage: perl:5.32command:- perl- '-Mbignum=bpi'- '-wle'- 'print bpi(100)'imagePullPolicy: IfNotPresentrestartPolicy: NeverbackoffLimit: 4
    $ kubectl apply -f job-cal-pi.yaml
    
  2. 查看job
    $ kubectl get jobs[.batch]
    NAME     COMPLETIONS   DURATION   AGE
    cal-pi   1/1           4s         22s
    
  3. 删除job
    $ kubectl delete -f job-cal-pi.yaml 
    job.batch "cal-pi" deleted
    
  4. 创建job 执行10次任务
    vim job-cal-pi-10.yaml 
    kind: Job
    apiVersion: batch/v1
    metadata:name: cal-pi-10
    spec:completions: 10template:spec:containers:- name: cal-piimage: perl:5.32command:- perl- '-Mbignum=bpi'- '-wle'- 'print bpi(100)'imagePullPolicy: IfNotPresentrestartPolicy: NeverbackoffLimit: 4
    $ kubectl apply -f job-cal-pi-10.yaml 
    
    过一会可以在lens前端上发现该任务执行完成: 在这里插入图片描述

2.2 CronJob

  1. 创建cronjob
    $ kubectl create cronjob cal-pi-cj --schedule="*/1 * * * *" --image=perl:5.32 -- perl -Mbignum=bpi -wle 'print bpi(100)'
    cronjob.batch/cal-pi-cj created或者yaml创建
    vim cronjob-cal-pi.yaml 
    kind: CronJob
    apiVersion: batch/v1beta1
    metadata:name: cal-pi-cj
    spec:schedule: '*/1 * * * *'jobTemplate:spec:template:spec:containers:- name: cal-pi-cjimage: perl:5.32command:- perl- '-Mbignum=bpi'- '-wle'- 'print bpi(100)'imagePullPolicy: IfNotPresentrestartPolicy: OnFailure
    $ kubectl apply -f cronjob-cal-pi.yaml 
    
    lens 中执行任务的状态如下: 在这里插入图片描述
  2. 查看cronjob
    $ kubectl get cronjobs.batch 
    NAME        SCHEDULE      SUSPEND   ACTIVE   LAST SCHEDULE   AGE
    cal-pi-cj   */1 * * * *   False     0        <none>          31s
    
  3. 删除cronjob
    kubectl delete cronjobs[.batch] cal-pi-cj 
    cronjob.batch "cal-pi-cj" deleted
    

3 注意事项

  1. job执行完成后,对应的pod不会自动删除(),删除job后才会删除对应的pod。

4 说明

概念->工作负载->工作负载资源->Jobs
Kubernetes指南->Job

这篇关于k8s初级实战06--Job CronJob的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

精选20个好玩又实用的的Python实战项目(有图文代码)

《精选20个好玩又实用的的Python实战项目(有图文代码)》文章介绍了20个实用Python项目,涵盖游戏开发、工具应用、图像处理、机器学习等,使用Tkinter、PIL、OpenCV、Kivy等库... 目录① 猜字游戏② 闹钟③ 骰子模拟器④ 二维码⑤ 语言检测⑥ 加密和解密⑦ URL缩短⑧ 音乐播放

SQL Server跟踪自动统计信息更新实战指南

《SQLServer跟踪自动统计信息更新实战指南》本文详解SQLServer自动统计信息更新的跟踪方法,推荐使用扩展事件实时捕获更新操作及详细信息,同时结合系统视图快速检查统计信息状态,重点强调修... 目录SQL Server 如何跟踪自动统计信息更新:深入解析与实战指南 核心跟踪方法1️⃣ 利用系统目录

java中pdf模版填充表单踩坑实战记录(itextPdf、openPdf、pdfbox)

《java中pdf模版填充表单踩坑实战记录(itextPdf、openPdf、pdfbox)》:本文主要介绍java中pdf模版填充表单踩坑的相关资料,OpenPDF、iText、PDFBox是三... 目录准备Pdf模版方法1:itextpdf7填充表单(1)加入依赖(2)代码(3)遇到的问题方法2:pd

PyTorch中的词嵌入层(nn.Embedding)详解与实战应用示例

《PyTorch中的词嵌入层(nn.Embedding)详解与实战应用示例》词嵌入解决NLP维度灾难,捕捉语义关系,PyTorch的nn.Embedding模块提供灵活实现,支持参数配置、预训练及变长... 目录一、词嵌入(Word Embedding)简介为什么需要词嵌入?二、PyTorch中的nn.Em

在IntelliJ IDEA中高效运行与调试Spring Boot项目的实战步骤

《在IntelliJIDEA中高效运行与调试SpringBoot项目的实战步骤》本章详解SpringBoot项目导入IntelliJIDEA的流程,教授运行与调试技巧,包括断点设置与变量查看,奠定... 目录引言:为良驹配上好鞍一、为何选择IntelliJ IDEA?二、实战:导入并运行你的第一个项目步骤1

Spring Boot3.0新特性全面解析与应用实战

《SpringBoot3.0新特性全面解析与应用实战》SpringBoot3.0作为Spring生态系统的一个重要里程碑,带来了众多令人兴奋的新特性和改进,本文将深入解析SpringBoot3.0的... 目录核心变化概览Java版本要求提升迁移至Jakarta EE重要新特性详解1. Native Ima

Java中的xxl-job调度器线程池工作机制

《Java中的xxl-job调度器线程池工作机制》xxl-job通过快慢线程池分离短时与长时任务,动态降级超时任务至慢池,结合异步触发和资源隔离机制,提升高频调度的性能与稳定性,支撑高并发场景下的可靠... 目录⚙️ 一、调度器线程池的核心设计 二、线程池的工作流程 三、线程池配置参数与优化 四、总结:线程

Spring Boot 与微服务入门实战详细总结

《SpringBoot与微服务入门实战详细总结》本文讲解SpringBoot框架的核心特性如快速构建、自动配置、零XML与微服务架构的定义、演进及优缺点,涵盖开发环境准备和HelloWorld实战... 目录一、Spring Boot 核心概述二、微服务架构详解1. 微服务的定义与演进2. 微服务的优缺点三

SpringBoot集成MyBatis实现SQL拦截器的实战指南

《SpringBoot集成MyBatis实现SQL拦截器的实战指南》这篇文章主要为大家详细介绍了SpringBoot集成MyBatis实现SQL拦截器的相关知识,文中的示例代码讲解详细,有需要的小伙伴... 目录一、为什么需要SQL拦截器?二、MyBATis拦截器基础2.1 核心接口:Interceptor

从入门到进阶讲解Python自动化Playwright实战指南

《从入门到进阶讲解Python自动化Playwright实战指南》Playwright是针对Python语言的纯自动化工具,它可以通过单个API自动执行Chromium,Firefox和WebKit... 目录Playwright 简介核心优势安装步骤观点与案例结合Playwright 核心功能从零开始学习