暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Kubernetes中Cronjob前面一个job还在执行中,下一个约定时间已经到了,怎么办?

运维笔谈 2025-03-24
35


 Cronjob需要`concurrencyPolicy`来指定策略。


CronJob用于在Kubernetes集群中定期执行任务,类似于Unix系统中的cron作业。每个CronJob会根据预定的时间表(schedule)创建Job资源,从而运行Pod执行任务。如果前一个Job还没完成,下一个Job的时间又到了,会发生什么呢?

Kubernetes中Cronjob有个`concurrencyPolicy`字段可以指定对应的策略,让我们来应对对应的需求。
    spec:
      concurrencyPolicy: <string>  
    # 可选值:Allow、Forbid、Replace(默认:Allow)


    1、默认值是Allow,是允许并发执行,新的 Job 会立即启动,即使前一个 Job 仍在运行。适用的场景是:任务无状态、可重复执行,且资源充足,允许同时处理多个实例


    2、Forbid 禁止并发执行。如果前一个 Job 仍在运行,新的 Job 会被跳过(不创建)。适应的场景如:任务需要独占资源(如数据库写操作),避免数据竞争或资源冲突,或者备份之类的运维脚本。


    3、Replace 替换执行。如果前一个 Job 仍在运行,旧的 Job 会被终止,新的 Job 将启动。如:需要确保总是运行最新配置的任务,且旧任务可安全中断(如定期更新配置)。




    运维笔谈已经开通AI智能对话功能,解答有关运维日常工作中遇到的问题以及经验分享,感兴趣的大佬来和我聊聊吧!对话 “阿里云k8s” 可以获取《阿里云Kubernetes项目实战手册》pdf。

    文章转载自运维笔谈,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

    评论