- 前提条件
0.0 环境准备
0.1 安装docker
0.2 安装k8s - 介绍pod资源
- Job资源与其他资源类似,但他允许你运行一种pod,该pod在内部进程成功结束时,不重启容器。一旦任务完成,pod就被认为处于完成状态
- 发生节点故障时,该节点上由Job管理的pod将按照ReplicaSet的pod的方式,重新安排到其他节点
- 如果进程本身异常退出,可以将job配置为重新启动容器
- 定义Job资源
- 使用busybox定义一个job镜像(Dockerfile)
FROM busybox ENTRYPOINT echo "$(date) Batch job starting"; sleep 120; echo "$(date) Finished successfully"
- 打包docker image
docker build -t kubia-job .
- 使用附加标签标注镜像(由于Minikube中使用的本地images和docker自带的本地images不同,故需要打包后上传)
docker tag kubia-job nuptaxin/kubia-job
- 向Docker Hub推送镜像
docker push nuptaxin/kubia-job
- 创建一个pod:kubia-batch-job.yaml
apiVersion: batch/v1 kind: Job metadata: name: kubia-batch-job spec: template: metadata: labels: app: batch-job spec: restartPolicy: OnFailure containers: - name: main image: nuptaxin/kubia-job
- 运行job
kubectl create -f kubia-batch-job.yaml
- 看Job运行一个pod
- 查看job
kubectl get jobs
- 查看pod
kubectl get po
- 查看pod日志(若上条命令获取的pod name为:kubia-batch-job-kk2s9)
kubectl logs kubia-batch-job-kk2s9 --timestamps
- 查看job (-a或者–show-all现在貌似无效了,默认全展示,加了还会报错。。)【120s后可以看到job结束了】
kubectl get job
- 查看job
- 在Job中运行多个pod实例
- 顺序运行Job pod(kubia-batch-job-multi.yaml)
apiVersion: batch/v1 kind: Job metadata: name: kubia-batch-job-multi spec: completions: 5 template: metadata: labels: app: batch-job-multi spec: restartPolicy: OnFailure containers: - name: main image: nuptaxin/kubia-job
- 运行job
kubectl create -f kubia-batch-job-multi.yaml
- 并行运行Job pod(kubia-batch-job-parall.yaml)
apiVersion: batch/v1 kind: Job metadata: name: kubia-batch-job-parall spec: completions: 5 parallelism: 2 template: metadata: labels: app: batch-job-parall spec: restartPolicy: OnFailure containers: - name: main image: nuptaxin/kubia-job
- 运行job
kubectl create -f kubia-batch-job-parall.yaml
- 查看是否并行运行
kubectl get po
- Job的缩放 【缩放执行会报错,是新版本不支持了吗?】
kubectl scale job kubia-batch-job-parall --replicas=3
- 限制Job pod完成任务的时间
- 配置activeDeadlineSeconds属性限制pod的时间,如果超时则尝试终止pod并将其标记为失败
- 指定Job mainfest中的spec.backoffLimit字段配置失败前可以重试的次数,默认6
- 配置限制时间
- 文件:kubia-batch-job-fail.yaml
apiVersion: batch/v1 kind: Job metadata: name: kubia-batch-job-fail spec: backoffLimit: 3 template: metadata: labels: app: batch-job-fail spec: activeDeadlineSeconds: 10 restartPolicy: OnFailure containers: - name: main image: nuptaxin/kubia-job
- 运行job
kubectl create -f kubia-batch-job-fail.yaml
- 查看job结果(job重试三次后仍失败,最终运行结果为0/1 COMPLETIONS)
kubectl get job
- 资源清理
kubectl delete job kubia-batch-job
kubectl delete job kubia-batch-job-multi
kubectl delete job kubia-batch-job-parall
kubectl delete job kubia-batch-job-fail
4.5 运行执行单个任务的pod
最新推荐文章于 2022-12-23 23:45:00 发布