您好,登錄后才能下訂單哦!
小編給大家分享一下kubernetes中如何實現Pod健康檢查,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
一:前言
對Pod的健康狀態檢查可以通過兩類探針來檢查:LivenessProbe和ReadinessProbe
1.LivenessProbe探針: 用于判斷容器是否存活,如果LivenessProbe探針探測到容器不健康,則kubelet將殺掉該容器,并根據容器的重啟策略做相應的處理。如果一個容器不包含LivenessProbe探針,那么kubelet認為該容器的LivenessProbe探針返回值永遠是“Success”.
2.ReadinessProbe探針: 用于判斷容器是否啟動完成,可以接收請求。如果ReadinessProbe 探針檢測到失敗,則Pod的狀態將被修改。Endpoint Controller將從Service的Endpoint中刪除包括該容器所在Pod的Endpoint.
二:LivenessProbe實現方式
1.ExecAction: 在容器內部執行一個命令,如果該命令的返回碼為0,則表面容器健康。
apiVersion: v1
kind: Pod
metadata:
labels:
test: liveness
name: liveness-exec
spec:
containers:
- name:liveness
image:busybox
args:
- /bin/sh
- -c
- echo ok > /tmp/health; sleep 10; rm -rf /tmp/health; sleep 600
livenessProbe:
exec:
command:
- cat
- /tmp/health
initialDelaySeconds: 15
timeoutSeconds: 1
通過執行“cat /tmp/health”命令來判斷一個容器運行是否正常。而該Pod運行之后,在創建/tmp/health文件的10s之后將刪除該文件,而LivenessProbe健康檢查的初始探測時間(initialDelaySeconds)為15s,探測結果將是Fail,將導致kubelet殺掉該容器并重啟它。
2.TCPSocketAction: 通過容器的IP地址和端口號執行TCP檢查,如果能夠建立TCP連接,則表面容器健康。
apiVersion: v1
kind: Pod
metadata:
name: pod-with-healthcheck
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80
livenessProbe:
tcpSocket:
port: 80
initialDelaySeconds: 30
timeoutSeconds: 1
3. HTTPGetAction: 通過容器的IP地址,端口號及路徑調用HTTP Get方法,如果響應的狀態碼大于等于200且小于400,則認為容器狀態健康。
apiVersion: v1
kind: Pod
metadata:
name: pod-with-healthcheck
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80
livenessProbe:
httpGet:
port: 80
path: /_status/healthz
initialDelaySeconds: 30
timeoutSeconds: 1
kubelet定時發送HTTP請求到localhost:80/_status/healthz來進行容器應用的健康檢查。
三:說明
1.initialDelaySeconds:啟動容器后進行首次健康檢查的等待時間,單位為s
2.timeoutSeconds: 健康檢查發送請求后等待響應的超時時間,單位為s. 當超時發生時,kubelet會認為容器已經無法提供服務,將會重啟該容器。
以上是“kubernetes中如何實現Pod健康檢查”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。