溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

kubernetes中如何實(shí)現(xiàn)Pod健康檢查

發(fā)布時(shí)間:2021-12-24 16:11:06 來(lái)源:億速云 閱讀:131 作者:小新 欄目:云計(jì)算

小編給大家分享一下kubernetes中如何實(shí)現(xiàn)Pod健康檢查,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

一:前言
對(duì)Pod的健康狀態(tài)檢查可以通過(guò)兩類(lèi)探針來(lái)檢查:LivenessProbe和ReadinessProbe
1.LivenessProbe探針: 用于判斷容器是否存活,如果LivenessProbe探針探測(cè)到容器不健康,則kubelet將殺掉該容器,并根據(jù)容器的重啟策略做相應(yīng)的處理。如果一個(gè)容器不包含LivenessProbe探針,那么kubelet認(rèn)為該容器的LivenessProbe探針?lè)祷刂涤肋h(yuǎn)是“Success”.

2.ReadinessProbe探針: 用于判斷容器是否啟動(dòng)完成,可以接收請(qǐng)求。如果ReadinessProbe 探針檢測(cè)到失敗,則Pod的狀態(tài)將被修改。Endpoint Controller將從Service的Endpoint中刪除包括該容器所在Pod的Endpoint.

二:LivenessProbe實(shí)現(xiàn)方式

1.ExecAction: 在容器內(nèi)部執(zhí)行一個(gè)命令,如果該命令的返回碼為0,則表面容器健康。

  1. apiVersion: v1

  2. kind: Pod

  3. metadata:

  4.   labels:

  5.     test: liveness

  6.   name: liveness-exec

  7. spec:

  8.   containers:

  9.   -  name:liveness

  10.     image:busybox

  11.     args:

  12.     -  /bin/sh

  13.     - -c

  14.     - echo ok > /tmp/health; sleep 10; rm -rf /tmp/health; sleep 600

  15.     livenessProbe:

  16.       exec:

  17.         command:

  18.         - cat

  19.         - /tmp/health

  20.     initialDelaySeconds: 15

  21.     timeoutSeconds: 1

通過(guò)執(zhí)行“cat /tmp/health”命令來(lái)判斷一個(gè)容器運(yùn)行是否正常。而該P(yáng)od運(yùn)行之后,在創(chuàng)建/tmp/health文件的10s之后將刪除該文件,而LivenessProbe健康檢查的初始探測(cè)時(shí)間(initialDelaySeconds)為15s,探測(cè)結(jié)果將是Fail,將導(dǎo)致kubelet殺掉該容器并重啟它。

2.TCPSocketAction: 通過(guò)容器的IP地址和端口號(hào)執(zhí)行TCP檢查,如果能夠建立TCP連接,則表面容器健康。

  1. apiVersion: v1

  2. kind: Pod

  3. metadata:

  4.   name: pod-with-healthcheck

  5. spec:

  6.   containers:

  7.   - name: nginx

  8.     image: nginx

  9.     ports:

  10.     - containerPort: 80

  11.   livenessProbe:

  12.     tcpSocket:

  13.       port: 80

  14.     initialDelaySeconds: 30

  15.     timeoutSeconds: 1

3. HTTPGetAction: 通過(guò)容器的IP地址,端口號(hào)及路徑調(diào)用HTTP Get方法,如果響應(yīng)的狀態(tài)碼大于等于200且小于400,則認(rèn)為容器狀態(tài)健康。


  1. apiVersion: v1

  2. kind: Pod

  3. metadata:

  4.   name: pod-with-healthcheck

  5. spec:

  6.   containers:

  7.   - name: nginx

  8.     image: nginx

  9.     ports:

  10.     - containerPort: 80

  11.   livenessProbe:

  12.     httpGet:

  13.       port: 80

  14.       path: /_status/healthz

  15.     initialDelaySeconds: 30

  16.     timeoutSeconds: 1

kubelet定時(shí)發(fā)送HTTP請(qǐng)求到localhost:80/_status/healthz來(lái)進(jìn)行容器應(yīng)用的健康檢查。

三:說(shuō)明

1.initialDelaySeconds:?jiǎn)?dòng)容器后進(jìn)行首次健康檢查的等待時(shí)間,單位為s
2.timeoutSeconds: 健康檢查發(fā)送請(qǐng)求后等待響應(yīng)的超時(shí)時(shí)間,單位為s. 當(dāng)超時(shí)發(fā)生時(shí),kubelet會(huì)認(rèn)為容器已經(jīng)無(wú)法提供服務(wù),將會(huì)重啟該容器。

以上是“kubernetes中如何實(shí)現(xiàn)Pod健康檢查”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI