摘要:健康檢查被分成和。告訴在看到啟動之后要延遲開啟健康檢查,并說清楚延遲幾秒。會告訴應(yīng)該為健康檢查等待多長時間。
這篇文章我們來聊Kubernetes的健康檢查,以及不同健康檢查是如何影響你的應(yīng)用程序的。
Liveness ProbesKubernetes健康檢查被分成 liveness和readiness probes。liveness probes是用來檢測你的應(yīng)用程序是否正在運行。通常情況下,你的程序一崩潰,Kubernetes就會看到這個程序已經(jīng)終止,然后重啟這個程序。但是liveness probes的目的就是捕捉到當(dāng)程序還沒有終止,還沒有崩潰或者還沒陷入死鎖的情況。所以一個簡單的HTTP回應(yīng)能夠滿足。
以下是一個我使用的為Go應(yīng)用程序使用健康檢查的例子。
在配置中
上圖就是告訴Kubernetes,應(yīng)用程序正在運行。initialDelaySeconds 告訴Kubernetes在看到pod啟動之后要延遲開啟健康檢查,并說清楚延遲幾秒。如果你的應(yīng)用程序需要一些時間來啟動,你可以用這個設(shè)置來幫助它。timeoutSeconds會告訴Kubernetes應(yīng)該為健康檢查等待多長時間。對于liveness probes,這個時間不能太長,但是萬一有欠載的情況,你就真的需要給你的應(yīng)用足夠的時間來回應(yīng)。
如果應(yīng)用程序從未啟動,或者回應(yīng)過來一個HTTP錯誤代碼,那么之后Kubernetes就會重新啟動pod。你最好不要在liveness probes中進行太炫酷的什么動作,想都不要想,因為一旦liveness probes功能開始失效的話,這會引起你的應(yīng)用程序錯誤。
Readiness ProbesReadiness Probes跟liveness probes十分相似,只有失效檢測的結(jié)果是不一樣的。Readiness Probes是用來檢查你的應(yīng)用程序是否可以為通信服務(wù)。這跟liveness有些微妙的不同。比如,你的應(yīng)用程序取決于數(shù)據(jù)庫與memcached。如果上面兩個都在良好狀態(tài),為你的應(yīng)用提供通信,然后你就可以說這兩個都是你的應(yīng)用的“readiness”。
如果你的應(yīng)用的readness probe運行失敗,那么pod就會從組成service的端點被刪除。這樣的話,沒有準(zhǔn)備好的pods就不會有流量通信通過Kubernetes服務(wù)發(fā)現(xiàn)機制來發(fā)送給他們。當(dāng)遇到service的新pod啟動時;拓展events時,滾動更新等狀態(tài)的時候,這個狀態(tài)十分有幫助。Readiness probes確認(rèn)在pods開啟的時候pods沒有被發(fā)通信,還有他們處于待服務(wù)通信的時候也沒有。
Readiness probe的定義跟liveness probes的定義一樣。Readiness probes被定義為Deployment的一部分,比如像這樣:
你是不是想要檢驗一下是否可以在你的readiness probe中連接到你的應(yīng)用程序的依賴。以我們依賴數(shù)據(jù)庫為例,我們想要檢查我們是否能夠連接到兩者。
情況看起來應(yīng)該是這樣的(下圖所示)。我檢查memcached和數(shù)據(jù)庫,如果有一個不可得,那么我就會回復(fù)一個503回應(yīng)狀態(tài)。
更穩(wěn)定的應(yīng)用程序Liveness和Readiness probes對增加應(yīng)用程序的穩(wěn)定性很有幫助。他們幫助確認(rèn)通信是否只流通到為它準(zhǔn)備的實例上,當(dāng)應(yīng)用變得無反應(yīng)的時候,自我治愈也是一樣。他們就是我同事所說的叫做“12 Fractured Apps”的更好的解決方法。有了合適的健康檢查,你就能夠以任意順序配置你的應(yīng)用程序,不需要擔(dān)心相關(guān)性或者復(fù)雜的進入點腳本。當(dāng)應(yīng)用程序準(zhǔn)備好的時候,他們會開始服務(wù)通信,所以自動調(diào)度和滾動更新運行得十分順利。
原文鏈接
如果需要轉(zhuǎn)載,請聯(lián)系我們哦,尊重知識產(chǎn)權(quán)人人有責(zé);)
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/32471.html
摘要:目前正在運行的應(yīng)用程序。內(nèi)置非配置負(fù)載均衡器如何設(shè)置運行的集群在這里你有幾個選項。它跟其它的谷歌云組件也都整合得很好,比如負(fù)載均衡器和磁盤。它會告訴負(fù)載均衡器,流量可以被重新傳到特定的。元信息和谷歌云會以正確的方式展現(xiàn)出來。 Kubernetes實踐案例分享|在這次的 RisingStack 案例分享中,我們可以在 Kubernetes Tutorial 中學(xué)習(xí)到如何從 PaaS 供應(yīng)...
摘要:在本文中,我們將討論,一種本地健康檢查應(yīng)用程序的方法。標(biāo)準(zhǔn)的健康檢查工具,可以輕松查詢健康協(xié)議。選擇二進制版本并將其下載到中在你的中指定容器的。服務(wù)器健康檢查的代碼實現(xiàn),主要部分如下完整代碼,請查看倉庫。 前言 GRPC正在成為云原生微服務(wù)之間通信的通用語言。如果您今天要將gRPC應(yīng)用程序部署到Kubernetes,您可能想知道配置運行狀況檢查的最佳方法。在本文中,我們將討論grpc-...
摘要:在本文中,我們將討論,一種本地健康檢查應(yīng)用程序的方法。標(biāo)準(zhǔn)的健康檢查工具,可以輕松查詢健康協(xié)議。選擇二進制版本并將其下載到中在你的中指定容器的。服務(wù)器健康檢查的代碼實現(xiàn),主要部分如下完整代碼,請查看倉庫。 前言 GRPC正在成為云原生微服務(wù)之間通信的通用語言。如果您今天要將gRPC應(yīng)用程序部署到Kubernetes,您可能想知道配置運行狀況檢查的最佳方法。在本文中,我們將討論grpc-...
摘要:在本文中,我們將討論,一種本地健康檢查應(yīng)用程序的方法。標(biāo)準(zhǔn)的健康檢查工具,可以輕松查詢健康協(xié)議。選擇二進制版本并將其下載到中在你的中指定容器的。服務(wù)器健康檢查的代碼實現(xiàn),主要部分如下完整代碼,請查看倉庫。 前言 GRPC正在成為云原生微服務(wù)之間通信的通用語言。如果您今天要將gRPC應(yīng)用程序部署到Kubernetes,您可能想知道配置運行狀況檢查的最佳方法。在本文中,我們將討論grpc-...
摘要:健康監(jiān)控檢查,可以說是集群中最重要的一部分了。我們在這里沒有使用推薦的方式,我們自己將其與內(nèi)部的系統(tǒng)做了結(jié)合,通過來對整個集群進行監(jiān)控報警自動化操作。 在公司內(nèi)部,基于kubernetes實現(xiàn)了簡單的docker應(yīng)用集群系統(tǒng),拿出來和大家分享下,在這個系統(tǒng)中,實現(xiàn)了應(yīng)用的自動部署、動態(tài)擴容、節(jié)點切換、健康檢查、AB式版本更新等功能,也歡迎大家將各自的實現(xiàn)也分享給我。 整體架構(gòu) 整體架構(gòu)...
閱讀 1356·2021-11-24 09:39
閱讀 2941·2021-09-30 09:47
閱讀 1420·2021-09-22 15:15
閱讀 2505·2021-09-10 10:51
閱讀 2040·2019-08-30 15:55
閱讀 3036·2019-08-30 11:06
閱讀 953·2019-08-30 10:53
閱讀 957·2019-08-29 17:26