作者簡介:鄭建林,現任深圳市技研智聯科技有限公司架構師,技術負責人。多年物聯網及金融行業經驗,對雲計算、區塊鏈、大數據等領域有較深入研究及應用。現主要從事 PaaS 平台建設,為公司各業務產品線提供平台底座如技術中台,數據中台,業務中台等。
公司簡介
深圳市技研智聯科技有限公司:為佛山技研智聯科技有限公司子公司,前者為三技精密和研華合資公司。提供從工控設備,網關,雲平台一體化的專業印染數字化工業互聯網平台。
佛山技研智聯科技有限公司(以下簡稱“技研智聯”)是由三技精密技術(廣東)股份有限公司以及研華科技股份有限公司於 2020 年 8 月合資成立,是一家專注於為紡織企業提供自動化控制系統軟件、工業互聯網應用平台、數字化轉型與智能製造整體解決方案,併為企業提供行業軟件諮詢、實施、集成等服務的高新技術企業,專精特新中小企業。
公司發展至今已經是 100 多人規模專業技術產品團隊,自主研發的 iTEX 智慧紡織雲平台,目前已經連接 70 多家工廠,2000 多台設備,能夠把工廠各個系統、各類跨業務的數據在同一個平台上打通,讓企業實現基於數據和流程的業務協同。
公司較早就開始擁抱雲原生容器化部署,支持客户在公有云 iTEX 雲平台使用 SaaS 產品,同時支持用户按私有云方式私有化部署安裝使用。目前 IT 和運維團隊規模 5 人,主要滿足自身研發上雲和客户安裝部署運維需求。
背景介紹
本人為深圳市技研智聯科技有限公司架構師和技術負責人,負責整個公司基礎平台搭建設計,所在團隊為整個公司產品業務提供基礎 PaaS 平台,包括技術中台,數據中台,業務中台等。原先業務團隊主要做 SaaS 雲平台和邊緣控制相關產品。使用超融合服務器上分割部署 K8s 集羣,通過 Rancher 來管理服務器集羣。DevOps 用的 git 支持的腳步打 Docker 鏡像方式,手動發佈服務。存在服務器資源不足,擴展性欠缺,運維管理不便,技術框架差異等問題,隨着業務發展需要底層資源管理,技術框架,公共服務統一服務化迫在眉睫。
選型説明
作為公司基礎服務平台團隊,需要提供統一易用的容器服務發佈部署管理一站式平台,期間對比了 Openshift,Rancher,KubeSphere 這幾大開源 PaaS 容器管理平台,對比特點如下(希望儘量客觀,各個平台組件不斷髮展,若有失正確望見諒):
表 1 開源 PaaS 容器管理平台對比
|
開源 PaaS
|
Rancher
|
Openshift
|
KubeSphere
|
|
開發團隊
|
Rancher
|
紅帽
|
青雲科技
|
|
容器平台
|
好
|
好
|
好
|
|
監控
|
好
|
好
|
好
|
|
devops
|
一般
|
一般
|
好
|
|
多集羣支持
|
好
|
一般
|
良好
|
|
應用市場支持
|
無
|
Operator
|
Helm
|
|
多租户
|
支持一般
|
支持一般
|
支持良好
|
|
交互
|
良好
|
良好
|
好
|
|
安裝
|
輕
|
重
|
重
|
一方面 KubeSphere 優秀的交互體驗一下擊中了研發人員的心理,同時本着融合產品模塊化開發的初衷,最終選擇了 KubeSphere,希望能提高交互效果,另外期望可以提升整體產品底層設施穩定性和開發效率。
實踐過程
K8s 集羣基於騰訊雲服務器 centos7.9 系統採用三個 Master 節點高可用集羣多個 Worker 節點方案搭建,使用穩定 K8s v1.23.5 版本。分為開發,測試,預發佈和生產四個私有網絡 K8s 集羣。
網絡方案
網絡採用 Calico CNI。相比 Flannel,Calico 網絡插件具有如下優勢:
- 功能更全面,還可提供網絡安全和管理;
- Calico 不使用 Overlay 網絡。相反,Calico 配置第 3 層網絡,該網絡使用 BGP 路由協議在主機之間路由數據包,性能具有優勢 - 能做網絡策略,可與服務網格 Istio 集成。
集羣網絡為騰訊雲 VPC 私有網絡外網不可訪問,對外採用負載均衡統一接入經過 APISIX 流量網關後再到業務網關處理。服務之間都是內網通過 K8s 虛擬網絡解析服務名訪問。
存儲方案
出於成本考慮,存儲主要採用騰訊雲 CBS 雲硬盤存儲,通過 NFS 掛載到 PV 中供服務綁定 PVC 使用。對性能要求高的也可以使用騰訊雲上提供的其他高性能存儲服務。
DevOps 持續集成部署
在使用 KubeSphere 之前公司公有云服務都部署在超融合服務器環境,使用 GitLab 的 CI 能力,在 Rancher 上發佈服務。開發測試環境開發人員進行代碼編譯打包然後發佈,生產環境開發人員打 tag 推送鏡像,然後統一由運維人員使用 Rancher 進行發佈部署。CI/CD 流程架構圖如下:
改用 KubeSphere 後開發人員集成發佈在 KubeSphere DevOps 項目裏完成整個流程的編輯運行查看等操作。基於 Jenkins 腳本編排流水線,生產環境由運維人員進行 DevOps 項目授權操作。操作起來更流暢,能實現更復雜的流水線編排,但 Jenkins 容器鏡像相對較大會吃資源一點。基於 KubepShere CI/CD 流程架構圖如下:
日誌與監控
日誌監控採用更為輕量的 Loki 系統組件來採集處理,並用 Grafana 進行可視化展示,監控使用 Prometheus,同樣使用 Grafana 來展示。
KubeSphere 賬號權限管理
各個應用普遍存在自己的賬號角色體系,管理起來會比較繁瑣,因此打通產品應用賬號和 KubepShere 賬號體系能極大提高配置使用體驗,幸好 KubepShere 提供了 oauth 授權接口模板,只需要按照例子配置 url 及 client_id,寫好回調處理接口即可打通賬號授權登錄。授權登錄架構圖如下:
使用效果
賬號以及項目權限管理
打通應用系統賬號跟 KubepShere 賬號授權後,用户及權限管理更容易便捷,KubeSphere 集成效果如下圖:
初次登錄 KubeSphere 授權個人信息即可,後續登錄無需重複授權操作。目前不足之處是企業租户和角色沒有和我們平台應用打通,需要各自配置。授權信息需要賬號 ID,賬號名字以及郵箱等。第一次授權確認賬號信息如下圖所示:
應用服務發佈部署
應用服務發佈部署功能更全面,方便統一管理控制。
在使用過程中也出現過偶爾卡住需要取消重新運行情況,多個流水線同時運行需要較長時間排隊問題,後續運行效率這塊希望能夠優化。
資源及服務性能監控
KubeSphere 監控提供了 Prometheus 監控套件,對服務器資源及使用情況能實時監控同時可以查詢歷史變化,極大方便了系統維護管理,提前發現系統資源瓶頸進行處理,提高穩定性。服務器集羣監控如下圖所示:
KubeSphere 同時支持對單個服務的性能和資源使用進行監控,這是原先使用 Rancher 沒有體驗過的,對評估整體服務部署資源性能佔用有了很好計算參考和優化方向。服務監控如下圖所示:
容器管理組件擴展
去年六月底 KubeShere 3.3.0 版本發佈後第一時間安裝嚐鮮,一開始全功能安裝 KubeSphere,core,Prometheus,Istio,DevOps,monitor,APP 應用商店等各個組件。發現整個一套部署下去會很重,同時當前階段有些組件還不太用得上,於是在部署安裝配置文件裏對一些模塊(如 Istio,APP 商店)設置為 false 不安裝即可。
未來規劃
PaaS 容器管理監控等基礎設施作為企業產品服務的重要底座,穩定性,易用性,可適配性也是我們不斷追求的目標,因此計劃後續結合 KubeSphere 強大的容器管理平台能力進行自身產品需求服務管理進行融合,幾個重要方向如下:
- 輕量化部署 KubeSphere 核心組件,同時開發適配自己需要的插件。
- 輕量化部署後做多環境集羣統一管理。
- 同時特殊場景下支持混合雲場景。
- 根據後續業務量合適時機上 Istio 和 Serverless。
本文由博客一文多發平台 OpenWrite 發佈!