• Kubernetes的Job对象


    Deployment、StatefulSet及DaemonSet三个主要用来进行长时间业务,不会退出。
    而有一些离线业务,或者叫Batch Job(计算业务),计算完成后就直接退出 了,如果用Deployment来管理这种业务,Pod会在计算结束后退出,然后被Deployment Controller不断地重启,
    而我们的任务不需要一直被执行,Job对象主要就是针对这种离线跑任务场景

    示例

    apiVersion: batch/v1
    kind: Job
    metadata:
      name: pi
    spec:
      parallelism: 2
      completions: 4
      template:
        spec:
          containers:
          - name: pi
            image: resouer/ubuntu-bc 
            command: ["sh", "-c", "echo 'scale=10000; 4*a(1)' | bc -l "]
          restartPolicy: Never
          activeDeadlineSeconds: 100
      backoffLimit: 4
    

    参数解释:

    • restartPolicy:为Never,因为我们的Pod永远不应该被重启.restartPolicy在Job对象里只允许被指定为Never和OnFailure,而在Deployment对象里,restartPolicy只允许被设置为Alway
    • backoffLimit: 作业失败后Job重新创建Pod的次数(如果restartPolicy指定为OnFailure,作业失败,不会尝试创建新的Pod)
    • activeDeadlineSeconds:最长运行的时间
    • parallelism: 同一时间最多可以启动Pod数量
    • completions: 至少要完成的Pod数量
      简单的说,可以通过设置parallelism控制并发数,通过completions控制任务执行的次数,通过activeDeadlineSeconds设置一个任务的最长运行时间

    执行创建

    kubectl apply -f job.yaml
    

    创建后会看到po状态,由ContainerCreating->Running->Completed,如果有失败情况还会出现DeadlineExceeded状态

    参考资料:https://www.kubernetes.org.cn/job

  • 相关阅读:
    微信支付开发(12) 认清微信支付v2和v3
    教爸爸妈妈用微信
    微信公众平台开发(103) 四六级成绩查询
    微信支付开发(11) Native支付
    微信公众平台开放设备接入能力
    微信公众平台开发(102) 模板消息
    微信支付开发(10) 全网发布
    微信小店开发(3) 自定义菜单加入维权
    openssl下载
    使用PHP QR Code生成二维码
  • 原文地址:https://www.cnblogs.com/chenqionghe/p/11670224.html
Copyright © 2020-2023  润新知