开发者学堂课程【Kubernetes 入门:应用编排与管理:Job 和 DaemonSet(一)】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/51/detail/1013
应用编排与管理:Job 和 DaemonSet(一)
内容介绍:
一、需求来源
二、用例解读
三、操作演示
四、架构设计
一、需求来源
1、Job 背景问题
我们可以通过 Pod 来直接运行任务进程吗?
如果这样做,以下的问题有什么方式来解决?
l 如何保证 Pod 内进程正确的结束?
l 如果进程运行失败,如何重试?
l 如何管理多个任务且任务之间有互相依赖关系?
l 如何并行运行任务并管理他们的队列大小?
2、Job:管理任务的控制器
l Job 能帮助我们做什么事情?
1. 创建一个或多个Pod确保指定数量的 Pod 可以成功地运行终止
2. 跟踪 Pod 状态,根据配置及时重试失败的 Pod
3. 确定依赖关系,保证上一个任务运行完毕后再运行下一个任务
4. 控制任务并行度,并根据配置确保 Pod 队列大小
二、用例解读
1、Job 语法
l 新知识点:
restartPolicy:重启策略
backoffLimit:重试次数限制
2、查看 Job 状态
$kubectl create -f job.yaml
$ kubectl get jobs
NAME COMPLETIONS DURATION AGE
Pi 1/1 71s 4m6s
COMPLETIONS:完成 pod 数量
DURATION: Job 实际业务运行时长
AGE: job 创建的时长
3、查看 Pod
$ kubectl get pod
NAME
pi-4cfrp
l Pod 名字格式:
l ${job-name}-${random-suffix}
$kubectl get pods pi-4cfrp -o yaml
apiversion: v1
kind: Pod
metadata:
labels:
controller-uid: d2912fc6-6599-11e9-9fea-00163e00cf4e
job-name: pi
name: pi-4cfrp
namespace: default
ownerReferences:
- apiVersion: batch/v1
blockOwnerDeletion: true
controller: true
kind: Job
name: pi
uid: d2912fc6-6599-11e9-9fea-00163e00cf4e
labels 均为自动匹配与添加
4、并行运行 Job 新知识点:
1.completions:代表本 pod 队列执行次数,这里8代表这个任务将被执行8次
2. parallelism:代表并行执行个数,这里的2代表并行执行的 pod 数量,也就是说会有2个 pod 同时运行
apiVersion: batch/v1
kind: Job
metadata:
name: paral-1
spec:
completions: 8
parallelism: 2
template:
spec:
containers:
- name: param
image: ubuntu
command: ["/bin/sh"]
args: ["-c", "sleep 30; date"]
restartPolicy: OnFailure