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

上一節討論了 Job 執行成功的狀況,若是失敗了會怎麼樣呢?html

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

646.png

先刪除以前的 Job:ui

648.png

若是將 restartPolicy 設置爲 OnFailure 會怎麼樣?下面咱們實踐一下,修改 myjob.yml 後從新啓動。spa

運行新的 Job 並查看狀態:rest

647.png

當前 SUCCESSFUL 的 Pod 數量爲 0,查看 Pod 的狀態:日誌

649.png

能夠看到有多個 Pod,狀態均不正常。kubectl describe pod 查看某個 Pod 的啓動日誌:code

650.png

日誌顯示沒有可執行程序,符合咱們的預期。orm

下面解釋一個現象:爲何 kubectl get pod 會看到這麼多個失敗的 Pod?htm

緣由是:當第一個 Pod 啓動時,容器失敗退出,根據 restartPolicy: Never,此失敗容器不會被重啓,但 Job DESIRED 的 Pod 是 1,目前 SUCCESSFUL 爲 0,不知足,因此 Job controller 會啓動新的 Pod,直到 SUCCESSFUL 爲 1。對於咱們這個例子,SUCCESSFUL 永遠也到不了 1,因此 Job controller 會一直建立新的 Pod。爲了終止這個行爲,只能刪除 Job。ci

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

相關文章
相關標籤/搜索