Liveness 探測 - 每天5分鐘玩轉 Docker 容器技術(143)

jj1130050965發表於2020-12-06

Liveness 探測 - 每天5分鐘玩轉 Docker 容器技術(143)

原創 CloudMan CloudMan 2018-03-19

第143篇

Liveness 探測

Liveness 探測讓使用者可以自定義判斷容器是否健康的條件。如果探測失敗,Kubernetes 就會重啟容器。

還是舉例說明,建立如下 Pod:

啟動程式首先建立檔案 /tmp/healthy,30 秒後刪除,在我們的設定中,如果 /tmp/healthy 檔案存在,則認為容器處於正常狀態,反正則發生故障。

livenessProbe 部分定義如何執行 Liveness 探測:

  1. 探測的方法是:通過 cat 命令檢查 /tmp/healthy 檔案是否存在。如果命令執行成功,返回值為零,Kubernetes 則認為本次 Liveness 探測成功;如果命令返回值非零,本次 Liveness 探測失敗。

  2. initialDelaySeconds: 10 指定容器啟動 10 之後開始執行 Liveness 探測,我們一般會根據應用啟動的準備時間來設定。比如某個應用正常啟動要花 30 秒,那麼 initialDelaySeconds 的值就應該大於 30。

  3. periodSeconds: 5 指定每 5 秒執行一次 Liveness 探測。Kubernetes 如果連續執行 3 次 Liveness 探測均失敗,則會殺掉並重啟容器。

下面建立 Pod liveness

從配置檔案可知,最開始的 30 秒,/tmp/healthy 存在,cat 命令返回 0,Liveness 探測成功,這段時間 kubectl describe pod liveness 的 Events部分會顯示正常的日誌。

35 秒之後,日誌會顯示 /tmp/healthy 已經不存在,Liveness 探測失敗。再過幾十秒,幾次探測都失敗後,容器會被重啟。

除了 Liveness 探測,Kubernetes Health Check 機制還包括 Readiness 探測,這是我們下一節要學習的內容。

書籍:
1.《每天5分鐘玩轉Docker容器技術》
https://item.jd.com/16936307278.html(點選“閱讀原文”直達)

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

相關文章