Job 失敗了怎么辦?- 每天5分鍾玩轉 Docker 容器技術(133)


上一節討論了 Job 執行成功的情況,如果失敗了會怎么樣呢?

修改 myjob.yml,故意引入一個錯誤:

646.png

先刪除之前的 Job:

648.png

如果將 restartPolicy 設置為 OnFailure 會怎么樣?下面我們實踐一下,修改 myjob.yml 后重新啟動。

運行新的 Job 並查看狀態:

647.png

當前 SUCCESSFUL 的 Pod 數量為 0,查看 Pod 的狀態:

649.png

可以看到有多個 Pod,狀態均不正常。kubectl describe pod 查看某個 Pod 的啟動日志:

650.png

日志顯示沒有可執行程序,符合我們的預期。

下面解釋一個現象:為什么 kubectl get pod 會看到這么多個失敗的 Pod?

原因是:當第一個 Pod 啟動時,容器失敗退出,根據 restartPolicy: Never,此失敗容器不會被重啟,但 Job DESIRED 的 Pod 是 1,目前 SUCCESSFUL 為 0,不滿足,所以 Job controller 會啟動新的 Pod,直到 SUCCESSFUL 為 1。對於我們這個例子,SUCCESSFUL 永遠也到不了 1,所以 Job controller 會一直創建新的 Pod。為了終止這個行為,只能刪除 Job。

648.png

如果將 restartPolicy 設置為 OnFailure 會怎么樣?下面我們實踐一下,修改 myjob.yml 后重新啟動。

651.png

Job 的 SUCCESSFUL Pod 數量還是為 0,看看 Pod 的情況:

652.png

這里只有一個 Pod,不過 RESTARTS 為 3,而且不斷增加,說明 OnFailure 生效,容器失敗后會自動重啟。

下一節我們討論提高 Job 執行效率的方法。

書籍:

1.《每天5分鍾玩轉Docker容器技術》
https://item.jd.com/16936307278.html


2.《每天5分鍾玩轉OpenStack》
https://item.jd.com/12086376.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM