以下內容均來自個人筆記并重新梳理,如有錯誤歡迎指正!如果對您有幫助,煩請點贊、關注、轉發!歡迎掃碼關注個人公眾號!
目錄
一、基本介紹
二、工作原理
三、探針類型
1、存活探針(LivenessProbe)
2、就緒探針(ReadinessProbe)
3、啟動探針(StartupProbe)
四、探測方式
1、EXEC 命令探測(ExecAction)
2、TCP 連接探測(TCPSocketAction)
3、HTTP 請求探測(HTTPGetAction)
五、資源清單(示例)
一、基本介紹
在 Kubernetes 中,健康檢查是集群通過探針(Probe)定期檢查容器是否健康運行,并自動維持容器健康運行的一種機制。
健康檢查可以保障容器內應用程序的穩定性和可用性,并控制應用程序何時可以提供對外訪問。
二、工作原理
- 定義探針:用戶在 Pod 中定義探針配置,包括探針類型、探測方式、探測間隔和閾值
- 觸發探針:Kubernetes 會根據定義的探針配置,定期觸發健康檢查
- 執行探針:Kubernetes 會根據定義的探針配置,在容器中執行 EXEC 命令、建立 TCP 連接或發送 HTTP Get 請求
- 結果處理:探針執行成功則等待下一次探測,探針執行失敗則根據既定規則對容器進行處理
三、探針類型
1、存活探針(LivenessProbe)
LivenessProbe 用于判斷容器是否存活,即是否處于 Running 狀態。如果 LivenessProbe 檢測到容器不健康,Kubernetes 會認為容器內應用程序已經崩潰或掛起,會通過 Kubelet 對該容器進行 Kill 和重啟處理。
2、就緒探針(ReadinessProbe)
ReadinessProbe 用于判斷容器是否可用,即是否處于 Ready 狀態。如果 Pod 中的全部容器都達到 Ready 狀態,Pod 才可以接收和處理請求,否則 Kubernetes 會認為容器內應用程序啟動異常,會通過 Kubelet 對該容器進行 Kill 和重啟處理。
3、啟動探針(StartupProbe)
某些應用程序啟動非常慢,如果只配置 LivenessProbe 或 ReadinessProbe,很可能出現應用程序還沒有完成啟動,對應的容器就被 Kill 掉無限重啟的情況。
配置有 StartupProbe 的 Pod,在應用程序沒有成功啟動之前,LivenessProbe 和?ReadinessProbe 均不生效,不會重啟容器。
四、探測方式
1、EXEC 命令探測(ExecAction)
嘗試在容器內執行一個 EXEC 命令,返回碼為 0 表明容器健康。
2、TCP 連接探測(TCPSocketAction)
嘗試與容器的指定端口建立?TCP 連接,如果能夠建立表明容器健康。
3、HTTP 請求探測(HTTPGetAction)
嘗試對容器的指定接口發送 HTTP Get?請求,如果響應碼大于等于 200 且小于 400 表明容器健康。
五、資源清單(示例)
apiVersion: apps/v1
kind: Deployment
metadata:nanme: demo-deployment
spec:
...spec:containers:- name: demo-container
...startupProbe / livenessProbe / readinessProbe:exec: # EXEC 命令探測方式command: ["cat", "/health.txt"]或tcpSocket: # TCP 連接探測方式port: 80或httpGet: # HTTP 請求探測方式path: /healthport: 80initialDelaySeconds: 5 # 首次探測前等待時間periodSeconds: 10 # 探測間隔時間timeoutSeconds: 1 # 探測超時時間successThreshold: 1 # 探測成功閾值failureThreshold: 3 # 探測失敗閾值