【云原生】CronJob周期性任务详解

CronJob周期性任务

文章目录

一、CronJob介绍

  • CronJob用于执行排期操作,例如备份、生成报告等。一个CronJob对象就像Linux系统上的crontab(cron table)文件中一行。它用Cron格式进行编写,并周期性地给定的调度事件执行Job。
  • CronJob有所限制,也比较特殊。例如在某些情况下,单个CronJob可以创建多个并发任务。
  • 当控制平面为CronJob创建新的Job和(间接)Pod时,CronJob的.metadata.name是命名这些Pod的部分基础。CronJob的名称必须是一个合法的DNS子域值,但这会对Pod的主机名产生意外的结果。未获得最佳兼容性,名称应遵循更严格的DNS标签规则。即使名称是一个DNS子域,它也不能超过52个字符。这是因为CronJob控制器将自动在你所提供的Job名称后附加11个字符,并且存在Job名称的最大长度不能超过53个字符的限制。

二、创建CronJob

  • CronJob需要一个配置文件。以下是针对一个CronJob的清单,该CronJob每分钟运行一个简单的演示任务:
bash 复制代码
[root@master ~]# vim cronjob.yaml
apiVersion: "batch/v1"
kind: CronJob
metadata:
  name: hello
spec:
  # 周期性执行任务
  # 分 时 日 月 周
  schedule: "* * * * *"
  # 定义了当CronJob触发时要运行的作业模板
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: hello
            image: busybox:latest
            imagePullPolicy: IfNotPresent
            # Pod内部执行的shell命令
            command: ["/bin/sh","-c","date; echo Hello from the Kubernetes cluster"]
          # 以非零状态退出Pod,才会重启Pod
          restartPolicy: OnFailure

三、查看资源

  • Cronjob是一级一级的去创建的,cronjob创建的是job然后由job创建任务pod
  • 也可以通过cronjob、job、pod的名称可以很明显的看出,它们的层级关系
3.1、查看Cronjob
bash 复制代码
[root@master ~]# kubectl get cronjob
NAME    SCHEDULE    SUSPEND   ACTIVE   LAST SCHEDULE   AGE
hello   * * * * *   False     0        12s             2m23s
3.2、查看Job
bash 复制代码
[root@master ~]# kubectl get job
NAME             COMPLETIONS   DURATION   AGE
hello-28710961   1/1           1s         2m49s
hello-28710962   1/1           1s         109s
hello-28710963   1/1           0s         49s
3.3、查看Pod
bash 复制代码
[root@master ~]# kubectl get pod
NAME                   READY   STATUS      RESTARTS   AGE
hello-28710962-gx4gm   0/1     Completed   0          2m26s
hello-28710963-bvjrv   0/1     Completed   0          86s
hello-28710964-4clln   0/1     Completed   0          26s
相关推荐
liux352815 分钟前
基于kubeadm部署Kubernetes 1.26.4 集群指南
云原生·容器·kubernetes
阿里云大数据AI技术2 小时前
全模态、多引擎、一体化,阿里云DLF3.0构建Data+AI驱动的智能湖仓平台
人工智能·阿里云·云计算
摇滚侠3 小时前
阿里云安装的 Redis 在什么位置,如何找到 Redis 的安装位置
redis·阿里云·云计算
小章UPUP4 小时前
Kubernetes (K8s) 与 Podman 的比较
容器·kubernetes·podman
Zfox_6 小时前
CANN Catlass 算子模板库深度解析:高性能 GEMM 融合计算、Cube Unit Tiling 机制与编程范式实践
docker·云原生·容器·eureka
农民工老王7 小时前
K8s 1.31 私有化部署实战:从 Calico 崩溃到 NFS 挂载失败的排坑全记录
云原生·kubernetes
灰子学技术7 小时前
istio从0到1:如何解决分布式配置同步问题
分布式·云原生·istio
广州中轴线7 小时前
OpenStack on Kubernetes 生产部署实战(十四)
kubernetes·智能路由器·openstack
m0_694845577 小时前
tinylisp 是什么?超轻量 Lisp 解释器编译与运行教程
服务器·开发语言·云计算·github·lisp
ESBK20257 小时前
第四届移动互联网、云计算与信息安全国际会议(MICCIS 2026)二轮征稿启动,诚邀全球学者共赴学术盛宴
大数据·网络·物联网·网络安全·云计算·密码学·信息与通信