前言
《基於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江湖有我名,紫色代表高貴,飛豬代表不屈服。我就是紫色飛豬,站在巨人的肩膀上成為新的巨人。
下半年必須在工作的同時全面提示自我!