溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

怎么掌握SpringBoot-2.3的容器探針

發(fā)布時(shí)間:2021-10-12 13:57:41 來源:億速云 閱讀:158 作者:柒染 欄目:云計(jì)算

今天就跟大家聊聊有關(guān)怎么掌握SpringBoot-2.3的容器探針,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

探針特性的官方信息

  • 如下圖紅框所示,2.3版本的容器探針特性早在預(yù)覽版(v2.3.0.M4)就已經(jīng)發(fā)布: 怎么掌握SpringBoot-2.3的容器探針

  • 如今v2.3.0.RELEASE已發(fā)布,可以放心的學(xué)習(xí)和使用該特性了,首先把基礎(chǔ)知識點(diǎn)列出來,確保準(zhǔn)備工作OK;

知識點(diǎn)整理

下面是掌握探針技術(shù)所需的基礎(chǔ)知識,也是本文的主要內(nèi)容:

  1. kubernetes的存活探針<font color="blue">livenessProbe</font>;

  2. kubernetes的就緒探針<font color="blue">readinessProbe</font>;

  3. SpringBoot的<font color="blue">actuator</font>;

接下來逐個(gè)學(xué)習(xí),有了這些知識積累,我們才能更好的閱讀官方資料,開發(fā)適合自己業(yè)務(wù)場景的探針;

kubernetes的存活探針livenessProbe

  1. kubernetes的探針涉及的內(nèi)容是很多的,這里只提和SpringBoot相關(guān)的部分;

  2. kubelet 使用存活探針<font color="blue">livenessProbe</font>來知道什么時(shí)候要重啟容器;

  3. 下圖是kubernetes官網(wǎng)的存活探針示例,幾個(gè)關(guān)鍵參數(shù)已經(jīng)做了詳細(xì)說明:

怎么掌握SpringBoot-2.3的容器探針

  1. 可見如果我們的SpringBoot應(yīng)用發(fā)布到kubernetes環(huán)境,只要應(yīng)用還健康,livenessProbe對應(yīng)的地址就要能響應(yīng)200-400的返回碼;

kubernetes的就緒探針readinessProbe

  1. 有時(shí)候,應(yīng)用程序會(huì)暫時(shí)性的不能提供通信服務(wù)。例如,應(yīng)用程序在啟動(dòng)時(shí)可能需要加載很大的數(shù)據(jù)或配置文件,或是啟動(dòng)后要依賴等待外部服務(wù)。在這種情況下,既不想殺死應(yīng)用程序,也不想給它發(fā)送請求。Kubernetes 提供了就緒探測器來發(fā)現(xiàn)并緩解這些情況。容器所在 Pod 上報(bào)還未就緒的信息,并且不接受通過 Kubernetes Service 的流量。

  2. 就緒探測器的配置和存活探測器的配置相似,唯一區(qū)別就是要使用 <font color="blue">readinessProbe</font>字段,而不是 livenessProbe 字段;

  3. 簡單的說,就緒探針正常的容器,k8s就認(rèn)為是可以對外提供服務(wù)的,相應(yīng)的請求也會(huì)被調(diào)度到該容器上來;

SpringBoot的actuator

  1. 簡單來說,actuator是用來幫助用戶監(jiān)控和操作SprinBoot應(yīng)用的,這些監(jiān)控和操作都可以通過http請求實(shí)現(xiàn),如下圖,http://localhost:8080/actuator/health 地址返回的是應(yīng)用的健康狀態(tài):

怎么掌握SpringBoot-2.3的容器探針

  1. 下面是常用的actuator地址,訪問不同的地址可以得到不同的信息:

怎么掌握SpringBoot-2.3的容器探針

  1. 在SpringBoot-2.3版本中,actuator新增了兩個(gè)地址:<font color="red">/actuator/health/liveness</font>和<font color="red">/actuator/health/readiness</font>,前者用作kubernetes的<font color="blue">存活探針</font>,后者用作kubernetes的<font color="blue">就緒探針</font>;

畫外音:SpringBoot的探針技術(shù)就這點(diǎn)東西?

  1. 文章看到這里,您可能覺得索然無味:所謂的容器探針特性如此簡單,新增兩個(gè)actuator地址留給kubernetes的存活和就緒探針用,只要這兩個(gè)地址響應(yīng)正常,kubernetes就判定該容器正常;

  2. 大多數(shù)時(shí)候,上述結(jié)論并無不妥,SpringBoot官方給出的推薦配置如下圖,我們只要照搬即可:

怎么掌握SpringBoot-2.3的容器探針

  1. 冷靜下來仔細(xì)思考,有三個(gè)問題似乎沒有解決:

  • 首先,SpringBoot為kubernetes提供了兩個(gè)actuator項(xiàng),但是那些并未部署在kubernetes的SringBoot應(yīng)用呢?用不上這兩項(xiàng)也要對外暴露這兩個(gè)服務(wù)地址嗎?

  • 其次,就緒探針是什么時(shí)候開始返回200返回碼的?應(yīng)用啟動(dòng)階段,業(yè)務(wù)服務(wù)可能需要一段時(shí)間才能正常工作,就緒探針要是提前返回了200,那k8s就認(rèn)為容器可以正常工作了,這時(shí)候把外部請求調(diào)度過來是無法正常響應(yīng)的,所以搞清楚就緒探針的狀態(tài)變化邏輯很重要;

  • 最后,也是最重要的一點(diǎn):有的場景下,例如外部依賴服務(wù)異常、本地全局異常等情況下,業(yè)務(wù)不想對外提供服務(wù),等到問題解決后業(yè)務(wù)又可以對外提供服務(wù)了,如果此時(shí)我們能自己寫代碼控制就緒探針的返回碼,那就做到了控制kubernetes是否將外部請求調(diào)度到此容器上,這可是個(gè)很實(shí)用的功能!

看完上述內(nèi)容,你們對怎么掌握SpringBoot-2.3的容器探針有進(jìn)一步的了解嗎?如果還想了解更多知識或者相關(guān)內(nèi)容,請關(guān)注億速云行業(yè)資訊頻道,感謝大家的支持。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI