Pod健康檢查和服務(wù)可用性

Pod健康檢查和服務(wù)可用性

Kubernetes 對 Pod 的健康狀態(tài)可以通過兩類探針來檢查:LivenessProbeReadinessProbe矾兜,kubelet定期執(zhí)行這兩類探針來診斷容器的健康狀況

(1) LivenessProbe探針:用于判斷容器是否存活(Running狀態(tài))损趋,如果LivenessProbe探針探測到容器不健康,則kubelet將殺掉該容器椅寺,并根據(jù)容器的重啟策略做相應(yīng)的處理浑槽。如果一個容器不包含LivenessProbe探針,那么kubelet認(rèn)為該容器的LivenessProbe探針返回的值永遠(yuǎn)是Success返帕。

(2) ReadinessProbe探針:用于判斷容器服務(wù)是否可用(Ready狀態(tài))桐玻,達(dá)到Ready狀態(tài)Pod才可以接收請求。對于被Service管理的Pod荆萤,ServicePod Endpoint關(guān)聯(lián)關(guān)系也將基于Pod是否Ready進(jìn)行設(shè)置镊靴。如果在運(yùn)行過程中Ready狀態(tài)變?yōu)镕alse,則系統(tǒng)自動將其從Service的后端Endpoint列表中隔離出去链韭,后續(xù)再把恢復(fù)到Ready狀態(tài)的Pod加回后端Endpoint列表偏竟。這樣就能保證客戶端在訪問Service時不會被轉(zhuǎn)發(fā)到服務(wù)不可用的Pod實(shí)例上

LivenessProbeReadinessProbe均可配置以下三種實(shí)現(xiàn)方式敞峭。

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

在下面的例子中殖蚕,通過執(zhí)行“cat /tmp/health”命令來判斷一個容器運(yùn)行是否正常轿衔。在該P(yáng)od運(yùn)行后,將在創(chuàng)建/tmp/health文件10s后刪除該文件睦疫,而LivenessProbe健康檢查的初始探測時間(initialDelaySeconds)為15s害驹,探測結(jié)果是Fail,將導(dǎo)致kubelet殺掉該容器并重啟它:

---
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

(2)TCPSocketAction:通過容器的IP地址端口號執(zhí)行TCP檢查蛤育,如果能夠建立TCP連接宛官,則表明容器健康。

在下面的例子中缨伊,通過與容器內(nèi)的localhost:80建立TCP連接進(jìn)行健康檢查:

---
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

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

在下面的例子中党晋,kubelet定時發(fā)送HTTP請求到localhost:80/_status/healthz來進(jìn)行容器應(yīng)用的健康檢查:

---
apiVersion: v1
kind: Pod
metadata:
  name: pod-with-healthcheck
spec:
  containers:
  - name: nginx
    image: nginx
    ports:
    - containerPort: 80
    livenessProbe:
      httpGet:
        path: /_status/healthz
        port: 80
      initialDelaySeconds: 30
      timeoutSeconds: 1

對于每種探測方式谭胚,都需要設(shè)置initialDelaySeconds和timeoutSeconds兩個參數(shù),它們的含義分別如下未玻。

  • initialDelaySeconds:啟動容器后進(jìn)行首次健康檢查的等待時間灾而,單位為s。
  • timeoutSeconds:健康檢查發(fā)送請求后等待響應(yīng)的超時時間扳剿,單位為s旁趟。當(dāng)超時發(fā)生時,kubelet會認(rèn)為容器已經(jīng)無法提供服務(wù)庇绽,將會重啟該容器锡搜。

Kubernetes的ReadinessProbe機(jī)制可能無法滿足某些復(fù)雜應(yīng)用對容器內(nèi)服務(wù)可用狀態(tài)的判斷,所以Kubernetes從1.11版本開始瞧掺,引入Pod Ready++特性對Readiness探測機(jī)制進(jìn)行擴(kuò)展耕餐,在1.14版本時達(dá)到GA穩(wěn)定版,稱其為Pod Readiness Gates辟狈。

通過Pod Readiness Gates機(jī)制肠缔,用戶可以將自定義的ReadinessProbe探測方式設(shè)置在Pod上,輔助Kubernetes設(shè)置Pod何時達(dá)到服務(wù)可用狀態(tài)(Ready)哼转。為了使自定義的ReadinessProbe生效明未,用戶需要提供一個外部的控制器(Controller)來設(shè)置相應(yīng)的Condition狀態(tài)。

Pod的Readiness Gates在Pod定義中的ReadinessGate字段進(jìn)行設(shè)置壹蔓。下面的例子設(shè)置了一個類型為www.example.com/feature-1的新Readiness Gate:

image.png

新增的自定義Condition的狀態(tài)(status)將由用戶自定義的外部控制器設(shè)置趟妥,默認(rèn)值為False。Kubernetes將在判斷全部readinessGates條件都為True時庶溶,才設(shè)置Pod為服務(wù)可用狀態(tài)(Ready為True)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末煮纵,一起剝皮案震驚了整個濱河市懂鸵,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌行疏,老刑警劉巖匆光,帶你破解...
    沈念sama閱讀 217,084評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異酿联,居然都是意外死亡终息,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評論 3 392
  • 文/潘曉璐 我一進(jìn)店門贞让,熙熙樓的掌柜王于貴愁眉苦臉地迎上來周崭,“玉大人,你說我怎么就攤上這事喳张⌒颍” “怎么了?”我有些...
    開封第一講書人閱讀 163,450評論 0 353
  • 文/不壞的土叔 我叫張陵销部,是天一觀的道長摸航。 經(jīng)常有香客問我,道長舅桩,這世上最難降的妖魔是什么酱虎? 我笑而不...
    開封第一講書人閱讀 58,322評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮擂涛,結(jié)果婚禮上读串,老公的妹妹穿的比我還像新娘。我一直安慰自己撒妈,他們只是感情好恢暖,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,370評論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著踩身,像睡著了一般胀茵。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上挟阻,一...
    開封第一講書人閱讀 51,274評論 1 300
  • 那天琼娘,我揣著相機(jī)與錄音,去河邊找鬼附鸽。 笑死脱拼,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的坷备。 我是一名探鬼主播熄浓,決...
    沈念sama閱讀 40,126評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了赌蔑?” 一聲冷哼從身側(cè)響起俯在,我...
    開封第一講書人閱讀 38,980評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎娃惯,沒想到半個月后跷乐,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,414評論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡趾浅,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,599評論 3 334
  • 正文 我和宋清朗相戀三年愕提,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片皿哨。...
    茶點(diǎn)故事閱讀 39,773評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡浅侨,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出证膨,到底是詐尸還是另有隱情如输,我是刑警寧澤,帶...
    沈念sama閱讀 35,470評論 5 344
  • 正文 年R本政府宣布椎例,位于F島的核電站挨决,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏订歪。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,080評論 3 327
  • 文/蒙蒙 一肆捕、第九天 我趴在偏房一處隱蔽的房頂上張望刷晋。 院中可真熱鬧,春花似錦慎陵、人聲如沸眼虱。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,713評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽捏悬。三九已至,卻和暖如春润梯,著一層夾襖步出監(jiān)牢的瞬間过牙,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,852評論 1 269
  • 我被黑心中介騙來泰國打工纺铭, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留寇钉,地道東北人。 一個月前我還...
    沈念sama閱讀 47,865評論 2 370
  • 正文 我出身青樓舶赔,卻偏偏與公主長得像扫倡,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子竟纳,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,689評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 參考 https://kubernetes.io/docs/tasks/configure-pod-contain...
    _fishman閱讀 489評論 0 0
  • 概述 健康檢查(Health Check)用于檢測您的應(yīng)用實(shí)例是否正常工作撵溃,是保障業(yè)務(wù)可用性的一種傳統(tǒng)機(jī)制疚鲤,一般用...
    徐亞松_v閱讀 12,006評論 0 5
  • 視頻教程連接:kubernetes快速入門 寫在前面 上一篇文章中kubernetes系列教程(七)深入玩轉(zhuǎn)pod...
    HappyLau談云計算閱讀 910評論 0 0
  • 現(xiàn)在在Pod的整個生命周期中,能影響到Pod的就只剩下健康檢查這一部分了缘挑。在k8s集群當(dāng)中石咬,我們可以通過配置liv...
    wangfs閱讀 1,097評論 0 1
  • 久違的晴天,家長會卖哎。 家長大會開好到教室時鬼悠,離放學(xué)已經(jīng)沒多少時間了。班主任說已經(jīng)安排了三個家長分享經(jīng)驗(yàn)亏娜。 放學(xué)鈴聲...
    飄雪兒5閱讀 7,523評論 16 22