雲原生K8S中Pod健康檢查和服務可用性檢查的詳細說明
檢測目的:用於維持pod的魯棒性。當pod掛起時,部署將生成壹個新的pod。但是,如果pod運行正常,但是pod有問題,此時部署無法監視它。因此,有必要探測POD是否正常提供服務。
Kubernetes可以通過兩種類型的探針檢查Pod的健康狀態:LivenessProbe和readiness probe,Kubelet定期執行這兩種類型的探針來診斷容器的健康狀態。是通過部署實現的。
LivenessProbe和ReadinessProbe可以通過以下三種方式進行配置。
對於每種檢測模式,都需要設置initialDelaySeconds、timeoutSeconds等參數,其含義如下。
Kubernetes的ReadinessProbe機制可能無法滿足壹些復雜應用對容器中服務可用性的判斷。
Pod的ReadinessGate在Pod定義的readinessgate字段中設置。以下示例設置了壹個新的www.example.com/feature-1:類型的ReadinessGate
用於判斷容器是否有生命(運行狀態)。如果LivenessProbe檢測到容器不健康,kubelet會殺死容器,並根據容器的重啟策略做出相應的處理。
在容器內部執行壹個命令,如果命令的返回碼為0,說明容器是健康的。
資源文件定義
運行此部署。當pod創建成功後,創建壹個新文件並休眠30秒,休眠時刪除該文件。使用活性來檢測文件的存在
跑了30多秒後。該文件已被刪除,因此受到運行狀況檢查的影響,pod根據重啟策略重啟。
已經是99後第二次了
檢查節點機器docker中的容器ID。前後是不壹樣的。確保POD已關閉,然後重新啟動。
通過容器的IP地址、端口號和路徑調用HTTP Get方法。如果響應的狀態代碼大於或等於200且小於400,則認為容器是健康的。
創建壹個資源文件,即使用相關參數。
運行deploy,其探測機制訪問Ngixn的默認歡迎頁面。
刪除歡迎頁面時,會報告訪問錯誤,並在被點擊後重啟pod。
通過容器的IP地址和端口號執行TCP檢查,如果可以建立TCP連接,則容器是健康的。
資源文件定義
訪問端口8080,但是端口8080沒有打開,所以訪問會超時,連接無法建立,命中檢測,重啟Pod。
用於判斷容器服務是否可用(就緒狀態),只有當Pod達到就緒狀態才能接收請求。對不能探視負責
資源文件定義,使用鉤子構建需要檢查的文件。
使用Ngixn創建三個pod,並通過pod創建壹個SVC進行測試。
修改主頁文本
修改標簽
刪除文件檢測
使用POD創建SVC
測試SVC正常,三個吊艙將正常加載。
刪除文件測試
妳會發現pod-liveness的pod不再可用。
Kube-apiserver.yaml,兩個探針同時使用。