本文将介绍 Kubernetes 中的 Job / CornJob。
一、什么是 Job / CornJob?
Job 对应现实中的任务,其特点有:
- 只运行一段时间,运行后退出
- 关注的重点在于是否顺利运行,即任务是否执行完成
CornJob 对应现实中的定时任务,其特点是在任务的基础上增加了定时概念,要求任务按既定的执行计划执行。
二、Kubernetes 对 Job / CornJob 的设计
Kubernetes 对资源对象的设计遵循了 “单一职责” 原则,每个资源对象都只专注于一件事情,每一件事情也有且只有一个资源对象负责。另外,Kubernetes 对资源对象的设计遵循了 “组合优于继承” 原则,资源对象通过组合的方式完成协作。
因此,
- 针对任务,Kubernetes 并没有将对任务的支持集成到 Pod 中,而是额外设计了 Job。Job 对象将负责运行超时检查、失败重试等工作,控制 Pod 以执行工作
- 针对定时任务,Kubernetes 并没有将对定时的支持集成到 Job 中,而是额外设计了 CornJob。CornJob 将负责定时工作,控制 Job 以执行任务
三、Job 的配置文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| apiVersion: batch/v1
kind: Job
metadata: name: test-job labels: ···
spec: activeDeadlineSeconds: 15 backoffLimit: 2 completions: 4 parallelism: 2 template: spec: restartPolicy: OnFailure containers: - image: busybox name: echo-job imagePullPolicy: IfNotPresent command: ["/bin/echo"] args: ["hello", "world"]
|
四、CornJob 的配置文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| apiVersion: batch/v1
kind: CronJob
metadata: name: test-cornJob labels: ···
spec: schedule: '*/1 * * * *' jobTemplate: spec: activeDeadlineSeconds: 15 backoffLimit: 2 completions: 4 parallelism: 2 template: spec: restartPolicy: OnFailure containers: - image: busybox name: echo-cj imagePullPolicy: IfNotPresent command: ["/bin/echo"] args: ["hello", "world"]
|
参考