K8s: 控制器之Job对象
Job 任务在 K8s中类似 DaemonSet 和 Deployment 类似的对象,也是负责管理 Pod 的用于负责一些一次性的业务需求,它不是需要一直在后台运行的,所以不是 DaemonSet同时 Deployment 部署的是大的应用系统本身,它也不是一个 Deployment它可以执行一次,或者是多次有限次数的,或者是定期哪天执行的这么一个任务对于这种需求来讲就定义一个job
·
Job 对象
1 )概述
- Job 任务在 K8s中类似 DaemonSet 和 Deployment 类似的对象,也是负责管理 Pod 的
- 用于负责一些一次性的业务需求,它不是需要一直在后台运行的,所以不是 DaemonSet
- 同时 Deployment 部署的是大的应用系统本身,它也不是一个 Deployment
- 它可以执行一次,或者是多次有限次数的,或者是定期哪天执行的这么一个任务
- 对于这种需求来讲就定义一个job
2 )场景
-
场景1:在运行的博客系统中给用户添加一个默认的用户头像的新功能
- 这个任务能够让每一个用户在登录我的博客系统之后,他自己能看到有一个默认的头像需求
- 这个需求,它是一个一次性的需求,可以考虑用任务来做
-
场景2: 文件管理的功能
- 我要定期的可能去删除一些任务
- 我要定期删除某些就是说存储的一些日志
- 或者是一些比如三年前没有人下载过的文件
- 这类定时任务,可以通过job方式去执行
3 )应用
-
$
vi job-demo1.yaml
apiVersion: batch/v1 kind: Job metadata: # 对外暴露本身的信息 name: pi spec: template: spec: containers: - name: pi image: registry.cn-beijing.aliyuncs.com/google_registry/perl:5.26 command: ["perl", "-Mbignum=bpi", "-wle", "print bpi(100)"] restartPolicy: Never backoffLimit: 4
-
$
kubectl apply -f job-demo1.yaml
job.batch/pi created
-
$
kubectl get job
NAME COMPLETIONS DURATION AGE pi 1/1 2s 25s
-
$
kubectl get po
NAME READY STATUS RESTARTS AGE pi--1-v9864 0/1 Completed 0 59s
-
$
kubectl logs pi--1-v9864
3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117068
-
$
echo $(kubectl get pods --selector=job-name=pi --output=jsonpath='{.items[*].metadata.name}')
pi--1-v9864
- K8s 提供了一个很强大的功能,就叫select选择器
- 首先在选取所有的pods之后,定义一些过滤器,比如过滤某些指定的label
- 或者拆分
- $
pods=$(kubectl get pods --selector=job-name=pi --output=jsonpath='{.items[*].metadata.name}')
- $
echo $pods
-
$
kubectl delete -f job-demo1.yaml
清理Jobjob.batch "pi" deleted
更多推荐
已为社区贡献32条内容
所有评论(0)