[kubernetes in Action实践]Job和CronJob

Job

介绍

ReplicationController、ReplicaSet和DaemonSet的管理的pod会持续运行任务,永远达不到完成态,这些 pod 中的进程在退出时会重新启动。kubernetes的job允许我们运行一种pod,该 pod 在内部进程成功结束时,不重启容器。

功能:

  • 允许定义pod执行进程结束后的重启策略
  • 节点故障时和 ReplicaSet一样重新安排到其他节点

创建job

apiVersion: batch/v1
kind: Job
metadata:
  name: batch-job
spec:
  # completions: 5 # 将使此作业顺序运行5个pod
  # parallelism: 2 # 最多2个pod可以并行运行 
  template:
    metadata:
      labels:
        app: batch-job
    spec:
      restartPolicy: OnFailure     # 重启策略Always、OnFailure、Never
      containers:
      - name: main
        image: luksa/batch-job

在这里插入图片描述

查看操作过程发现job最后变成执行完成状态。

job的缩放

kubectl scale job {job_name} --replicas 3
可以在job运行时临时更改parallelism,如2增加到3,将使另一个pod立即启动。

job等待pod执行的时间

Job 要等待一个 pod 多久来完成任务?如果 pod 卡住并且根本无法完成(或者无法足够快完成),该怎么办?
通过在pod配置中设置 activeDeadlineSeconds 属性,可以限制 pod的时间。如果 pod 运行时间超过此时间,系统将尝试终止pod,并将 Job 标记为失败。


CronJob

介绍

特定时间或制定时间间隔来执行任务。

创建CronJob

假设每15分钟运行一次上个示例的任务。

apiVersion: batch/v1
kind: CronJob
metadata:
  name: batch-job-every-15m
spec:
  schedule: "0,15,30,45 * * * *"   # 每天在每小时0,15,30,45分钟运行
  jobTemplate:
    spec:
      template:
        metadata:
          labels:
            app: periodic-batch-job
        spec:
          restartPolicy: OnFailure     # 重启策略Always、OnFailure、Never
          containers:
          - name: main
            image: luksa/batch-job

cron 时间表格式:
分 时 日 月 星期几
例如:
每月第一天,每隔30分钟运行一次:"0,30 * 1 * * "
每个星期天上午3点:“0 3 * * 0”

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值