• kubernetes之crontab


    CronJob 创建基于时隔重复调度的Jobs,CronJob 用于执行周期性的动作,例如备份、报告生成等。CronJob 仅负责创建与其调度时间相匹配的 Job,而 Job 又负责管理其代表的 Pod。

    为 CronJob 资源创建清单时,请确保所提供的名称是一个合法的DNS域名。 名称不能超过 52 个字符。 这是因为 CronJob 控制器将自动在提供的 Job 名称后附加 11 个字符,并且存在一个限制, 即 Job 名称的最大长度不能超过 63 个字符。

    Cron 时间表语法

    分-时-天-月-周

    1. # ┌───────────── 分钟 (0 - 59)
    2. # │ ┌───────────── 小时 (0 - 23)
    3. # │ │ ┌───────────── 月的某天 (1 - 31)
    4. # │ │ │ ┌───────────── 月份 (1 - 12)
    5. # │ │ │ │ ┌───────────── 周的某天 (0 - 6)(周日到周一;在某些系统上,7 也是星期日)
    6. # │ │ │ │ │ 或者是 sun,mon,tue,web,thu,fri,sat
    7. # │ │ │ │ │
    8. # │ │ │ │ │
    9. # * * * * *

    例如:下面这行指出必须在每个星期五的午夜以及每个月 13 号的午夜开始任务:

    0 0 13 * 5  

    时区

    对于没有指定时区的 CronJob,kube-controller-manager 基于本地时区解释排期表

    如果启用了 CronJobTimeZone,启用该特性后,你可以将 spec.timeZone 设置为有效时区名称。 例如,设置 spec.timeZone: "Etc/UTC" 指示 Kubernetes 采用 UTC 来解释排期表。

    从 Kubernetes v1.21 版本开始,CronJob 控制器的第二个版本被用作默认实现。 要禁用此默认 CronJob 控制器而使用原来的 CronJob 控制器,请在 kube-controller-manager 中设置特性门控 CronJobControllerV2,将此标志设置为 false

    示例

    1.命令行创建crontab

    1. kubectl run hello-crontab --schedule="*/2 * * * *" --restart= OnFailuer --image=nginx --image-pull-policy=IfNotPresent -- /bin/sh -c "date"
    2. 输出:
    3. Flag --schedule has been deprecated, has no effect and will be removed in the future.
    4. pod/hello-crontab created

    2.通过yaml文件创建

    1. apiVersion: batch/v1
    2. kind: CronJob
    3. metadata:
    4. labels:
    5. run: hello
    6. name: hello-cronjob
    7. namespace: default
    8. spec:
    9. concurrencyPolicy: Allow
    10. failedJobsHistoryLimit: 1
    11. jobTemplate:
    12. metadata:
    13. spec:
    14. template:
    15. metadata:
    16. labels:
    17. run: hello
    18. spec:
    19. containers:
    20. - args:
    21. - /bin/sh
    22. - -c
    23. - date; echo Hello from the Kubernetes cluster
    24. image: registry.cn-beijing.aliyuncs.com/dotbalo/busybox
    25. imagePullPolicy: Always
    26. name: hello
    27. resources: {}
    28. restartPolicy: OnFailure
    29. securityContext: {}
    30. schedule: '*/1 * * * *'
    31. successfulJobsHistoryLimit: 3
    32. suspend: false

    重点参数解析

    1. apiVersion: batch/v1beta1 #1.21+ batch/v1
    2. schedule:调度周期,和Linux一致,分别是分时日月周。
    3. restartPolicy:重启策略,和Pod一致,有Always,OnFailure,Never。
    4. concurrencyPolicy:并发调度策略。可选参数如下:
    5. Allow:允许同时运行多个任务。
    6. Forbid:不允许并发运行,如果之前的任务尚未完成,新的任务不会被创建。
    7. Replace:如果之前的任务尚未完成,新的任务会替换的之前的任务。
    8. suspend:如果设置为true,则暂停后续的任务,默认为false
    9. successfulJobsHistoryLimit:保留多少已完成的任务,按需配置。
    10. failedJobsHistoryLimit:保留多少失败的任务。
    11. startingDeadlineSeconds 200 控制器会统计从 startingDeadlineSeconds 设置的值到现在而不是从上一个计划时间到现在错过了多少次 Job

    结果

    1. [root@k8s-master1 crontab]# kubectl get cronjob
    2. NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE
    3. hello-cronjob */1 * * * * False 0 <none> 11s
    4. [root@k8s-master1 crontab]# kubectl get job
    5. NAME COMPLETIONS DURATION AGE
    6. hello-cronjob-1662173580 1/1 4s 3m1s
    7. hello-cronjob-1662173640 1/1 4s 2m1s
    8. hello-cronjob-1662173700 1/1 3s 61s
    9. hello-cronjob-1662173760 0/1 0s 0s
    10. [root@k8s-master1 crontab]# kubectl get pod
    11. NAME READY STATUS RESTARTS AGE
    12. busybox 1/1 Running 4317 179d
    13. dapi-test-pod 0/1 Completed 0 137d
    14. hello-cronjob-1662173640-md8hf 0/1 Completed 0 3m2s
    15. hello-cronjob-1662173700-k7tpg 0/1 Completed 0 2m1s
    16. hello-cronjob-1662173760-lxnbj 0/1 Completed 0 61s
    17. hello-cronjob-1662173820-phtwj 0/1 ContainerCreating 0 1s

        SCHEDULE:是指其调度的时间点
      SUSPEND:表示后续任务是否处于挂起状态,即暂停任务的调度和运行
      ACTIVE:表示活动状态的Job对象的数量
      LAST SCHEDULE:表示上次调度运行至此刻的时长

  • 相关阅读:
    一幅长文细学node.js——一幅长文系列
    [JAVAee]Spring MVC
    深度探讨丨关于工作量证明的常见误解
    除了console.log(),很多人不知道的其他方法console.table,console.dir,console.time等
    Sharing-JDBC分布式事务之Seata实现
    飞腾CPU FT-2000/4 uboot下PHY调试记录
    1km分辨率逐月降雨量和最高温度数据集(1901-2022)--数据处理
    华为机试真题 C++ 实现【水仙花数】
    【21天学习挑战赛—经典算法】冒泡排序
    解决Windows Server 2022启动PowerShell出现乱码问题
  • 原文地址:https://blog.csdn.net/rendongxingzhe/article/details/126674634