Kubernetes Probes
本篇介紹 K8s 的 Probe 機制,包括 Readiness Probe、Liveness Probe 以及 1.16 版新增的 Startup Probe。
Pod 中 Container 的 Status 會透過 Probe 的機制進行確認,所有的 Container 的 Status 統整後會代表 Pod 的 Status。Probe 的診斷機制是由 Kubelet 呼叫 Container 上的 Endpoint,或是執行 Container 上的程式,若取得正常回應或正常執行則通過診斷。
Readiness Probe
當 Readiness Probe 失敗時 Pod 無法被 Service 取用,不會影響 Pod 的狀態
使用情境:
- Container 需要一段啟動時間來載入檔案或檢查一些設定
Readiness Probe 不應用於檢查服務的相依內容,如相依的 DB 服務等。當去檢查相依時,相依的服務們會開始逐個被判定錯誤,最終導致整個系統崩潰。面對這種相依服務發生問題時,比較的理想做法是將服務降級,受影響的 endpoint 回覆 503,再通知人員排除問題。
Liveness Probe
當 Liveness Probe 失敗時 Pod 會被重啟
使用情境:
- Container 發生錯誤時不會自己 crash
- 服務運行在 framework 中,無法控制整個 Container 的執行狀態,如在 servlet container 中
Reference: