Kubernetes的Job對象

Deployment、StatefulSet及DaemonSet三個主要用來進行長時間業務,不會退出。
而有一些離線業務,或者叫Batch Job(計算業務),計算完成後就直接退出 了,若是用Deployment來管理這種業務,Pod會在計算結束後退出,而後被Deployment Controller不斷地重啓,
而咱們的任務不須要一直被執行,Job對象主要就是針對這種離線跑任務場景ubuntu

示例api

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設置一個任務的最長運行時間

執行建立app

kubectl apply -f job.yaml

建立後會看到po狀態,由ContainerCreating->Running->Completed,若是有失敗狀況還會出現DeadlineExceeded狀態rest

參考資料:https://www.kubernetes.org.cn/jobcode

相關文章
相關標籤/搜索