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

相关文章

从原理到实战深入理解Java 断言assert

《从原理到实战深入理解Java断言assert》本文深入解析Java断言机制,涵盖语法、工作原理、启用方式及与异常的区别,推荐用于开发阶段的条件检查与状态验证,并强调生产环境应使用参数验证工具类替代... 目录深入理解 Java 断言(assert):从原理到实战引言:为什么需要断言?一、断言基础1.1 语

Java MQTT实战应用

《JavaMQTT实战应用》本文详解MQTT协议,涵盖其发布/订阅机制、低功耗高效特性、三种服务质量等级(QoS0/1/2),以及客户端、代理、主题的核心概念,最后提供Linux部署教程、Sprin... 目录一、MQTT协议二、MQTT优点三、三种服务质量等级四、客户端、代理、主题1. 客户端(Clien

在Spring Boot中集成RabbitMQ的实战记录

《在SpringBoot中集成RabbitMQ的实战记录》本文介绍SpringBoot集成RabbitMQ的步骤,涵盖配置连接、消息发送与接收,并对比两种定义Exchange与队列的方式:手动声明(... 目录前言准备工作1. 安装 RabbitMQ2. 消息发送者(Producer)配置1. 创建 Spr

深度解析Spring Boot拦截器Interceptor与过滤器Filter的区别与实战指南

《深度解析SpringBoot拦截器Interceptor与过滤器Filter的区别与实战指南》本文深度解析SpringBoot中拦截器与过滤器的区别,涵盖执行顺序、依赖关系、异常处理等核心差异,并... 目录Spring Boot拦截器(Interceptor)与过滤器(Filter)深度解析:区别、实现

springboot如何通过http动态操作xxl-job任务

《springboot如何通过http动态操作xxl-job任务》:本文主要介绍springboot如何通过http动态操作xxl-job任务的问题,具有很好的参考价值,希望对大家有所帮助,如有错... 目录springboot通过http动态操作xxl-job任务一、maven依赖二、配置文件三、xxl-

深度解析Spring AOP @Aspect 原理、实战与最佳实践教程

《深度解析SpringAOP@Aspect原理、实战与最佳实践教程》文章系统讲解了SpringAOP核心概念、实现方式及原理,涵盖横切关注点分离、代理机制(JDK/CGLIB)、切入点类型、性能... 目录1. @ASPect 核心概念1.1 AOP 编程范式1.2 @Aspect 关键特性2. 完整代码实

MySQL中的索引结构和分类实战案例详解

《MySQL中的索引结构和分类实战案例详解》本文详解MySQL索引结构与分类,涵盖B树、B+树、哈希及全文索引,分析其原理与优劣势,并结合实战案例探讨创建、管理及优化技巧,助力提升查询性能,感兴趣的朋... 目录一、索引概述1.1 索引的定义与作用1.2 索引的基本原理二、索引结构详解2.1 B树索引2.2

从入门到精通MySQL 数据库索引(实战案例)

《从入门到精通MySQL数据库索引(实战案例)》索引是数据库的目录,提升查询速度,主要类型包括BTree、Hash、全文、空间索引,需根据场景选择,建议用于高频查询、关联字段、排序等,避免重复率高或... 目录一、索引是什么?能干嘛?核心作用:二、索引的 4 种主要类型(附通俗例子)1. BTree 索引(

Java Web实现类似Excel表格锁定功能实战教程

《JavaWeb实现类似Excel表格锁定功能实战教程》本文将详细介绍通过创建特定div元素并利用CSS布局和JavaScript事件监听来实现类似Excel的锁定行和列效果的方法,感兴趣的朋友跟随... 目录1. 模拟Excel表格锁定功能2. 创建3个div元素实现表格锁定2.1 div元素布局设计2.

Redis 配置文件使用建议redis.conf 从入门到实战

《Redis配置文件使用建议redis.conf从入门到实战》Redis配置方式包括配置文件、命令行参数、运行时CONFIG命令,支持动态修改参数及持久化,常用项涉及端口、绑定、内存策略等,版本8... 目录一、Redis.conf 是什么?二、命令行方式传参(适用于测试)三、运行时动态修改配置(不重启服务