k8s Job控制器 详解
在Kubernetes中,Job是一种控制器,用于在集群中运行一次性任务或批处理作业。Job控制器确保通过对每个任务的多个副本的运行来实现任务完成。可以控制任务的运行次数和并发性,以确保任务在特定环境下成功完成。
Job的声明式规范包括:
-
selector:选择包含Pod副本集的节点。
-
template:描述需要在上面运行的Pod。
-
completions:定义要成功完成的Pod的副本数。
-
parallelism:定义在任何给定时间可以同时运行的Pod的最大数量。
当一个Job定义被创建并提交到Kubernetes中时,Job控制器会自动创建一个Pod副本集,然后向Kubernetes API服务器发出一个请求,要求在Pod副本集的每个筛选的节点上运行一个Pod副本,直到Job中的所有Pod副本都成功运行。
如果任务中的一个Pod成功运行并退出,则该Pod将被替换而不会进行进一步的重启。而如果Pod发生了故障,则Job控制器会自动启动一个新的Pod,以保证任务的完成。
Job的优点是它们能够自动化部署和运行需要一次性完成任务的应用程序,例如批处理、数据清理、日志分析等等。
案例:
01-jobs.yaml
apiVersion: batch/v1
kind: Job
metadata:
name: baimei-pi
spec:
template:
spec:
containers:
- name: pi
image: harbor.baimei.com/baimei-tools/perl:5.34
command: ["perl", "-Mbignum=bpi", "-wle", "print bpi(2000)"]
restartPolicy: Never
# 指定标记此作业失败之前的重试次数。默认为6.
backoffLimit: 4
进入看一下日志: