Liveness 探測讓用戶能夠自定義判斷容器是否健康的條件。若是探測失敗,Kubernetes 就會重啓容器。html
仍是舉例說明,建立以下 Pod:學習
啓動進程首先建立文件 /tmp/healthy
,30 秒後刪除,在咱們的設定中,若是 /tmp/healthy
文件存在,則認爲容器處於正常狀態,反正則發生故障。3d
livenessProbe
部分定義如何執行 Liveness 探測:日誌
探測的方法是:經過 cat
命令檢查 /tmp/healthy
文件是否存在。若是命令執行成功,返回值爲零,Kubernetes 則認爲本次 Liveness 探測成功;若是命令返回值非零,本次 Liveness 探測失敗。code
initialDelaySeconds: 10
指定容器啓動 10 以後開始執行 Liveness 探測,咱們通常會根據應用啓動的準備時間來設置。好比某個應用正常啓動要花 30 秒,那麼 initialDelaySeconds
的值就應該大於 30。htm
periodSeconds: 5
指定每 5 秒執行一次 Liveness 探測。Kubernetes 若是連續執行 3 次 Liveness 探測均失敗,則會殺掉並重啓容器。blog
下面建立 Pod liveness
:進程
從配置文件可知,最開始的 30 秒,/tmp/healthy
存在,cat
命令返回 0,Liveness 探測成功,這段時間 kubectl describe pod liveness
的 Events
部分會顯示正常的日誌。get
35 秒以後,日誌會顯示 /tmp/healthy
已經不存在,Liveness 探測失敗。再過幾十秒,幾回探測都失敗後,容器會被重啓。it
除了 Liveness 探測,Kubernetes Health Check 機制還包括 Readiness 探測,這是咱們下一節要學習的內容。
書籍:
1.《天天5分鐘玩轉Docker容器技術》
https://item.jd.com/16936307278.html
2.《天天5分鐘玩轉OpenStack》
https://item.jd.com/12086376.html