今天就跟大家聊聊有關(guān)怎么掌握SpringBoot-2.3的容器探針,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。
成都創(chuàng)新互聯(lián)成立于2013年,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目網(wǎng)站設(shè)計(jì)制作、做網(wǎng)站網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢想脫穎而出為使命,1280元鏡湖做網(wǎng)站,已為上家服務(wù),為鏡湖各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:18980820575
如下圖紅框所示,2.3版本的容器探針特性早在預(yù)覽版(v2.3.0.M4)就已經(jīng)發(fā)布:
如今v2.3.0.RELEASE已發(fā)布,可以放心的學(xué)習(xí)和使用該特性了,首先把基礎(chǔ)知識點(diǎn)列出來,確保準(zhǔn)備工作OK;
下面是掌握探針技術(shù)所需的基礎(chǔ)知識,也是本文的主要內(nèi)容:
kubernetes的存活探針<font color="blue">livenessProbe</font>;
kubernetes的就緒探針<font color="blue">readinessProbe</font>;
SpringBoot的<font color="blue">actuator</font>;
接下來逐個(gè)學(xué)習(xí),有了這些知識積累,我們才能更好的閱讀官方資料,開發(fā)適合自己業(yè)務(wù)場景的探針;
kubernetes的探針涉及的內(nèi)容是很多的,這里只提和SpringBoot相關(guān)的部分;
kubelet 使用存活探針<font color="blue">livenessProbe</font>來知道什么時(shí)候要重啟容器;
下圖是kubernetes官網(wǎng)的存活探針示例,幾個(gè)關(guān)鍵參數(shù)已經(jīng)做了詳細(xì)說明:
可見如果我們的SpringBoot應(yīng)用發(fā)布到kubernetes環(huán)境,只要應(yīng)用還健康,livenessProbe對應(yīng)的地址就要能響應(yīng)200-400的返回碼;
有時(shí)候,應(yīng)用程序會暫時(shí)性的不能提供通信服務(wù)。例如,應(yīng)用程序在啟動時(shí)可能需要加載很大的數(shù)據(jù)或配置文件,或是啟動后要依賴等待外部服務(wù)。在這種情況下,既不想殺死應(yīng)用程序,也不想給它發(fā)送請求。Kubernetes 提供了就緒探測器來發(fā)現(xiàn)并緩解這些情況。容器所在 Pod 上報(bào)還未就緒的信息,并且不接受通過 Kubernetes Service 的流量。
就緒探測器的配置和存活探測器的配置相似,唯一區(qū)別就是要使用 <font color="blue">readinessProbe</font>字段,而不是 livenessProbe 字段;
簡單的說,就緒探針正常的容器,k8s就認(rèn)為是可以對外提供服務(wù)的,相應(yīng)的請求也會被調(diào)度到該容器上來;
簡單來說,actuator是用來幫助用戶監(jiān)控和操作SprinBoot應(yīng)用的,這些監(jiān)控和操作都可以通過http請求實(shí)現(xiàn),如下圖,http://localhost:8080/actuator/health 地址返回的是應(yīng)用的健康狀態(tài):
下面是常用的actuator地址,訪問不同的地址可以得到不同的信息:
在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>;
文章看到這里,您可能覺得索然無味:所謂的容器探針特性如此簡單,新增兩個(gè)actuator地址留給kubernetes的存活和就緒探針用,只要這兩個(gè)地址響應(yīng)正常,kubernetes就判定該容器正常;
大多數(shù)時(shí)候,上述結(jié)論并無不妥,SpringBoot官方給出的推薦配置如下圖,我們只要照搬即可:
冷靜下來仔細(xì)思考,有三個(gè)問題似乎沒有解決:
首先,SpringBoot為kubernetes提供了兩個(gè)actuator項(xiàng),但是那些并未部署在kubernetes的SringBoot應(yīng)用呢?用不上這兩項(xiàng)也要對外暴露這兩個(gè)服務(wù)地址嗎?
其次,就緒探針是什么時(shí)候開始返回200返回碼的?應(yī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)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。
文章標(biāo)題:怎么掌握SpringBoot-2.3的容器探針
轉(zhuǎn)載來源:http://aaarwkj.com/article20/jejdjo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站營銷、網(wǎng)站內(nèi)鏈、品牌網(wǎng)站設(shè)計(jì)、網(wǎng)站制作、定制網(wǎng)站、商城網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)