《基於Kubernetes舵手集群的設計與實現》


前言

《基於Kubernetes舵手集群的設計與實現》是我的畢業設計項目。本系統采用Kubernetes容器編排、基於Jenkins\Gitlab的CICD技術、EFK日志收集、Prometheus監控告警、Ceph后端存儲和Harbor鏡像管理,設計並實現了具有“源碼一鍵部署”、“日志實時收集”、“監控告警展示”、“數據存儲分析”和“鏡像管理維護”五大模塊的舵手集群系統。

拓撲圖

總體架構圖

日志收集架構圖

原理

部署方案


(1) Kubernetes集群采用三主三從模式,從架構規划上防止單點故障,保證集群高可用性;

(2) 由bs-k8s-ceph-209、bs-k8s-gitlab-208、bs-k8s-harbor-207三節點組成后端分布式存儲Ceph集群;

(3) Gitlab源碼管理倉庫是供開發工程師使用,獨立於Kubernetes集群之外,既減輕了Kubernetes集群的負擔又權限分明便於維護管理。

部署原理

(1) 開發工程師將項目源碼合並到Master分支並推送到Gitlab源碼管理倉庫服務器;

(2) Gitlab Webhook感知到Master分支發生改動后觸發Jenkins持續集成Pod在Kubernetes集群中臨時啟一個Jenkins-slave Pod,進行項目源碼拉取、編譯、測試、構建Docker鏡像、並推送鏡像到私有倉庫Harbor;

(3) Jenkins通過Kubernetes deployment插件在Kubernetes集群中拉取推送到Harbor鏡像倉庫中的應用鏡像制做成應用Pod,此時已經完成一鍵部署源碼到Kubernetes集群;

(4) Traefik代理容器編排集群中的應用服務,將應用服務暴漏到公網供用戶訪問;

(5) EFK日志收集集群的Kibana界面可以展示采集到的已經發布的應用服務的日志信息,供運維工程師和開發工程師分析;

(6) Prometheus監控告警集群的Grafana展示界面可以實時刷新整個容器編集群和應用服務的運行狀態,並將越限行為進行郵件告警發送給運維工程師;

(7) 舵手集群內所有有狀態類應用程序的數據都存儲在分布式存儲集群Ceph中。

后續

《基於Kubernetes的舵手集群系統》是由我借鑒互聯網現有拓撲架構圖而獨立設計並完成的項目,代表了我大學期間的最高水平,設計到了運維、開發、容器三個方面。但此項目並不完善如:缺乏微服務、Go項目不優秀等,還需要進行改動升級。此項目的監控部分、日志收集部分、數據存儲部分依然存在不深入的問題,我會持續的進行優化下去。

大學不是終點,人生正式起步。道阻且長,我對自己有要求:今年的目標是完成容器生態圈之旅-第三章《容器編排工具Kubernetes》、容器生態圈之旅-第四章《自動化部署CICD》、容器生態圈之旅-第五章《日志收集EFK》、容器生態圈之旅-第五章《監控告警Prometheus》、容器生態圈之旅-第六章《監控告警Prometheus》、容器生態圈之旅-第七章《數據存儲Ceph》。對於Mysql、Redis、Zookeeper、Kafka的掌握也是今年的要求,對了還有Go語言的深入學習(這塊要求不高,今年還是圍繞web深入,務必拿出原創項目)。

今年的任務很簡單全面提升自我,錢不是今年的目標。人生的路很長,IT的路不會太長,我渴望站在巨人(前輩)的肩膀上成為新的巨人(前輩)。我要求自己明年的時候IT江湖有我名,紫色代表高貴,飛豬代表不屈服。我就是紫色飛豬,站在巨人的肩膀上成為新的巨人。

下半年必須在工作的同時全面提示自我!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM