K8S 三種探針 ReadinessProbe哲虾、LivenessProbe和StartupProbe 之探索

我是 LEE,老李择示,一個(gè)在 IT 行業(yè)摸爬滾打 16 年的技術(shù)老兵束凑。

事件背景

因?yàn)?k8s 中采用大量的異步機(jī)制、以及多種對(duì)象關(guān)系設(shè)計(jì)上的解耦对妄,當(dāng)應(yīng)用實(shí)例數(shù) 增加/刪除湘今、或者應(yīng)用版本發(fā)生變化觸發(fā)滾動(dòng)升級(jí)時(shí),系統(tǒng)并不能保證應(yīng)用相關(guān)的 service剪菱、ingress 配置總是及時(shí)能完成刷新摩瞎。在一些情況下拴签,往往只是新的 Pod 完成自身初始化,系統(tǒng)尚未完成 Endpoint旗们、負(fù)載均衡器等外部可達(dá)的訪問(wèn)信息刷新蚓哩,老得 Pod 就立即被刪除,最終造成服務(wù)短暫的額不可用上渴,這對(duì)于生產(chǎn)來(lái)說(shuō)是不可接受的岸梨,所以 k8s 就加入了一些存活性探針:StartupProbe、LivenessProbe稠氮、ReadinessProbe曹阔。

技術(shù)探索

POD 狀態(tài)

Pod 常見(jiàn)的狀態(tài)

  • Pending:掛起,我們?cè)谡?qǐng)求創(chuàng)建 pod 時(shí)隔披,條件不滿足赃份,調(diào)度沒(méi)有完成,沒(méi)有任何一個(gè)節(jié)點(diǎn)能滿足調(diào)度條件奢米。已經(jīng)創(chuàng)建了但是沒(méi)有適合它運(yùn)行的節(jié)點(diǎn)叫做掛起抓韩,這其中也包含集群為容器創(chuàng)建網(wǎng)絡(luò),或者下載鏡像的過(guò)程鬓长。
  • Running:Pod 內(nèi)所有的容器都已經(jīng)被創(chuàng)建谒拴,且至少一個(gè)容器正在處于運(yùn)行狀態(tài)、正在啟動(dòng)狀態(tài)或者重啟狀態(tài)涉波。
  • Succeeded:Pod 中所以容器都執(zhí)行成功后退出英上,并且沒(méi)有處于重啟的容器。
  • Failed:Pod 中所以容器都已退出怠蹂,但是至少還有一個(gè)容器退出時(shí)為失敗狀態(tài)善延。
  • Unknown:未知狀態(tài),所謂 pod 是什么狀態(tài)是 apiserver 和運(yùn)行在 pod 節(jié)點(diǎn)的 kubelet 進(jìn)行通信獲取狀態(tài)信息的城侧,如果節(jié)點(diǎn)之上的 kubelet 本身出故障易遣,那么 apiserver 就連不上 kubelet,得不到信息了嫌佑,就會(huì)看 Unknown
Pod狀態(tài)輪

Pod 重啟策略

  • Always: 只要容器失效退出就重新啟動(dòng)容器豆茫。
  • OnFailure: 當(dāng)容器以非正常(異常)退出后才自動(dòng)重新啟動(dòng)容器。
  • Never: 無(wú)論容器狀態(tài)如何屋摇,都不重新啟動(dòng)容器揩魂。

Pod 常見(jiàn)狀態(tài)轉(zhuǎn)換場(chǎng)景

Pod狀態(tài)轉(zhuǎn)換

探針簡(jiǎn)介

K8S 提供了 3 種探針:

  • ReadinessProbe
  • LivenessProbe
  • StartupProbe(這個(gè) 1.16 版本增加的)

探針存在的目的

在 Kubernetes 中 Pod 是最小的計(jì)算單元,而一個(gè) Pod 又由多個(gè)容器組成炮温,相當(dāng)于每個(gè)容器就是一個(gè)應(yīng)用火脉,應(yīng)用在運(yùn)行期間,可能因?yàn)槟骋惨馔馇闆r致使程序掛掉。

那么如何監(jiān)控這些容器狀態(tài)穩(wěn)定性倦挂,保證服務(wù)在運(yùn)行期間不會(huì)發(fā)生問(wèn)題畸颅,發(fā)生問(wèn)題后進(jìn)行重啟等機(jī)制,就成為了重中之重的事情方援,考慮到這點(diǎn) kubernetes 推出了活性探針機(jī)制没炒。

有了存活性探針能保證程序在運(yùn)行中如果掛掉能夠自動(dòng)重啟,但是還有個(gè)經(jīng)常遇到的問(wèn)題犯戏,比如說(shuō)送火,在 Kubernetes 中啟動(dòng) Pod,顯示明明 Pod 已經(jīng)啟動(dòng)成功先匪,且能訪問(wèn)里面的端口种吸,但是卻返回錯(cuò)誤信息。還有就是在執(zhí)行滾動(dòng)更新時(shí)候呀非,總會(huì)出現(xiàn)一段時(shí)間骨稿,Pod 對(duì)外提供網(wǎng)絡(luò)訪問(wèn),但是訪問(wèn)卻發(fā)生 404姜钳,這兩個(gè)原因,都是因?yàn)?Pod 已經(jīng)成功啟動(dòng)形耗,但是 Pod 的的容器中應(yīng)用程序還在啟動(dòng)中導(dǎo)致哥桥,考慮到這點(diǎn) Kubernetes 推出了就緒性探針機(jī)制。

  1. LivenessProbe
    存活性探針激涤,用于判斷容器是不是健康拟糕,如果不滿足健康條件,那么 Kubelet 將根據(jù) Pod 中設(shè)置的 restartPolicy (重啟策略)來(lái)判斷倦踢,Pod 是否要進(jìn)行重啟操作送滞。LivenessProbe 按照配置去探測(cè) ( 進(jìn)程、或者端口辱挥、或者命令執(zhí)行后是否成功等等)犁嗅,來(lái)判斷容器是不是正常。如果探測(cè)不到晤碘,代表容器不健康(可以配置連續(xù)多少次失敗才記為不健康)褂微,則 kubelet 會(huì)殺掉該容器,并根據(jù)容器的重啟策略做相應(yīng)的處理园爷。如果未配置存活探針宠蚂,則默認(rèn)容器啟動(dòng)為通過(guò)(Success)狀態(tài)。即探針?lè)祷氐闹涤肋h(yuǎn)是 Success童社。即 Success 后 pod 狀態(tài)是 RUNING

  2. ReadinessProbe
    就緒性探針求厕,用于判斷容器內(nèi)的程序是否存活(或者說(shuō)是否健康),只有程序(服務(wù))正常, 容器開(kāi)始對(duì)外提供網(wǎng)絡(luò)訪問(wèn)(啟動(dòng)完成并就緒)呀癣。容器啟動(dòng)后按照 ReadinessProbe 配置進(jìn)行探測(cè)美浦,無(wú)問(wèn)題后結(jié)果為成功即狀態(tài)為 Success。pod 的 READY 狀態(tài)為 true十艾,從 0/1 變?yōu)?1/1抵代。如果失敗繼續(xù)為 0/1,狀態(tài)為 false忘嫉。若未配置就緒探針荤牍,則默認(rèn)狀態(tài)容器啟動(dòng)后為 Success。對(duì)于此 pod庆冕、此 pod 關(guān)聯(lián)的 Service 資源康吵、EndPoint 的關(guān)系也將基于 Pod 的 Ready 狀態(tài)進(jìn)行設(shè)置,如果 Pod 運(yùn)行過(guò)程中 Ready 狀態(tài)變?yōu)?false访递,則系統(tǒng)自動(dòng)從 Service 資源 關(guān)聯(lián)的 EndPoint 列表中去除此 pod晦嵌,屆時(shí) service 資源接收到 GET 請(qǐng)求后,kube-proxy 將一定不會(huì)把流量引入此 pod 中拷姿,通過(guò)這種機(jī)制就能防止將流量轉(zhuǎn)發(fā)到不可用的 Pod 上惭载。如果 Pod 恢復(fù)為 Ready 狀態(tài)。將再會(huì)被加回 Endpoint 列表响巢。kube-proxy 也將有概率通過(guò)負(fù)載機(jī)制會(huì)引入流量到此 pod 中描滔。

  3. StartupProbe:
    StartupProbe 探針,主要解決在復(fù)雜的程序中 ReadinessProbe踪古、LivenessProbe 探針無(wú)法更好的判斷程序是否啟動(dòng)含长、是否存活。進(jìn)而引入 StartupProbe 探針為 ReadinessProbe伏穆、LivenessProbe 探針?lè)?wù)拘泞。

(★) ReadinessProbe 與 LivenessProbe 的區(qū)別

  • ReadinessProbe 當(dāng)檢測(cè)失敗后,將 Pod 的 IP:Port 從對(duì)應(yīng)的 EndPoint 列表中刪除枕扫。
  • LivenessProbe 當(dāng)檢測(cè)失敗后陪腌,將殺死容器并根據(jù) Pod 的重啟策略來(lái)決定作出對(duì)應(yīng)的措施。

(★) StartupProbe 與 ReadinessProbe铡原、LivenessProbe 的區(qū)別

如果三個(gè)探針同時(shí)存在偷厦,先執(zhí)行 StartupProbe 探針,其他兩個(gè)探針將會(huì)被暫時(shí)禁用燕刻,直到 pod 滿足 StartupProbe 探針配置的條件只泼,其他 2 個(gè)探針啟動(dòng),如果不滿足按照規(guī)則重啟容器卵洗。

另外兩種探針在容器啟動(dòng)后请唱,會(huì)按照配置弥咪,直到容器消亡才停止探測(cè),而 StartupProbe 探針只是在容器啟動(dòng)后按照配置滿足一次后十绑,不在進(jìn)行后續(xù)的探測(cè)聚至。

正確的 ReadinessProbe 與 LivenessProbe 使用方式

LivenessProbe 和 ReadinessProbe 兩種探針都支持下面三種探測(cè)方法:

  • ExecAction:在容器中執(zhí)行指定的命令,如果執(zhí)行成功本橙,退出碼為 0 則探測(cè)成功扳躬。
  • HTTPGetAction:通過(guò)容器的 IP 地址、端口號(hào)及路徑調(diào)用 HTTP Get 方法甚亭,如果響應(yīng)的狀態(tài)碼大于等于 - 200 且小于 400贷币,則認(rèn)為容器 健康。
  • TCPSocketAction:通過(guò)容器的 IP 地址和端口號(hào)執(zhí)行 TCP 檢 查亏狰,如果能夠建立 TCP 連接役纹,則表明容器健康。

探針探測(cè)結(jié)果有以下值:

  • Success:表示通過(guò)檢測(cè)暇唾。
  • Failure:表示未通過(guò)檢測(cè)促脉。
  • Unknown:表示檢測(cè)沒(méi)有正常進(jìn)行。

LivenessProbe 和 ReadinessProbe 兩種探針的相關(guān)屬性
探針(Probe)有許多可選字段策州,可以用來(lái)更加精確的控制 Liveness 和 Readiness 兩種探針的行為(Probe):

  • initialDelaySeconds:容器啟動(dòng)后要等待多少秒后就探針開(kāi)始工作瘸味,單位“秒”,默認(rèn)是 0 秒够挂,最小值是 0
  • periodSeconds:執(zhí)行探測(cè)的時(shí)間間隔(單位是秒)硫戈,默認(rèn)為 10s,單位“秒”下硕,最小值是 1
  • timeoutSeconds:探針執(zhí)行檢測(cè)請(qǐng)求后,等待響應(yīng)的超時(shí)時(shí)間汁胆,默認(rèn)為 1s梭姓,單位“秒”,最小值是 1
  • successThreshold:探針檢測(cè)失敗后認(rèn)為成功的最小連接成功次數(shù)嫩码,默認(rèn)為 1s誉尖,在 Liveness 探針中必須為 1s,最小值為 1s铸题。
  • failureThreshold:探測(cè)失敗的重試次數(shù)铡恕,重試一定次數(shù)后將認(rèn)為失敗,在 readiness 探針中丢间,Pod 會(huì)被標(biāo)記為未就緒探熔,默認(rèn)為 3s,最小值為 1s

Tips:initialDelaySeconds 在 ReadinessProbe 其實(shí)可以不用配置烘挫,不配置默認(rèn) pod 剛啟動(dòng)诀艰,開(kāi)始進(jìn)行 ReadinessProbe 探測(cè),但那有怎么樣,除了 StartupProbe其垄,ReadinessProbe苛蒲、LivenessProbe 運(yùn)行在 pod 的整個(gè)生命周期,剛啟動(dòng)的時(shí)候 ReadinessProbe 檢測(cè)失敗了绿满,只不過(guò)顯示 READY 狀態(tài)一直是 0/1臂外,ReadinessProbe 失敗并不會(huì)導(dǎo)致重啟 pod,只有 StartupProbe喇颁、LivenessProbe 失敗才會(huì)重啟 pod漏健。而等到多少 s 后,真正服務(wù)啟動(dòng)后无牵,檢查 success 成功后漾肮,READY 狀態(tài)自然正常

正確的 StartupProbe 使用方式

StartupProbe 探針支持下面三種探測(cè)方法:

  • ExecAction:在容器中執(zhí)行指定的命令,如果執(zhí)行成功茎毁,退出碼為 0 則探測(cè)成功克懊。
  • HTTPGetAction:通過(guò)容器的 IP 地址、端口號(hào)及路徑調(diào)用 HTTP Get 方法七蜘,如果響應(yīng)的狀態(tài)碼大于等于 200 且小于 400谭溉,則認(rèn)為容器 健康。
  • TCPSocketAction:通過(guò)容器的 IP 地址和端口號(hào)執(zhí)行 TCP 檢 查橡卤,如果能夠建立 TCP 連接扮念,則表明容器健康。

探針探測(cè)結(jié)果有以下值:

  • Success:表示通過(guò)檢測(cè)碧库。
  • Failure:表示未通過(guò)檢測(cè)柜与。
  • Unknown:表示檢測(cè)沒(méi)有正常進(jìn)行。

StartupProbe 探針屬性

  • initialDelaySeconds:容器啟動(dòng)后要等待多少秒后就探針開(kāi)始工作嵌灰,單位“秒”弄匕,默認(rèn)是 0 秒,最小值是 0
  • periodSeconds:執(zhí)行探測(cè)的時(shí)間間隔(單位是秒)沽瞭,默認(rèn)為 10s迁匠,單位“秒”,最小值是 1
  • timeoutSeconds:探針執(zhí)行檢測(cè)請(qǐng)求后驹溃,等待響應(yīng)的超時(shí)時(shí)間城丧,默認(rèn)為 1s,單位“秒”豌鹤,最小值是 1
  • successThreshold:探針檢測(cè)失敗后認(rèn)為成功的最小連接成功次數(shù)亡哄,默認(rèn)為 1s,在 Liveness 探針中必須為 1s布疙,最小值為 1s磺平。
  • failureThreshold:探測(cè)失敗的重試次數(shù)魂仍,重試一定次數(shù)后將認(rèn)為失敗,在 readiness 探針中拣挪,Pod 會(huì)被標(biāo)記為未就緒擦酌,默認(rèn)為 3s,最小值為 1s

Tips:在 StartupProbe 執(zhí)行完之后菠劝,其他 2 種探針的所有配置才全部啟動(dòng)赊舶,相當(dāng)于容器剛啟動(dòng)的時(shí)候,所以其他 2 種探針如果配置了 initialDelaySeconds赶诊,建議不要給太長(zhǎng)笼平。

使用舉例

LivenessProbe 探針使用示例

1. 通過(guò) exec 方式做健康探測(cè)

[root@localhost ~]# vim liveness-exec.yaml
apiVersion: v1
kind: Pod
metadata:
    name: liveness-exec
    labels:
        app: liveness
spec:
    containers:
        - name: liveness
          image: busybox
          args: #創(chuàng)建測(cè)試探針探測(cè)的文件
              - /bin/sh
              - -c
              - touch /tmp/healthy; sleep 30; rm -rf /tmp/healthy; sleep 600
          LivenessProbe:
              initialDelaySeconds: 10 #延遲檢測(cè)時(shí)間
              periodSeconds: 5 #檢測(cè)時(shí)間間隔
              exec: #使用命令檢查
                  command: #指令,類似于運(yùn)行命令sh
                      - cat #sh 后的第一個(gè)內(nèi)容舔痪,直到需要輸入空格寓调,變成下一行
                      - /tmp/healthy #由于不能輸入空格,需要另外聲明锄码,結(jié)果為sh cat"空格"/tmp/healthy

思路整理:

容器在初始化后夺英,執(zhí)行(/bin/sh -c "touch /tmp/healthy; sleep 30; rm -rf /tmp/healthy; sleep 600")首先創(chuàng)建一個(gè) /tmp/healthy 文件,然后執(zhí)行睡眠命令滋捶,睡眠 30 秒痛悯,到時(shí)間后執(zhí)行刪除 /tmp/healthy 文件命令。

而設(shè)置的存活探針檢檢測(cè)方式為執(zhí)行 shell 命令重窟,用 cat 命令輸出 healthy 文件的內(nèi)容载萌,如果能成功執(zhí)行這條命令一次(默認(rèn) successThreshold:1),存活探針就認(rèn)為探測(cè)成功巡扇,由于沒(méi)有配置(failureThreshold扭仁、timeoutSeconds),所以執(zhí)行(cat /tmp/healthy)并只等待 1s厅翔,如果 1s 內(nèi)執(zhí)行后返回失敗斋枢,探測(cè)失敗。

在前 30 秒內(nèi)知给,由于文件存在,所以存活探針探測(cè)時(shí)執(zhí)行 cat /tmp/healthy 命令成功執(zhí)行描姚。30 秒后 healthy 文件被刪除涩赢,所以執(zhí)行命令失敗,Kubernetes 會(huì)根據(jù) Pod 設(shè)置的重啟策略來(lái)判斷轩勘,是否重啟 Pod筒扒。

2. 通過(guò) HTTP 方式做健康探測(cè)

[root@localhost ~]# vi liveness-http.yaml
apiVersion: v1
kind: Pod
metadata:
    name: liveness-http
    labels:
        test: liveness
spec:
    containers:
        - name: liveness
          image: test.com/test-http-prober:v0.0.1
          LivenessProbe:
              failureThreshold: 5 #檢測(cè)失敗5次表示未就緒
              initialDelaySeconds: 20 #延遲加載時(shí)間
              periodSeconds: 10 #重試時(shí)間間隔
              timeoutSeconds: 5 #超時(shí)時(shí)間設(shè)置
              successThreshold: 2 #檢查成功為2次表示就緒
              httpGet:
                  scheme: HTTP
                  port: 8081
                  path: /ping

思路整理:

在 pod 啟動(dòng)后,初始化等待 20s 后绊寻,LivenessProbe 開(kāi)始工作花墩,去請(qǐng)求 http://Pod_IP:8081/ping 接口悬秉,類似于 curl -I http://Pod_IP:8081/ping 接口,考慮到請(qǐng)求會(huì)有延遲(curl -I 后一直出現(xiàn)假死狀態(tài)),所以給這次請(qǐng)求操作一直持續(xù) 5s冰蘑,如果 5s 內(nèi)訪問(wèn)返回?cái)?shù)值在>=200 且<=400 代表第一次檢測(cè) success和泌,如果是其他的數(shù)值,或者 5s 后還是假死狀態(tài)祠肥,執(zhí)行類似(ctrl+c)中斷武氓,并反回 failure 失敗。

等待 10s 后仇箱,再一次的去請(qǐng)求 http://Pod_IP:8081/ping 接口县恕。如果有連續(xù)的 2 次都是 success,代表無(wú)問(wèn)題剂桥。如果期間有連續(xù)的 5 次都是 failure忠烛,代表有問(wèn)題,直接重啟 pod权逗,此操作會(huì)伴隨 pod 的整個(gè)生命周期美尸。

Tips

Http Get 探測(cè)方式有如下可選的控制字段:

  • scheme: 用于連接 host 的協(xié)議,默認(rèn)為 HTTP旬迹。
  • host:要連接的主機(jī)名火惊,默認(rèn)為 Pod IP,可以在 Http Request headers 中設(shè)置 host 頭部奔垦。
  • port:容器上要訪問(wèn)端口號(hào)或名稱屹耐。
  • path:http 服務(wù)器上的訪問(wèn) URI。
  • httpHeaders:自定義 HTTP 請(qǐng)求 headers椿猎,HTTP 允許重復(fù) headers惶岭。

3. 通過(guò) TCP 方式做健康探測(cè)

[root@localhost ~]# vi liveness-tcp.yaml
apiVersion: v1
kind: Pod
metadata:
    name: liveness-tcp
    labels:
        app: liveness
spec:
    containers:
        - name: liveness
          image: nginx
          LivenessProbe:
              initialDelaySeconds: 15
              periodSeconds: 20
              tcpSocket:
                  port: 80

思路整理:

TCP 檢查方式和 HTTP 檢查方式非常相似,在容器啟動(dòng) initialDelaySeconds 參數(shù)設(shè)定的時(shí)間后犯眠,kubelet 將發(fā)送第一個(gè) LivenessProbe 探針按灶,嘗試連接容器的 80 端口,類似于 telnet 80 端口筐咧。 每隔 20 秒(periodSeconds)做探測(cè)鸯旁,如果連接失敗則將殺死 Pod 重啟容器。

ReadinessProbe 探針使用示例

ReadinessProbe 探針使用方式和 LivenessProbe 探針探測(cè)方法一樣量蕊,也是支持三種铺罢,只是一個(gè)是用于探測(cè)應(yīng)用的存活,一個(gè)是判斷是否對(duì)外提供流量的條件残炮。

[root@localhost ~]# vim readiness-exec.yaml
apiVersion: v1
kind: Pod
metadata:
    name: readiness-exec
    labels:
        app: readiness-exec
spec:
    containers:
        - name: readiness-exec
          image: busybox
          args: #創(chuàng)建測(cè)試探針探測(cè)的文件
              - /bin/sh
              - -c
              - touch /tmp/healthy; sleep 30; rm -rf /tmp/healthy; sleep 600
          LivenessProbe:
              initialDelaySeconds: 10
              periodSeconds: 5
              exec:
                  command:
                      - cat
                      - /tmp/healthy
---
apiVersion: v1
kind: Pod
metadata:
    name: readiness-http
    labels:
        app: readiness-http
spec:
    containers:
        - name: readiness-http
          image: test.com/test-http-prober:v0.0.1
          ports:
              - name: server
                containerPort: 8080
              - name: management
                containerPort: 8081
          ReadinessProbe:
              initialDelaySeconds: 20
              periodSeconds: 5
              timeoutSeconds: 10
              httpGet:
                  scheme: HTTP
                  port: 8081
                  path: /ping
---
apiVersion: v1
kind: Pod
metadata:
    name: readiness-tcp
    labels:
        app: readiness-tcp
spec:
    containers:
        - name: readiness-tcp
          image: nginx
          LivenessProbe:
              initialDelaySeconds: 15
              periodSeconds: 20
              tcpSocket:
                  port: 80

這里說(shuō)說(shuō) terminationGracePeriodSeconds

terminationGracePeriodSeconds 這個(gè)參數(shù)非常的重要韭赘,具體講解。請(qǐng)參考我的另外一篇文章《詳細(xì)解讀 Kubernetes 中 Pod 優(yōu)雅退出势就,幫你解決大問(wèn)題》, 里面有詳細(xì)的解釋泉瞻,我這里說(shuō)下其他的內(nèi)容脉漏。

Tips: terminationGracePeriodSeconds 不能用于 ReadinessProbe,如果將它應(yīng)用于 ReadinessProbe 將會(huì)被 apiserver 接口所拒絕

LivenessProbe:
    httpGet:
        path: /ping
        port: liveness-port
    failureThreshold: 1
    periodSeconds: 30
    terminationGracePeriodSeconds: 30 # 寬限時(shí)間30s

StartupProbe 探針使用示例

[root@localhost ~]# vim startup.yaml
apiVersion: v1
kind: Pod
metadata:
    name: startup
    labels:
        app: startup
spec:
    containers:
        - name: startup
          image: nginx
          StartupProbe:
              failureThreshold: 3 # 失敗閾值袖牙,連續(xù)幾次失敗才算真失敗
              initialDelaySeconds: 5 # 指定的這個(gè)秒以后才執(zhí)行探測(cè)
              timeoutSeconds: 10 # 探測(cè)超時(shí)侧巨,到了超時(shí)時(shí)間探測(cè)還沒(méi)返回結(jié)果說(shuō)明失敗
              periodSeconds: 5 # 每隔幾秒來(lái)運(yùn)行這個(gè)
              httpGet:
                  path: /test
                  prot: 80

思路整理:

在容器啟動(dòng) initialDelaySeconds (5 秒) 參數(shù)設(shè)定的時(shí)間后,kubelet 將發(fā)送第一個(gè) StartupProbe 探針贼陶,嘗試連接容器的 80 端口刃泡。 如果連續(xù)探測(cè)失敗沒(méi)有超過(guò) 3 次 (failureThreshold) ,且每次探測(cè)間隔為 5 秒 (periodSeconds) 和探測(cè)執(zhí)行時(shí)間不超過(guò)超時(shí)時(shí)間 10 秒/每次 (timeoutSeconds)碉怔,則認(rèn)為探測(cè)成功烘贴,反之探測(cè)失敗,kubelet 直接殺死 Pod撮胧。

總結(jié)

通過(guò)對(duì)三種探針的探索桨踪,我們能夠得到一句話的總結(jié):理解底層結(jié)構(gòu),能夠最大程度在可用性芹啥、安全性锻离,持續(xù)性等方面讓 Pod 達(dá)到最佳工作狀態(tài)。 凡事沒(méi)有“銀彈”墓怀,尤其對(duì)重要的業(yè)務(wù)需要一個(gè)案例一個(gè)解決方案汽纠,希望這次的分析能提供給大家開(kāi)啟一個(gè)思路之門。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末傀履,一起剝皮案震驚了整個(gè)濱河市虱朵,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌钓账,老刑警劉巖碴犬,帶你破解...
    沈念sama閱讀 212,383評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異梆暮,居然都是意外死亡服协,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,522評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門啦粹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)偿荷,“玉大人,你說(shuō)我怎么就攤上這事唠椭√桑” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 157,852評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵泪蔫,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我喘批,道長(zhǎng)撩荣,這世上最難降的妖魔是什么铣揉? 我笑而不...
    開(kāi)封第一講書人閱讀 56,621評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮餐曹,結(jié)果婚禮上逛拱,老公的妹妹穿的比我還像新娘。我一直安慰自己台猴,他們只是感情好朽合,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,741評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著饱狂,像睡著了一般曹步。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上休讳,一...
    開(kāi)封第一講書人閱讀 49,929評(píng)論 1 290
  • 那天讲婚,我揣著相機(jī)與錄音,去河邊找鬼俊柔。 笑死筹麸,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的雏婶。 我是一名探鬼主播物赶,決...
    沈念sama閱讀 39,076評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼留晚!你這毒婦竟也來(lái)了酵紫?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 37,803評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤倔丈,失蹤者是張志新(化名)和其女友劉穎憨闰,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體需五,經(jīng)...
    沈念sama閱讀 44,265評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡鹉动,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,582評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了宏邮。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片泽示。...
    茶點(diǎn)故事閱讀 38,716評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖蜜氨,靈堂內(nèi)的尸體忽然破棺而出械筛,到底是詐尸還是另有隱情,我是刑警寧澤飒炎,帶...
    沈念sama閱讀 34,395評(píng)論 4 333
  • 正文 年R本政府宣布埋哟,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏赤赊。R本人自食惡果不足惜闯狱,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,039評(píng)論 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望抛计。 院中可真熱鬧哄孤,春花似錦、人聲如沸吹截。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,798評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)波俄。三九已至晨逝,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間弟断,已是汗流浹背咏花。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,027評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留阀趴,地道東北人昏翰。 一個(gè)月前我還...
    沈念sama閱讀 46,488評(píng)論 2 361
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像刘急,于是被迫代替她去往敵國(guó)和親棚菊。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,612評(píng)論 2 350

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