startupProbe存在的意義是什麼?

startupProbe存在的意義是什麼?

引言

今天在整理思惟導圖的時候忽然發現有個我不知道的探針startupProbe,因而查了下官方是這樣解釋的:能夠定義一個啓動探針,該探針將推遲全部其餘探針,直到 Pod 完成啓動爲止。看完這句話有蒙圈因而提出了下面這個問題:ide

startupProbe 啓動探針存在的意義是否是: 若是服務A啓動須要1分鐘 ,咱們存活探針探測的時候設置的是initialDelaySeconds 10s後開始探測,而後她探測的時候發現服務不正常,而後就開始重啓Pod陷入死循環,可是若是意義在這個地方,那咱們能夠把探測時間調整大一點,failureThreshold 把這個也多設置幾回就好了啊。 爲何還要單獨的設置一個satrtupProbe呢?code

通過給大佬討論得出以下答案生命週期

startupProbe的存在乎義?

在繼續往下看的時候你須要知道這個: startupProbe 和 livenessProbe 最大的區別就是startupProbe在探測成功以後就不會繼續探測了,而livenessProbe在pod的生命週期中一直在探測。kubernetes

若是沒有startupProbe探針的話咱們只設置livenessProbe探針話會存在以下問題: 一個服務若是前期啓動須要很長時間,那麼它後面死亡未被發現的時間就越長,爲何會這麼說呢?假設咱們一個服務A啓動完成須要2分鐘,那麼咱們以下開始定義livenessProbeit

livenessProbe:
  httpGet:
    path: /test
    prot: 80
failureThreshold: 1
initialDelay:5
periodSeconds: 5

若是咱們這樣定義的話,那pod 5s就會根據重啓策略進行一次重啓,這個時候你會發現pod一直會陷入死循環,那咱們能夠按照上面的猜測把配置改爲這樣io

livenessProbe:
  httpGet:
    path: /test
    prot: 80
failureThreshold: 6
initialDelay:40
periodSeconds: 5

你確定會說你看這樣不就好了嗎?這樣的話pod就不會陷入死循環能啓動起來了,確實這樣pod可以啓動起來了,可是你有沒有考慮過這樣一個問題,當咱們啓動完成以後,在後期的探測中,你須要6*5=30s才能發現這個pod不可用,這個時候你的服務已經中止運行了30s你才發現,這在生產中有多是不會被原諒的。
還有就是這邊只是咱們假設一個服務A須要1分鐘才能起來,可是在實際生產中你如何定義這些值呢???
針對上面這兩個問題引入startupProbe以後都解決了思維導圖

livenessProbe:
  httpGet:
    path: /test
    prot: 80
failureThreshold: 1
initialDelay:5
periodSeconds: 5

livenessProbe:
  httpGet:
    path: /test
    prot: 80
failureThreshold: 60
initialDelay:5
periodSeconds: 5

咱們這樣設置以後,因爲啓動探針的存在,程序有605s=300s的啓動時間,一旦啓動探針探測成功以後,就會被livenessProbe接管,這樣在運行中出問題livenessProbe就能在15=5s內發現。若是啓動探測是3分鐘內尚未探測成功,則接受Pod的重啓策略進行重啓。class

上面所描訴的就是kubernetes startupProbe的存在乎義?
多但願各位大佬指點:test

email: zsf18163201@163.com
wechat:×××
相關文章
相關標籤/搜索