探針介紹:
????????編排工具運行時,雖說pod掛掉會在控制器的調度下會重啟,出現pod重啟的時候,但是pod狀態是running,無法真實的反應當時pod健康狀態,我們可以通過Kubernetes的探針監控到pod的實時狀態。
Kubernetes三種探針類型
????????啟動探針(Startup Probe):判斷容器內的應用是否啟動完成(在啟動探針判斷成功前,就緒探針和存活探針將不會執行)
????????就緒探針(Readiness Probe):判斷容器是否已經就緒,容器將會處于未就緒的容器,不會進行流量的調度
????????存活探針(Liveness Probe):判斷容器內的應用程序是否正常,若不正常,K8s將會重新重新容器
配置項
????????initialDelaySeconds:等待我們定義的時間,結束后便開始探針檢查
????????periodSeconds:探針的 間隔時間
????????timeoutSeconds:探針的超時時間,當超過我們定義的時間后,便會被視為失敗
????????successThreshold:探針的最小連續成功數量
????????failure Threshould:探針的 最小連續失敗數量
三種探測容器的機制
????????1.HTTPGET探針對容器的IP地址(你知道的端口和路徑)執行HTTP GET請求
????????????????如果探測器收到響應,并且響應狀態碼不代表錯誤(換句話說,如果HTTP響應狀態碼是2xx或3xx),則認為探測成功
????????????????如果服務器返回錯誤響應狀態碼或者沒有響應,那么探測就被認為是失敗的,容器將被重新啟動。
????????2.TCP套接字探針嘗試與容器指定端口建立TCP連接。如果連接成功建立,則探測成功。否則,容器重新啟動
????????3.Exec探針在容器內執行任意命令,并檢查命令的退出狀態碼,如果狀態碼是0,則探測成功。所有其他狀態碼都認為失敗
啟動探針startupProbe
????????探針是針對Pod的,所有只需要在Pod上,template.pec處配置。這里測試使用ReplicaSet來測試
就緒探針readiness probe
????????啟動容器時,可以為看s配置一個等待時間,經過等待時間后才可以執行第一準備就緒檢查。之后,它會周期性的調用探針,并根據就緒探針的結果采取行動。如果某個Pod報告它尚未準備就緒,則會從該服務中刪除該Pod。如果Pod再次準備就緒,則重新添加Pod
????????與存活探針不同,如果容器未通過準備檢查,則不會被終止或重新啟動。這是存活探針和就緒探針確保只有準備號處理請求的Pod才可以接收請求。
如果一個容器的就緒探測失敗,則將該pod從endpoints中移除
????????查看未就緒的pod
????????????????kubectl describe pod readiness-gw6cf
????????????????可以看到,容器其實是在運行的,只是探針一直未就緒而已,就緒探針不會殺死容器(和存活探針的區別):curl直接訪問PodIP也是可以正常接收請求的
存活探針livenessProbe
????????curl進行ip端口校驗
????????修改httpgetport參數值為81,模擬存活探針失敗,探針失敗,會讓pod進行重啟
????????