4.5 运行执行单个任务的pod

  1. 前提条件

    0.0 环境准备
    0.1 安装docker
    0.2 安装k8s

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值