關(guān)于Kubernetes探針第一次探測的問題

關(guān)于k8s的兩種探針,想必大家都參考過(https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/)嗜暴,根據(jù)上面的解釋,k8s的這兩種探針都有initialDelaySeconds屬性误窖,它的作用是決定container啟動后進(jìn)行第一次探測的時間薪缆,由于服務(wù)啟動是需要時間的,如果這個屬性設(shè)置不好馏段,則這個服務(wù)的狀態(tài)很可能就是錯誤的柜砾,設(shè)置時間太短可能導(dǎo)致探針多次探測失敗從而使服務(wù)失效湃望,設(shè)置時間太長,則k8s要花很長時間才認(rèn)為服務(wù)進(jìn)入“ready”狀態(tài)痰驱。因此喜爷,設(shè)置initialDelaySeconds必須慎之又慎,同時我們還經(jīng)常讓periodSecondsfailureThreshold配合其使用萄唇,例如:

readinessProbe:
  exec:
    command:
    - cat
    - /tmp/healthy
  initialDelaySeconds: 5
  periodSeconds: 5
  failureThreshold: 3

上面的配置好理解檩帐,探針在容器啟動5s后開始探測,并且之后每5s檢測一次另萤,如果檢測失敗的次數(shù)大于3湃密,則放棄,認(rèn)為服務(wù)“Unready”(對于liveness探針四敞,則會在放棄后重新啟動pod)泛源。
這個配置在periodSeconds較小時,是比較符合預(yù)期的忿危,但是當(dāng)你將periodSeconds配置較大數(shù)值時达箍,會發(fā)現(xiàn),初次探針探測的時間也變長了铺厨,不是原有的5s缎玫,很有可能幾分鐘之后才進(jìn)行第一次探測硬纤,這對于有的服務(wù)來說是不可接受的:明明我?guī)酌刖蛦映晒α耍梢蕴峁┓?wù)了赃磨,為什么k8s要幾分鐘后才認(rèn)為我ready呢筝家?有關(guān)這個問題的討論,可以參考https://github.com/kubernetes/kubernetes/issues/62036邻辉,最終通過查看k8s源碼(https://github.com/kubernetes/kubernetes/blob/b8ab2891b36baa3bbb4e81011e39d5d23a8d46e9/pkg/kubelet/prober/worker.go#L118)溪王,你會發(fā)現(xiàn)下面這段代碼:

// run periodically probes the container.
func (w *worker) run() {
    probeTickerPeriod := time.Duration(w.spec.PeriodSeconds) * time.Second

    // If kubelet restarted the probes could be started in rapid succession.
    // Let the worker wait for a random portion of tickerPeriod before probing.
    time.Sleep(time.Duration(rand.Float64() * float64(probeTickerPeriod)))

    probeTicker := time.NewTicker(probeTickerPeriod)

    defer func() {
        // Clean up.
        probeTicker.Stop()
        if !w.containerID.IsEmpty() {
            w.resultsManager.Remove(w.containerID)
        }

        w.probeManager.removeWorker(w.pod.UID, w.container.Name, w.probeType)
        ProberResults.Delete(w.proberResultsMetricLabels)
    }()

probeLoop:
    for w.doProbe() {
        // Wait for next probe tick.
        select {
        case <-w.stopCh:
            break probeLoop
        case <-probeTicker.C:
            // continue
        }
    }
}

請?zhí)貏e注意time.Sleep()那段,正是由于那段代碼值骇,第一次探針進(jìn)行探測的時間是initialDelaySeconds + random(periodSeconds)莹菱,因此periodSeconds的值設(shè)得越大,探針第一次探測的時間就越長吱瘩,服務(wù)處于“unready”的狀態(tài)就越長芒珠,如果你要一次性重新部署多個服務(wù),并且依賴于其他服務(wù)的話搅裙,這一個看似小小的隱患很有可能造成一連串所依賴的服務(wù)探針檢測失敗(因?yàn)橛械奶结樖且獙ζ渌?wù)做healthcheck裹芝,其他服務(wù)由于重新部署部逮,導(dǎo)致k8s第一次去檢測狀態(tài)是否ready的時間拖延太久,而此期間服務(wù)可能早已經(jīng)ready嫂易,但k8s由于還沒進(jìn)行第一次檢測兄朋,所以認(rèn)為服務(wù)“unready”,引起其他探針探測失斄怠)颅和,從而引發(fā)整個服務(wù)不可用,因此缕允,這點(diǎn)大家在配置時要特別注意峡扩。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市障本,隨后出現(xiàn)的幾起案子教届,更是在濱河造成了極大的恐慌,老刑警劉巖驾霜,帶你破解...
    沈念sama閱讀 221,273評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件案训,死亡現(xiàn)場離奇詭異,居然都是意外死亡粪糙,警方通過查閱死者的電腦和手機(jī)强霎,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,349評論 3 398
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蓉冈,“玉大人城舞,你說我怎么就攤上這事轩触。” “怎么了椿争?”我有些...
    開封第一講書人閱讀 167,709評論 0 360
  • 文/不壞的土叔 我叫張陵怕膛,是天一觀的道長。 經(jīng)常有香客問我秦踪,道長褐捻,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,520評論 1 296
  • 正文 為了忘掉前任椅邓,我火速辦了婚禮柠逞,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘景馁。我一直安慰自己板壮,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,515評論 6 397
  • 文/花漫 我一把揭開白布合住。 她就那樣靜靜地躺著绰精,像睡著了一般。 火紅的嫁衣襯著肌膚如雪透葛。 梳的紋絲不亂的頭發(fā)上笨使,一...
    開封第一講書人閱讀 52,158評論 1 308
  • 那天,我揣著相機(jī)與錄音僚害,去河邊找鬼硫椰。 笑死,一個胖子當(dāng)著我的面吹牛萨蚕,可吹牛的內(nèi)容都是我干的靶草。 我是一名探鬼主播,決...
    沈念sama閱讀 40,755評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼岳遥,長吁一口氣:“原來是場噩夢啊……” “哼奕翔!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起浩蓉,我...
    開封第一講書人閱讀 39,660評論 0 276
  • 序言:老撾萬榮一對情侶失蹤糠悯,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后妻往,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體互艾,經(jīng)...
    沈念sama閱讀 46,203評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,287評論 3 340
  • 正文 我和宋清朗相戀三年讯泣,在試婚紗的時候發(fā)現(xiàn)自己被綠了纫普。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,427評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖昨稼,靈堂內(nèi)的尸體忽然破棺而出节视,到底是詐尸還是另有隱情,我是刑警寧澤假栓,帶...
    沈念sama閱讀 36,122評論 5 349
  • 正文 年R本政府宣布寻行,位于F島的核電站,受9級特大地震影響匾荆,放射性物質(zhì)發(fā)生泄漏拌蜘。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,801評論 3 333
  • 文/蒙蒙 一牙丽、第九天 我趴在偏房一處隱蔽的房頂上張望简卧。 院中可真熱鬧,春花似錦烤芦、人聲如沸举娩。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,272評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽铜涉。三九已至,卻和暖如春遂唧,著一層夾襖步出監(jiān)牢的瞬間芙代,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評論 1 272
  • 我被黑心中介騙來泰國打工蠢箩, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人事甜。 一個月前我還...
    沈念sama閱讀 48,808評論 3 376
  • 正文 我出身青樓谬泌,卻偏偏與公主長得像,于是被迫代替她去往敵國和親逻谦。 傳聞我的和親對象是個殘疾皇子掌实,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,440評論 2 359