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