一個完整的、全面 k8s 化的集群穩定架構(值得借鑒)

前言

我司的集群時刻處于崩潰的邊緣,通過近三個月的掌握,發現我司的集群不穩定的原因有以下幾點:

1、發版流程不穩定

2、缺少監控平臺【最重要的原因】

3、缺少日志系統

4、極度缺少有關操作文檔

5、請求路線不明朗

總的來看,問題的主要原因是缺少可預知的監控平臺,總是等問題出現了才知道。次要的原因是服務器作用不明朗和發版流程的不穩定。

解決方案

發版流程不穩定

重構發版流程。業務全面k8s化,構建以kubernetes為核心的ci/cd流程。

發版流程

有關發版流程如下:

淺析:研發人員提交代碼到developer分支(時刻確保developer分支處于最新的代碼),developer分支合并到需要發版環境對應的分支,觸發企業微信告警,觸發部署在k8s集群的gitlab-runner pod,新啟runner pod 執行ci/cd操作。在這個過程中需要有三個步驟:測試用例、打包鏡像、更新pod。第一次部署服務在k8s集群環境的時候可能需要:創建namespace、創建imagepullsecret、創建pv(storageclass)、創建deployment(pod controller)、創建svc、創建ingress、等。其中鏡像打包推送阿里云倉庫和從阿里云倉庫下載鏡像使用vpc訪問,不走公網,無網速限制。流程完畢,runner pod 銷毀,gitlab 返回結果。

需要強調的一點是,在這里的資源資源清單不包含configmap或者secret,牽扯到安全性的問題,不應該出

現在代碼倉庫中,我司是使用rancher充當k8s多集群管理平臺,上述安全問題在rancher的dashboard中由運維來做的。

服務部署邏輯圖

有關服務部署邏輯圖如下:

根據發版流程的淺析,再根據邏輯圖可以明確發版流程。在這里看到我司使用的是kong代替nginx,做認證、鑒權、代理。而slb的ip綁定在kong上。0,1,2屬于test job;3屬于build job;4,5,6,7屬于change pod 階段。并非所有的服務都需要做存儲,需要根據實際情況來定,所以需要在kubernetes.sh里寫判斷。在這里我試圖使用一套CI應用與所有的環境,所以需要在kubernetes.sh中用到的判斷較多,且.gitlab-ci.yml顯得過多。建議是使用一個ci模版,應用于所有的環境,畢竟怎么省事怎么來。還要考慮自己的分支模式

缺少監控預警平臺

構建可信賴且符合我司集群環境的聯邦監控平臺,實現對幾個集群環境的同時監控和預故障告警,提前介入。

監控預警邏輯圖

有關監控預警邏輯圖如下:

淺析:總的來說,我這里使用到的監控方案是prometheus?shell腳本或go腳本?sentry。使用到的告警方式是企業微信或者企業郵箱。上圖三種顏色的線代表三種監控方式需要注意。腳本主要是用來做備份告警、證書告警、抓賊等。prometheus這里采用的是根據prometheus-opertor修改的prometheus資源清單,數據存儲在nas上。sentry嚴格的來講屬于日志收集類的平臺,在這里我將其歸為監控類,是因為我看中了其收集應用底層代碼的崩潰信息的能力,屬于業務邏輯監控, 旨在對業務系統運行過程中產生的錯誤日志進行收集歸納和監控告警。

注意這里使用的是聯邦監控平臺,而部署普通的監控平臺。

聯邦監控預警平臺邏輯圖

多集群聯邦監控預警平臺邏輯圖如下:

因為我司有幾個k8s集群,如果在每個集群上都部署一套監控預警平臺的話,管理起來太過不便,所以這里我采取的策略是使用將各監控預警平臺實行一個聯邦的策略,使用統一的可視化界面管理。這里我將實現三個級別餓監控:操作系統級、應用程序級、業務級。對于流量的監控可以直接針對kong進行監控,模版7424。

缺少日志系統

隨著業務全面k8s化進程的推進,對于日志系統的需求將更加渴望,k8s的特性是服務的故障日志難以獲取。建立可觀測的能過濾的日志系統可以降低對故障的分析難度。

有關日志系統邏輯圖如下:

淺析:在業務全面上k8s化后,方便了管理維護,但對于日志的管理難度就適當上升了。我們知道pod的重啟是有多因素且不可控的,而每次pod重啟都會重新記錄日志,即新pod之前的日志是不可見的。當然了有多種方法可以實現日志長存:遠端存儲日志、本機掛載日志等。出于對可視化、可分析等的考慮,選擇使用elasticsearch構建日志收集系統。

極度缺少有關操作文檔

建立以語雀--> 運維相關資料為中心的文檔中心,將有關操作、問題、腳本等詳細記錄在案,以備隨時查看。

淺析因安全性原因,不便于過多同事查閱。運維的工作比較特殊,安全化、文檔化是必須要保障的。我認為不論是運維還是運維開發,書寫文檔都是必須要掌握的,為己也好,為他也罷。文檔可以簡寫,但必須要含苞核心的步驟。我還是認為運維的每一步操作都應該記錄下來。

請求路線不明朗

根據集群重構的新思路,重新梳理集群級流量請求路線,構建具備:認證、鑒權、代理、連接、保護、控制、觀察等一體的流量管理,有效控制故障爆炸范圍。

請求路線邏輯圖如下:

淺析:客戶訪問https://www.cnblogs.com/zisefeizhu 經過kong網關鑒權后進入特定名稱空間(通過名稱空間區分項目),因為服務已經拆分為微服務,服務間通信經過istio認證、授權,需要和數據庫交互的去找數據庫,需要寫或者讀存儲的去找pv,需要轉換服務的去找轉換服務...... 然后返回響應。

總結

綜上所述,構建以:以kubernetes為核心的ci/cd發版流程、以prometheus為核心的聯邦監控預警平臺、以elasticsearch為核心的日志收集系統、以語雀為核心的文檔管理中心、以kong及istio為核心的南北東西流量一體化服務,可以在高平發,高可靠性上做到很好保障。

附:總體架構邏輯圖

注:請根據箭頭和顏色來分析。

淺析:上圖看著似乎過于混亂,靜下心來,根據上面的拆分模塊一層層分析還是可以看清晰的。這里我用不同顏色的連線代表不同模塊的系統,根據箭頭走還是蠻清晰的。

根據我司目前的業務流量,上述功能模塊,理論上可以實現集群的維穩。私認為此套方案可以確保業務在k8s集群上穩定的運行一段時間,再有問題就屬于代碼層面的問題了。這里沒有使用到中間件,倒是使用到了緩存redis不過沒畫出來。我規劃在上圖搞定后再在日志系統哪里和轉換服務哪里增加個中間件kafka或者rq 看情況吧。

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,835評論 6 534
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,676評論 3 419
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 176,730評論 0 380
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,118評論 1 314
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,873評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,266評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,330評論 3 443
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,482評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,036評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,846評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,025評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,575評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,279評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,684評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,953評論 1 289
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,751評論 3 394
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,016評論 2 375

推薦閱讀更多精彩內容