Kubernetes Health Check

2018年8月16日16:45:07 發(fā)表評(píng)論 5,050 ℃

Liveness探測(cè)

Kubernetes Health Check

啟動(dòng)進(jìn)程首先創(chuàng)建文件 /tmp/healthy,30 秒后刪除,在我們的設(shè)定中,如果 /tmp/healthy 文件存在,則認(rèn)為容器處于正常狀態(tài),反正則發(fā)生故障。

livenessProbe 部分定義如何執(zhí)行 Liveness 探測(cè):

1、探測(cè)的方法是:通過(guò) cat 命令檢查 /tmp/healthy 文件是否存在。如果命令執(zhí)行成功,返回值為零,Kubernetes 則認(rèn)為本次 Liveness 探測(cè)成功;如果命令返回值非零,本次 Liveness 探測(cè)失敗。

2、initialDelaySeconds: 10 指定容器啟動(dòng) 10 之后開(kāi)始執(zhí)行 Liveness 探測(cè),我們一般會(huì)根據(jù)應(yīng)用啟動(dòng)的準(zhǔn)備時(shí)間來(lái)設(shè)置。比如某個(gè)應(yīng)用正常啟動(dòng)要花 30 秒,那么 initialDelaySeconds 的值就應(yīng)該大于 30。

3、periodSeconds: 5 指定每 5 秒執(zhí)行一次 Liveness 探測(cè)。Kubernetes 如果連續(xù)執(zhí)行 3 次 Liveness 探測(cè)均失敗,則會(huì)殺掉并重啟容器。

Readiness探測(cè)

Readiness 探測(cè)的配置語(yǔ)法與 Liveness 探測(cè)完全一樣,只是將配置文件中的 livenessProbe 替換為了 readinessProbe

Liveness 探測(cè)和 Readiness 探測(cè)比較

1、Liveness 探測(cè)和 Readiness 探測(cè)是兩種 Health Check 機(jī)制,如果不特意配置,Kubernetes 將對(duì)兩種探測(cè)采取相同的默認(rèn)行為,即通過(guò)判斷容器啟動(dòng)進(jìn)程的返回值是否為零來(lái)判斷探測(cè)是否成功。

2、兩種探測(cè)的配置方法完全一樣,支持的配置參數(shù)也一樣。不同之處在于探測(cè)失敗后的行為:Liveness 探測(cè)是重啟容器;Readiness 探測(cè)則是將容器設(shè)置為不可用,不接收 Service 轉(zhuǎn)發(fā)的請(qǐng)求。

3、Liveness 探測(cè)和 Readiness 探測(cè)是獨(dú)立執(zhí)行的,二者之間沒(méi)有依賴,所以可以單獨(dú)使用,也可以同時(shí)使用。用 Liveness 探測(cè)判斷容器是否需要重啟以實(shí)現(xiàn)自愈;用 Readiness 探測(cè)判斷容器是否已經(jīng)準(zhǔn)備好對(duì)外提供服務(wù)。

health check在Scale Up中的應(yīng)用,示例配置文件:

Kubernetes Health Check

這里我們使用了不同于 exec 的另一種探測(cè)方法 -- httpGet。Kubernetes 對(duì)于該方法探測(cè)成功的判斷條件是 http 請(qǐng)求的返回代碼在 200-400 之間。

schema 指定協(xié)議,支持 HTTP(默認(rèn)值)和 HTTPS。

path 指定訪問(wèn)路徑。

port 指定端口。

上面配置的作用是:

1、容器啟動(dòng) 10 秒之后開(kāi)始探測(cè)。

2、如果 http://[container_ip]:8080/healthy 返回代碼不是 200-400,表示容器沒(méi)有就緒,不接收 Service web-svc 的請(qǐng)求。

3、每隔 5 秒再探測(cè)一次。

4、直到返回代碼為 200-400,表明容器已經(jīng)就緒,然后將其加入到 web-svc 的負(fù)責(zé)均衡中,開(kāi)始處理客戶請(qǐng)求。

5、探測(cè)會(huì)繼續(xù)以 5 秒的間隔執(zhí)行,如果連續(xù)發(fā)生 3 次失敗,容器又會(huì)從負(fù)載均衡中移除,直到下次探測(cè)成功重新加入。

health check 在滾動(dòng)更新中的應(yīng)用

Kubernetes Health Check

maxSurge

此參數(shù)控制滾動(dòng)更新過(guò)程中副本總數(shù)的超過(guò) DESIRED 的上限。maxSurge 可以是具體的整數(shù)(比如 3),也可以是百分百,向上取整。maxSurge 默認(rèn)值為 25%。

maxUnavailable

此參數(shù)控制滾動(dòng)更新過(guò)程中,不可用的副本相占 DESIRED 的最大比例。 maxUnavailable 可以是具體的整數(shù)(比如 3),也可以是百分百,向下取整。maxUnavailable 默認(rèn)值為 25%。

Kubernetes Health Check

【騰訊云】云服務(wù)器、云數(shù)據(jù)庫(kù)、COS、CDN、短信等云產(chǎn)品特惠熱賣(mài)中

發(fā)表評(píng)論

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: