K8s中對于pod資源對象的健康狀態檢測,提供了三類probe(探針)來執行對pod的健康監測:
livenessProbe探針
可以根據用戶自定義規則來判定pod是否健康,如果livenessProbe探針探測到容器不健康,則kubelet會根據其重啟策略來決定是否重啟,如果一個容器不包含livenessProbe探針,則kubelet會認為容器的livenessProbe探針的返回值永遠成功。
ReadinessProbe探針
同樣是可以根據用戶自定義規則來判斷pod是否健康,如果探測失敗,控制器會將此pod從對應service的endpoint列表中移除,從此不再將任何請求調度到此Pod上,直到下次探測成功。
startupProbe探針
啟動檢查機制,應用一些啟動緩慢的業務,避免業務長時間啟動而被上面兩類探針kill掉,這個問題也可以換另一種方式解決,就是定義上面兩類探針機制時,初始化時間定義的長一些即可。