k8s startupProbe最佳實(shí)踐

前言:

先舉一個探針配置的例子

spec:
  ......
    spec:
      containers:
        ......
        livenessProbe: 
          httpGet:
            path: /healthy
            port: 5000
            scheme: HTTP
          failureThreshold: 5
          periodSeconds: 10
          successThreshold: 1
          timeoutSeconds: 1

上面的探針對于啟動快的應(yīng)用是適用的,比如說nginx 前端應(yīng)用封救,但對于啟動非常慢的大型應(yīng)用,如果我們按照上面的例子來配置 Readiness 和 Liveness 探針捣作,Pod 將因?yàn)樘结樖《肋h(yuǎn)無法啟動誉结。
對于一些大型的 Java 應(yīng)用來說,往往需要數(shù)分鐘時間才能夠完成啟動券躁。
StartupProbe 探針特別適用于業(yè)務(wù)應(yīng)用啟動慢的場景搓彻。當(dāng) Pod 啟動時,如果配置了 StartupProbe嘱朽,那么 Readiness 和 Liveness 探針都將被臨時禁用旭贬,直到 StartupProbe 探針返回成功才會啟用 Readiness 和 Liveness 探針,這也就避免了 Readiness 和 Liveness 在應(yīng)用啟動階段造成的干擾搪泳。也就是說稀轨,我們只要為業(yè)務(wù)配置合理的 StartupProbe 探針,就可以解決應(yīng)用啟動慢導(dǎo)致其他探針認(rèn)為 Pod 不健康的問題岸军。

StartupProbe設(shè)置經(jīng)驗(yàn)

一個例子

spec:
  containers:
  - name: your-container
    startupProbe:
      httpGet:
        path: /healthz
        port: 8080
      failureThreshold: 30
      initialDelaySeconds: 120
      periodSeconds: 10
      timeoutSeconds: 1
      successThreshold: 1
參數(shù)名稱 參數(shù)描述
initialDelaySeconds: 120 初始化延遲時間奋刽,告訴 kubelet 在執(zhí)行第一次探測前應(yīng)該等待多少秒,默認(rèn)是 0 秒艰赞,最小值是 0
periodSeconds: 10 探測周期間隔時間佣谐,指定了 kubelet 應(yīng)該每多少秒執(zhí)行一次存活探測,默認(rèn)是 10 秒方妖。最小值是 1
timeoutSeconds: 5 單次探測超時時間狭魂,探測的超時后等待多少秒,默認(rèn)值是 1 秒党觅,最小值是 1雌澄。
successThreshold: 1 從失敗轉(zhuǎn)為成功的重試次數(shù),探測器在失敗后杯瞻,被視為成功的最小連續(xù)成功數(shù)镐牺,默認(rèn)值是 1,存活探測的這個值必須是 1魁莉,最小值是 1睬涧。
failureThreshold: 30 從成功轉(zhuǎn)為失敗的重試次數(shù),當(dāng) Pod 啟動了并且探測到失敗旗唁,Kubernetes 的重試次數(shù)畦浓,存活探測情況下的放棄就意味著重新啟動容器,就緒探測情況下的放棄 Pod 會被打上未就緒的標(biāo)簽逆皮,默認(rèn)值是 3宅粥,最小值是 1。

設(shè)置合適的initialDelaySeconds和failureThreshold的值

即使有了 StartupProbe也是需要配置合理的字段值的电谣,如果將 initialDelaySeconds 字段的值從 10 秒鐘修改到 120 秒秽梅。這當(dāng)然是可以的抹蚀,但如果啟動時間不是 120 秒,或者你不太確定呢企垦?那似乎可以在修改了 initialDelaySeconds 的基礎(chǔ)上再將失敗次數(shù) failureThreshold 或者探測間隔 periodSeconds 加大环壤。
這個值需要設(shè)置一個合適的最大值,如果為了兼容應(yīng)用啟動慢的問題,我們主動降低了 kubernetes 檢測 Pod 健康狀態(tài)的頻率钞诡,這會延遲 kubernetes 感知故障的速度郑现。

我們可以通過日志系統(tǒng)分析服務(wù)多次的啟動時間,如下圖


image.png

圖中可以知道做大值是251荧降,最小值是223,我們可以分析出最大和最小之間有28秒的偏差接箫,保險(xiǎn)起見我們可以在最大值的基礎(chǔ)上再預(yù)留30秒的啟動時間,所以我們假設(shè)服務(wù)最長啟動時間為280
從圖片中可以看出每次啟動都不會低于100s朵诫,最小的也是223,我們可以在最小的基礎(chǔ)上辛友,稍微小一點(diǎn),比如將initialDelaySeconds 設(shè)置為200s,periodSeconds 周期我們可以保持為10s,那我們剩下就是要計(jì)算出合適的failureThreshold 的值剪返。我們可以通過公式废累,失敗閾值=(最長啟動時間-初始延遲)/探測周期 得知失敗閾值等于16,那么我們就得到了下面的探針配置脱盲。

spec:
  containers:
  - name: your-container
    startupProbe:
      httpGet:
        path: /healthz
        port: 8080
      failureThreshold: 16
      initialDelaySeconds: 200
      periodSeconds: 10
      timeoutSeconds: 1
      successThreshold: 1
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末邑滨,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子钱反,更是在濱河造成了極大的恐慌掖看,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,858評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件诈铛,死亡現(xiàn)場離奇詭異乙各,居然都是意外死亡墨礁,警方通過查閱死者的電腦和手機(jī)幢竹,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來恩静,“玉大人焕毫,你說我怎么就攤上這事∈磺” “怎么了邑飒?”我有些...
    開封第一講書人閱讀 165,282評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長级乐。 經(jīng)常有香客問我疙咸,道長,這世上最難降的妖魔是什么风科? 我笑而不...
    開封第一講書人閱讀 58,842評論 1 295
  • 正文 為了忘掉前任撒轮,我火速辦了婚禮乞旦,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘题山。我一直安慰自己兰粉,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,857評論 6 392
  • 文/花漫 我一把揭開白布顶瞳。 她就那樣靜靜地躺著玖姑,像睡著了一般。 火紅的嫁衣襯著肌膚如雪慨菱。 梳的紋絲不亂的頭發(fā)上焰络,一...
    開封第一講書人閱讀 51,679評論 1 305
  • 那天,我揣著相機(jī)與錄音符喝,去河邊找鬼舔琅。 笑死,一個胖子當(dāng)著我的面吹牛洲劣,可吹牛的內(nèi)容都是我干的备蚓。 我是一名探鬼主播,決...
    沈念sama閱讀 40,406評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼囱稽,長吁一口氣:“原來是場噩夢啊……” “哼郊尝!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起战惊,我...
    開封第一講書人閱讀 39,311評論 0 276
  • 序言:老撾萬榮一對情侶失蹤流昏,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后吞获,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體况凉,經(jīng)...
    沈念sama閱讀 45,767評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年各拷,在試婚紗的時候發(fā)現(xiàn)自己被綠了刁绒。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,090評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡烤黍,死狀恐怖知市,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情速蕊,我是刑警寧澤嫂丙,帶...
    沈念sama閱讀 35,785評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站规哲,受9級特大地震影響跟啤,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,420評論 3 331
  • 文/蒙蒙 一隅肥、第九天 我趴在偏房一處隱蔽的房頂上張望关顷。 院中可真熱鬧,春花似錦武福、人聲如沸议双。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽平痰。三九已至,卻和暖如春伍纫,著一層夾襖步出監(jiān)牢的瞬間宗雇,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評論 1 271
  • 我被黑心中介騙來泰國打工莹规, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留赔蒲,地道東北人。 一個月前我還...
    沈念sama閱讀 48,298評論 3 372
  • 正文 我出身青樓良漱,卻偏偏與公主長得像舞虱,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子母市,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,033評論 2 355

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

  • 我是 LEE患久,老李椅寺,一個在 IT 行業(yè)摸爬滾打 16 年的技術(shù)老兵。 事件背景 因?yàn)?k8s 中采用大量的異步機(jī)制...
    自在的LEE閱讀 3,264評論 2 0
  • 概述 健康檢查(Health Check)用于檢測您的應(yīng)用實(shí)例是否正常工作蒋失,是保障業(yè)務(wù)可用性的一種傳統(tǒng)機(jī)制返帕,一般用...
    徐亞松_v閱讀 12,012評論 0 5
  • 對于Pod的健康狀態(tài)檢測,kubernetes提供了兩類探針(Probe)來執(zhí)行對Pod的健康狀態(tài)檢測: live...
    taj3991閱讀 2,961評論 0 0
  • K8s中存在兩種類型的探針:liveness probe和readiness probe篙挽。 liveness pr...
    伊凡的一天閱讀 6,351評論 0 4
  • 5. k8s基于ceph存儲實(shí)現(xiàn)數(shù)據(jù)的持久化和共享 5.1 基于ceph rbd 讓k8s中的pod可以訪問cep...
    infoshow閱讀 641評論 1 0