應(yīng)用上云良好實踐

本文會總結(jié)在工作過程中踩過的坑,以及平??醇夹g(shù)分享帖中覺得比較有用的經(jīng)驗,在這里做下匯總,可能內(nèi)容稍微有點雜,但在我看在都是用時間換來的經(jīng)驗值,希望對讀者有所幫助。

1、preStop鉤子使用

先簡單介紹下preStop,該鉤子在容器刪除前觸發(fā),一般用來清理現(xiàn)場,作用蠻大的,下面介紹兩個使用preStop鉤子的實際場景。

1.1 容器保留現(xiàn)場

我們都知道,很多情況下容器都是無狀態(tài)的,當(dāng)容器發(fā)生內(nèi)存異常,導(dǎo)致liveness probe檢測失敗重啟,可以使用preStop鉤子將應(yīng)用的coredump日志進行導(dǎo)出,然后分析。

1.2 使用preStop Hook保證服務(wù)安全退出

在服務(wù)更新過程中,服務(wù)容器被直接終止,由于Eureka Server有緩沖,部分請求任然會發(fā)送到已經(jīng)終止的容器,為了減少錯誤,可以在容器退出前主動從Eureka Server中注銷這個節(jié)點,可以使用preStop這個鉤子來實現(xiàn)。

2、Health Check應(yīng)用場景

k8s集群中默認提供兩種探針:liveness probe和readiness probe,先簡單對比下兩種的區(qū)別。

(1)liveness探測失敗是重啟容器,readiness探測失敗是將容器設(shè)置為not ready,不接受service轉(zhuǎn)發(fā)的請求。
(2)liveness探測和readiness探測是獨立執(zhí)行的,二者沒有依賴,可以單獨使用,也可以同時使用。

以下描述兩種使用readiness探測的場景

(1)在服務(wù)scale up過程中,可以通過readiness探測容器是否就緒,避免將請求發(fā)送到還沒有ready好的backend中。
(2)在服務(wù)rolling update過程中,新副本只有通過readiness探測,才會被添加到service的endpoint記錄中,如果沒有通過探測,現(xiàn)有副本不會被全部替換,業(yè)務(wù)仍然正常運行。

上面描述的這兩種場景,都是保證服務(wù)在進行滾動更新時,最大程度保證業(yè)務(wù)零中斷。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容