k8s job控制器
1. Job控制器可以执行3种类型的任务一次性任务串式任务 spec.completions并形式任务 spec.parallelism默认Job执行后,不会自动删除,需要手动删除,例如kubectl delete job examplejobv1如果想要自动删除,需要修改配置文件 /etc/kubernetes/manifests下面对应的kube-apiserver.yaml kube-con
1. Job控制器可以执行3种类型的任务
- 一次性任务
- 串式任务 spec.completions
- 并形式任务 spec.parallelism
默认Job执行后,不会自动删除,需要手动删除,例如kubectl delete job examplejobv1
如果想要自动删除,需要修改配置文件 /etc/kubernetes/manifests
下面对应的kube-apiserver.yaml kube-controller-manager.yaml kube-scheduler.yaml
加入- --feature-gates=TTLAfterFinished=true
1.1容器按照持续运行的时间可分为两类:
- 服务类容器
服务类容器通常持续提供服务,需要一直运行,比如 http server,daemon 等。
- 工作类容器
工作类容器则是一次性任务,比如批处理程序,完成后容器就退出。
Kubernetes 的 Deployment、ReplicaSet 和 DaemonSet 都用于管理服务类容器;对于工作类容器,我们用 Job。
1.2 先看一个简单的 Job 配置文件 myjob.yml:
apiVersion: batch/v1
kind: Job
metadata:
name: myjob-busybox
spec:
ttlSecondsAfterFinished: 30
activeDeadlineSeconds: 60
completions: 11
parallelism: 4
backoffLimit: 6
template:
spec:
restartPolicy: Never
containers:
- name: myjob-busybox-container
image: busybox
imagePullPolicy: IfNotPresent
command: ['sh', '-c']
args: ['echo "start job";sleep 60; echo "job end"']
① batch/v1是当前job的Version
② 指定当前资源的类型时Job
③restartPolicy是指当前的重启策略。对于 Job,只能设置为 Never 或者 OnFailure。对于其他 controller(比如 Deployment)可以设置为 Always 。
启动这个job
[root@master manifests]# kubectl apply -f myjob.yml
job.batch/myjob created
kubectl get job 查看这个job
[root@master manifests]kubectl get job
NAME COMPLETIONS DURATION AGE
myjob-busybox 4/11 9m24s 9m24s
kubectl get pod 查看pod的状态
[root@master manifests]# kubectl get pod
NAME READY STATUS RESTARTS AGE
myjob-busybox-cdjbb 0/1 Completed 0 20m
myjob-busybox-lkh5n 0/1 Completed 0 20m
myjob-busybox-qrbnc 0/1 Completed 0 20m
myjob-busybox-rnvbx 0/1 Completed 0 20m
看到 状态为Completed表示这个job已经运行完成
kubectl logs 命令查看这个 pod的日志
[root@master manifests]# kubectl logs -f myjob-busybox-cdjbb
start job
job end
kubectl delete job jobname 删除job
[root@master manifests]# kubectl delete job myjob-busybox
job.batch "myjob-busybox" deleted
[root@master manifests]# kubectl get job
No resources found in default namespace.
2. job执行失败
job的restartPolicy只可以是Onfailure和Never中的一个
如果设置为Onfailure,默认重试次数是6, 以上事例可以不写backoffLimit
失败后,会按照10s, 20, 40s 120s 240s 等,递增延迟重试,上限是240s(6分钟)
设置activeDeadlineSeconds可以用时间来限制假死的job,时间一到强制推出job
更多推荐
所有评论(0)