日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
Docker容器原生健康檢查機(jī)制詳解

docker容器原生健康檢查機(jī)制詳解

作者:路多辛 2023-05-09 07:34:25

云計(jì)算

云原生 本文介紹Docker中兩種原生的健康檢查方式,使用起來(lái)非常方便。目前主流的容器編排框架也都自帶了健康健康檢查功能,這種情況下不需要使用Docker原生的健康檢查方式。

成都創(chuàng)新互聯(lián)堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站制作、網(wǎng)站設(shè)計(jì)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的張家口網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

為什么需要健康檢查機(jī)制?

健康檢查機(jī)制是用來(lái)檢查服務(wù)的可用性,當(dāng)服務(wù)不可用時(shí)及時(shí)重啟以恢復(fù)可用性。之前的文章《Kubernetes中配置livenessProbe、readinessProbe和startupProbe》講解了Kubernetes中的各種健康檢查類型和配置方法,本篇文章講解一下docker容器的健康檢查機(jī)制。

看過(guò)上文提到的那篇文章的同學(xué)型相信肯定能理解為什么需要對(duì)服務(wù)本身做健康檢查。就以docker為例再解釋一下,Docker Daemon用來(lái)運(yùn)行和管理容器,本身會(huì)監(jiān)控容器中PID為1的進(jìn)程,其實(shí)在實(shí)際場(chǎng)景中僅監(jiān)控PID為1的進(jìn)程是不夠的。例如當(dāng)容器中的服產(chǎn)生死鎖的情況,這時(shí)候服務(wù)雖然不能處理用戶請(qǐng)求,但是PID為1的進(jìn)程依然是運(yùn)行狀態(tài)。

Docker健康檢查機(jī)制

Docker健康檢查有兩種方式:

  • 在Dockerfile中使用HEALTHCHECK命令配置健康檢查策略;
  • 在啟動(dòng)容器時(shí)(docker run 命令)配置健康檢查策略。

在Dockerfile中使用HEALTHCHECK命令配置健康檢查策略

在Dockerfile中使用HEALTHCHECK聲明健康檢查策略,容器啟動(dòng)后就會(huì)自動(dòng)進(jìn)行健康檢查。HEALTHCHECK支持下列選項(xiàng):

  • --interval=<間隔時(shí)間>:兩次健康檢查的間隔時(shí)間,默認(rèn)30 秒;
  • --timeout=<超時(shí)時(shí)間>:健康檢查命令運(yùn)行超時(shí)時(shí)間,如果超過(guò)這個(gè)時(shí)間,本次健康檢查被視為失敗,默認(rèn) 30 秒;
  • --retries=<重試次數(shù)>:當(dāng)連續(xù)重試指定次數(shù)后,則將容器狀態(tài)置為 unhealthy,默認(rèn) 3 次。
  • --start-period=<間隔>: 應(yīng)用啟動(dòng)時(shí)間,不計(jì)啟動(dòng)過(guò)程中的健康檢查失效情況,默認(rèn) 0 秒。

使用示例如下:

from elasticsearch:latest
HEALTHCHECK --interval=5s --timeout=2s --retries=3 \
CMD curl --silent --fail localhost:9200/_cluster/health || exit 1

在Dockerfile中HEALTHCHECK最好只寫(xiě)一個(gè),如果寫(xiě)了多個(gè),只有最后一個(gè)會(huì)有效。

CMD命令返回值有三種,如下

  • 0,成功;
  • 1,失??;
  • 2,保留值,不要使用。

執(zhí)行docker run后容器初始狀態(tài)為starting,等待配置的interval時(shí)間后,開(kāi)始執(zhí)行健康檢查。如果單次檢查返回值不是0或者檢查時(shí)間超過(guò)了timeout,本次檢查被認(rèn)為失敗。如果健康檢查連續(xù)失敗次數(shù)超過(guò)了retries,狀態(tài)就會(huì)變?yōu)閡nhealthy,健康檢查結(jié)果一旦成功,容器就會(huì)被置為healthy狀態(tài)。

在啟動(dòng)容器時(shí)(docker run 命令)配置健康檢查策略

示例如下:

$ docker run --rm -d \
     --name=es \
     --health-cmd="curl --silent --fail localhost:9200/_cluster/health || exit 1" \
     --health-interval=5s \
     --health-timeout=2s \
     --health-retries=3 \
     elasticsearch:latest

參數(shù)代表的意思和第一種方式中的相同,健康檢查命令的輸出存儲(chǔ)在健康狀態(tài)里,可以用docker inspect命令查看。

小結(jié)

本文介紹了Docker中兩種原生的健康檢查方式,使用起來(lái)非常方便。目前主流的容器編排框架也都自帶了健康健康檢查功能,這種情況下不需要使用Docker原生的健康檢查方式。


本文題目:Docker容器原生健康檢查機(jī)制詳解
瀏覽地址:http://www.dlmjj.cn/article/djisiop.html