健康檢查是一項關鍵功能,它允許系統根據預設標準定期檢查容器的運行狀態。若未配置健康檢查,即使容器內部的應用程序發生故障,Pod也可能無法察覺,從而導致服務中斷,盡管Pod的狀態仍顯示為正常。
Kubernetes提供了三種類型的健康檢查探針,以應對不同的監控需求:
存活探針(livenessProbe):類似于執行系統級的進程檢查(如ps命令),用于確定容器是否仍在正常運行。若存活檢查失敗,Kubernetes將重啟該容器。
就緒探針(readinessProbe):用于評估容器是否已準備好接收流量。對于啟動時間較長或依賴外部服務的容器,此探針尤為重要。若就緒檢查失敗,Kubernetes將阻止流量流向該容器。
啟動探針(startupProbe):在容器啟動階段使用,以確保在存活和就緒檢查之前,應用程序有足夠的時間完成初始化。這有助于避免因啟動緩慢而導致的誤判重啟。
檢查機制
HTTP請求檢查:適用于提供HTTP/HTTPS服務的容器。Kubernetes將定期發送GET請求至指定路徑和端口,若響應碼在200至399之間,則視為檢查成功。
TCP端口檢查:針對提供TCP服務的容器,Kubernetes將嘗試建立TCP連接。若連接成功,則檢查通過。
執行命令檢查:用戶可指定容器內的命令,Kubernetes將定期執行該命令。若命令返回0,則檢查成功。
注意
執行命令時,需確保所需程序已包含在容器鏡像中,且對于shell腳本,需指定腳本解析器。
GRPC檢查(僅在特定版本及以上支持):無需暴露HTTP端點或可執行文件,Kubernetes可通過GRPC連接查詢應用狀態。
配置參數
檢測周期(periodSeconds):探針的檢測頻率,以秒為單位。
延遲時間(initialDelaySeconds):容器啟動后,開始健康檢查前的等待時間。
超時時間(timeoutSeconds):健康檢查的最大等待時間,超過則視為失敗。
成功閾值(successThreshold):連續成功次數,達到此值后,將狀態更改為成功。
最大失敗次數(failureThreshold):探測失敗時的重試次數。