kubernetes的裡針對容器的健康檢查分為兩種,分別為存活探針(livenessProbe)和就緒探針(readinessProbe),定義在pod的containers的具體容器的定義裡面。存活探針用來探測容器程序是否存活,就緒探針用於確定容器是否已經就緒可以接受流量。
1.livenessProbe
存活探針會對容器程序的狀態做監控,檢測是否存活,如果不存活即重啟以恢復程序。探測方法有三種:
⑴ExecAction:
透過執行一個預先定義的shell命令或者指令碼,若正常退出則正常,否則異常,yaml檔案中的寫法為:
livenessProbe:
exec:
command:
- cat
- /tmp/health
initialDelaySeconds: 5 ##容器啟動之後延遲幾秒開始檢測
timeoutSeconds: 1 ##檢測失敗的超時時間
failureThreshold: 3 ##幾次失敗認為重啟啟動失敗
periodSeconds: 10 ##執行探測的頻率(以秒為單位)
successThreshold: 1 ##探測成功的最小連續成功數
⑵TCPSocketAction:
透過探測指定的埠是否開啟檢測容器是否正常,yaml檔案的寫法為:
tcpSocket:
port: 80
initialDelaySeconds: 5
timeoutSeconds: 1
⑶HTTPGetAction:
執行一個http請求探測指定的地址、埠和uri,如果其響應程式碼在200-400之間則任務成功,yaml檔案的寫法為:
httpGet:
path: /
scheme: HTTPS
host不指定即為pod的ip。
2.readinessProbe
用於探測業務邏輯是否就緒,是否準備好處理客戶端流量,如果檢測不透過會把pod的ip從對應service的endpoint列表中剔除,只有readinessProbe返回成功的才會被加入到service的轉發列表中,避免類似程序啟動但內部無法處理業務邏輯的情況。yaml檔案的寫法和livenessProbe完全相同,只是把livenessProbe替換為readinessProbe,兩者擁有相同的引數和相同的監測方式。
kubernetes的裡針對容器的健康檢查分為兩種,分別為存活探針(livenessProbe)和就緒探針(readinessProbe),定義在pod的containers的具體容器的定義裡面。存活探針用來探測容器程序是否存活,就緒探針用於確定容器是否已經就緒可以接受流量。
1.livenessProbe
存活探針會對容器程序的狀態做監控,檢測是否存活,如果不存活即重啟以恢復程序。探測方法有三種:
⑴ExecAction:
透過執行一個預先定義的shell命令或者指令碼,若正常退出則正常,否則異常,yaml檔案中的寫法為:
livenessProbe:
exec:
command:
- cat
- /tmp/health
initialDelaySeconds: 5 ##容器啟動之後延遲幾秒開始檢測
timeoutSeconds: 1 ##檢測失敗的超時時間
failureThreshold: 3 ##幾次失敗認為重啟啟動失敗
periodSeconds: 10 ##執行探測的頻率(以秒為單位)
successThreshold: 1 ##探測成功的最小連續成功數
⑵TCPSocketAction:
透過探測指定的埠是否開啟檢測容器是否正常,yaml檔案的寫法為:
livenessProbe:
tcpSocket:
port: 80
initialDelaySeconds: 5
timeoutSeconds: 1
⑶HTTPGetAction:
執行一個http請求探測指定的地址、埠和uri,如果其響應程式碼在200-400之間則任務成功,yaml檔案的寫法為:
livenessProbe:
httpGet:
path: /
port: 80
scheme: HTTPS
initialDelaySeconds: 5
timeoutSeconds: 1
host不指定即為pod的ip。
2.readinessProbe
用於探測業務邏輯是否就緒,是否準備好處理客戶端流量,如果檢測不透過會把pod的ip從對應service的endpoint列表中剔除,只有readinessProbe返回成功的才會被加入到service的轉發列表中,避免類似程序啟動但內部無法處理業務邏輯的情況。yaml檔案的寫法和livenessProbe完全相同,只是把livenessProbe替換為readinessProbe,兩者擁有相同的引數和相同的監測方式。