k8s(job)

1.什麼是job

容器按照持續運行的時間可分爲兩類:服務類容器和工作類容器
服務類容器通常持續提供服務,需要一直運行,比如HTTPServer、Daemon等。工作類容器則是一次性任務,比如批處理程序,完成後容器就退出
Kubernetes的Deployment、ReplicaSet和DaemonSet都用於管理服務類容器;對於工作類容器,我們使用Job

2. 配置文件myjob.yml

我們在這個實驗中要執行一個新的job服務
在這裏插入圖片描述

batch/v1 # 是當前Job的apiVersion
指明當前資源的類型爲Job
restartPolicy指定什麼情況下需要重啓容器。對於Job,只能設置爲Never或者OnFailure。對於其他controller(比如Deployment),可以設置爲Always

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

3. job失敗的情況

在這裏插入圖片描述
我們做個試驗,修改myjob.yml,故意引入一個錯誤
在這裏插入圖片描述
在這裏插入圖片描述

kubectl describe pod # 查看某個Pod的啓動日誌

在這裏插入圖片描述
下面解釋一個現象:爲什麼kubectl get pod會看到這麼多個失敗的Pod?
原因是:當第一個Pod啓動時,容器失敗退出,根據restartPolicy:Never,此失敗容器不會被重啓,但JobDESIRED的Pod是1,目前SUCCESSFUL爲0,不滿足,所以Job controller會啓動新的Pod,直到SUCCESSFUL爲1。對於我們這個例子,SUCCESSFUL永遠也到不了1,所以Job controller會一直創建新的Pod。爲了終止這個行爲,只能刪除Job

4.將restartPolicy設置爲OnFailure

如果將restartPolicy設置爲OnFailure會怎麼樣?下面我們實踐一下,修改myjob.yml後重新啓動
在這裏插入圖片描述在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章