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,則表面容器健康。
透過執行“cat /tmp/health”命令來判斷一個容器執行是否正常。而該Pod執行之後,在建立/tmp/health檔案的10s之後將刪除該檔案,而LivenessProbe健康檢查的初始探測時間(initialDelaySeconds)為15s,探測結果將是Fail,將導致kubelet殺掉該容器並重啟它。
2.TCPSocketAction: 透過容器的IP地址和埠號執行TCP檢查,如果能夠建立TCP連線,則表面容器健康。
3. HTTPGetAction: 透過容器的IP地址,埠號及路徑呼叫HTTP Get方法,如果響應的狀態碼大於等於200且小於400,則認為容器狀態健康。
kubelet定時傳送HTTP請求到localhost:80/_status/healthz來進行容器應用的健康檢查。
三:說明
1.initialDelaySeconds:啟動容器後進行首次健康檢查的等待時間,單位為s
2.timeoutSeconds: 健康檢查傳送請求後等待響應的超時時間,單位為s. 當超時發生時,kubelet會認為容器已經無法提供服務,將會重啟該容器。
對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
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
點選(此處)摺疊或開啟
-
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
三:說明
1.initialDelaySeconds:啟動容器後進行首次健康檢查的等待時間,單位為s
2.timeoutSeconds: 健康檢查傳送請求後等待響應的超時時間,單位為s. 當超時發生時,kubelet會認為容器已經無法提供服務,將會重啟該容器。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28624388/viewspace-2154412/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Kubernetes-POD的健康檢查
- kubernetes實踐之三十八:Pod排程
- Kubernetes叢集健康檢查最佳實踐
- kubernetes實踐之三十五:Pod配置管理ConfigMap
- Kubernetes:健康檢查
- kubernetes實踐之三十九:Pod初始化容器之Init ContainerAI
- 解決pod健康檢查問題
- kubernetes實踐之三十六:在容器內獲取Pod資訊 Downward APIAPI
- kubernetes實踐之三十一:kubectl
- kubernetes實踐之五十七:PodPreset
- kubernetes實踐之十七:架構架構
- Kubernetes服務pod的健康檢測liveness和readiness詳解
- kubernetes實踐之二十七:Harbor
- kubernetes實踐之二十二:Pod
- kubernetes實踐之三十三:基本概念
- kubernetes實踐之三十: SonarQube和SonarQube Runner
- kubernetes實踐之四十七:ResourceQuota ControllerController
- kubernetes實踐之三十二:Jenkins和SonarQube整合Jenkins
- kubernetes實踐之六十七:Istio介紹
- 名稱空間,親和性,pod生命週期,健康檢查
- 健康檢查,檢查啥,怎麼檢查?
- kubernetes實踐之三:ETCD TLS證書叢集安裝TLS
- kubernetes實踐之四十:Pod的升級與回滾
- kubernetes實踐之三十四: Master節點安裝與配置AST
- 在.NET Core 中實現健康檢查
- kubernetes pod內抓包,telnet檢查網路連線的幾種方式
- 健康檢查彙總
- EntityFramework Core健康檢查Framework
- Kubernetes最佳實踐生產檢查清單
- SOFABoot 健康檢查能力分析boot
- 容器探針-健康檢查
- kubernetes實踐之四十一:Pod自動擴容與縮容
- k8s 如何在命令列使用 kubectl 檢視一個 pod 的健康檢查頻率是多少?K8S命令列
- 使用Spring Boot實現動態健康檢查HealthChecksSpring Boot
- LVS - 使用用Keepalived實現健康檢查的示例
- Oracle SCN健康狀態檢查Oracle
- 如何在 ASP.Net Core 中實現 健康檢查ASP.NET
- MySQL資料庫健康檢查--MySQL巡檢MySql資料庫