1. Job

1.1 Job 简介

Jobs 表示一次性任务。

job 工作模式

  • Job 会创建一个或者多个 Pods,并确保指定数量的 Pods 成功终止。

  • 随着 Pods 成功结束,Job 跟踪记录成功完成的 Pods 个数。

  • 当数量达到指定的成功个数阈值时,任务(即 Job)结束。

  • 删除 Job 的操作会清除所创建的全部 Pods。

1.2 Job 的创建

  1. 通过 yaml 文件的方式创建

    • 模板为:
Copy to Clipboard

注意:

  • Job 的 restart 重启策略只能是:Never 或 OnFailure

  • parallelism : 一次并行的运行几个 Pod ,也就是同时创建几个 Pod 执行任务,默认为 1,不能超过 completions

  • completions : Job 结束需要成功运行的 Pod 个数,即状态为 Completed 的 Pod 数目

  • backoffLimit : 如果 Pod 失败,则重试几次

  • activeDeadlineSeconds : 限制 Pod 运行的时间,超出此时间,终止 Pod ,并且标记为失败

2。 通过命令行方式创建

  •  kubectl create job NAME --image=image [--from=cronjob/name] -- [COMMAND] [args...] [options]
    • 可以利用 命令行的方式,生成 job 的yaml文件模板:
    • kubectl create job test --image=busybox --dry-run=client -o yaml -- date > test.yaml

1.3 Job 的失败

Job 必须要完成一次

  • 如果 restart 策略设置为 Never

    • 则不断生成新的 Pod 来执行 job 的工作,不会重启

  • 如果 restart 策略设置为OnFailure

    • 则会不断重启 Pod ,直到完成一次。

2. cronJob

2.1 cronJob 简介

CornJob,定时任务,与 Linux 的 crontab 类似:

  • 创建周期性的、反复重复的任务

  • Cron Job 创建基于时间调度的 Jobs。

  • CronJob 对象就像 crontab (cron table) 文件中的一行。 用 Cron 格式进行编写, 并周期性地在给定的调度时间执行 Job。

注意:

  • 所有 CronJob 的 schedule: 时间都是基于 kube-controller-manager 的时区

2.2 crontab linux 定时任务

  1. corntab 的配置文件

    • /var/spool/cron/ : 是每个用户包括 root 的 crontab 任务,每个任务以创建者的名字命名

    • /etc/crontab : 负责调度各种管理和维护任务。

    • /etc/cron.d/ : 用来存放任何要执行的crontab文件或脚本。

    • 可以把脚本放在/etc/cron.hourly、/etc/cron.daily、/etc/cron.weekly、/etc/cron.monthly目录中,让它每小时/天/星期、月执行一次。

  2. corntab 命令的常用选项

    • -e : (编辑工作表)

    • -l : (列出工作表里的命令)

    • -r : (删除工作作)

  3. crontab -e 进入当前用户的工作表编辑,是常见的 vim 界面。每行是一条命令。编辑格式:

    • 分 时 日 月 周 命令

    • 其中:/ 表示每隔;* 表示所有;,表示列举;- 表示从a到b

    • 例如:3,15 8-11 */2 * * myCommand,表示 每隔两天,8点到11点的第3分钟和第15分钟执行命令

2.3 cronJob 的创建

  1. 通过 yaml 文件创建,模板为:

Copy to Clipboard
  1. 通过 命令行创建

Copy to Clipboard