本文會總結在工作過程中踩過的坑早直,以及平常看技術分享帖中覺得比較有用的經驗市框,在這里做下匯總霞扬,可能內容稍微有點雜,但在我看在都是用時間換來的經驗值枫振,希望對讀者有所幫助喻圃。
1、preStop鉤子使用
先簡單介紹下preStop粪滤,該鉤子在容器刪除前觸發(fā)斧拍,一般用來清理現(xiàn)場,作用蠻大的杖小,下面介紹兩個使用preStop鉤子的實際場景肆汹。
1.1 容器保留現(xiàn)場
我們都知道愚墓,很多情況下容器都是無狀態(tài)的,當容器發(fā)生內存異常昂勉,導致liveness probe檢測失敗重啟浪册,可以使用preStop鉤子將應用的coredump日志進行導出,然后分析岗照。
1.2 使用preStop Hook保證服務安全退出
在服務更新過程中村象,服務容器被直接終止,由于Eureka Server有緩沖攒至,部分請求任然會發(fā)送到已經終止的容器厚者,為了減少錯誤,可以在容器退出前主動從Eureka Server中注銷這個節(jié)點迫吐,可以使用preStop這個鉤子來實現(xiàn)库菲。
2、Health Check應用場景
k8s集群中默認提供兩種探針:liveness probe和readiness probe渠抹,先簡單對比下兩種的區(qū)別蝙昙。
(1)liveness探測失敗是重啟容器,readiness探測失敗是將容器設置為not ready梧却,不接受service轉發(fā)的請求奇颠。
(2)liveness探測和readiness探測是獨立執(zhí)行的,二者沒有依賴放航,可以單獨使用烈拒,也可以同時使用。
以下描述兩種使用readiness探測的場景
(1)在服務scale up過程中广鳍,可以通過readiness探測容器是否就緒荆几,避免將請求發(fā)送到還沒有ready好的backend中。
(2)在服務rolling update過程中赊时,新副本只有通過readiness探測吨铸,才會被添加到service的endpoint記錄中,如果沒有通過探測祖秒,現(xiàn)有副本不會被全部替換诞吱,業(yè)務仍然正常運行。
上面描述的這兩種場景竭缝,都是保證服務在進行滾動更新時房维,最大程度保證業(yè)務零中斷。