作者簡介:鄭建林,現任深圳市技研智聯科技有限公司架構師,技術負責人。多年物聯網及金融行業經驗,對雲計算、區塊鏈、大數據等領域有較深入研究及應用。現主要從事 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 流程架構圖如下:

容器平台排名_ico

改用 KubeSphere 後開發人員集成發佈在 KubeSphere DevOps 項目裏完成整個流程的編輯運行查看等操作。基於 Jenkins 腳本編排流水線,生產環境由運維人員進行 DevOps 項目授權操作。操作起來更流暢,能實現更復雜的流水線編排,但 Jenkins 容器鏡像相對較大會吃資源一點。基於 KubepShere CI/CD 流程架構圖如下:

容器平台排名_ico_02

日誌與監控

容器平台排名_運維_03

日誌監控採用更為輕量的 Loki 系統組件來採集處理,並用 Grafana 進行可視化展示,監控使用 Prometheus,同樣使用 Grafana 來展示。

容器平台排名_運維_04

KubeSphere 賬號權限管理

各個應用普遍存在自己的賬號角色體系,管理起來會比較繁瑣,因此打通產品應用賬號和 KubepShere 賬號體系能極大提高配置使用體驗,幸好 KubepShere 提供了 oauth 授權接口模板,只需要按照例子配置 url 及 client_id,寫好回調處理接口即可打通賬號授權登錄。授權登錄架構圖如下:

容器平台排名_ico_05

使用效果

賬號以及項目權限管理

打通應用系統賬號跟 KubepShere 賬號授權後,用户及權限管理更容易便捷,KubeSphere 集成效果如下圖:

容器平台排名_運維_06

初次登錄 KubeSphere 授權個人信息即可,後續登錄無需重複授權操作。目前不足之處是企業租户和角色沒有和我們平台應用打通,需要各自配置。授權信息需要賬號 ID,賬號名字以及郵箱等。第一次授權確認賬號信息如下圖所示:

容器平台排名_ico_07

應用服務發佈部署

應用服務發佈部署功能更全面,方便統一管理控制。

容器平台排名_運維_08

在使用過程中也出現過偶爾卡住需要取消重新運行情況,多個流水線同時運行需要較長時間排隊問題,後續運行效率這塊希望能夠優化。

資源及服務性能監控

KubeSphere 監控提供了 Prometheus 監控套件,對服務器資源及使用情況能實時監控同時可以查詢歷史變化,極大方便了系統維護管理,提前發現系統資源瓶頸進行處理,提高穩定性。服務器集羣監控如下圖所示:

容器平台排名_PaaS_09

KubeSphere 同時支持對單個服務的性能和資源使用進行監控,這是原先使用 Rancher 沒有體驗過的,對評估整體服務部署資源性能佔用有了很好計算參考和優化方向。服務監控如下圖所示:

容器平台排名_容器平台排名_10

容器管理組件擴展

去年六月底 KubeShere 3.3.0 版本發佈後第一時間安裝嚐鮮,一開始全功能安裝 KubeSphere,core,Prometheus,Istio,DevOps,monitor,APP 應用商店等各個組件。發現整個一套部署下去會很重,同時當前階段有些組件還不太用得上,於是在部署安裝配置文件裏對一些模塊(如 Istio,APP 商店)設置為 false 不安裝即可。

未來規劃

PaaS 容器管理監控等基礎設施作為企業產品服務的重要底座,穩定性,易用性,可適配性也是我們不斷追求的目標,因此計劃後續結合 KubeSphere 強大的容器管理平台能力進行自身產品需求服務管理進行融合,幾個重要方向如下:

  1. 輕量化部署 KubeSphere 核心組件,同時開發適配自己需要的插件。
  2. 輕量化部署後做多環境集羣統一管理。
  3. 同時特殊場景下支持混合雲場景。
  4. 根據後續業務量合適時機上 Istio 和 Serverless。

本文由博客一文多發平台 OpenWrite 發佈!