2020 年我國互聯(lián)網(wǎng)醫(yī)療企業(yè)迎來了“爆發(fā)元年”,互聯(lián)網(wǎng)醫(yī)療企業(yè)的迅速發(fā)展的同時(shí),也暴露出更多的不足。互聯(lián)網(wǎng)醫(yī)療作為醫(yī)療行業(yè)發(fā)展的趨勢(shì),對(duì)于解決中國醫(yī)療資源分配不平衡和人們?nèi)找嬖鲩L的醫(yī)療健康需求之間的矛盾具有諸多意義。但對(duì)于能否切實(shí)解決居民就診的問題,以及企業(yè)能否實(shí)現(xiàn)持續(xù)發(fā)展等是國家以及企業(yè)十分關(guān)注的問題。而我司在這條道路上沉淀多年,一直致力于互聯(lián)網(wǎng)醫(yī)療服務(wù),擁有自己完善醫(yī)療產(chǎn)品平臺(tái)以及技術(shù)體系。
建設(shè)目標(biāo)
第三方客戶業(yè)務(wù)環(huán)境均是 IDC 自建機(jī)房環(huán)境,提供虛擬化服務(wù)器資源,計(jì)劃引入 Kubernetes 技術(shù),滿足互聯(lián)網(wǎng)醫(yī)療需求。
技術(shù)現(xiàn)狀
據(jù)悉,第三方客戶已有的架構(gòu)體系已不滿足日益增長的業(yè)務(wù)量,缺少一個(gè)完整且靈活的技術(shù)架構(gòu)體系。
平臺(tái)架構(gòu)圖
上圖便是我們項(xiàng)目生產(chǎn)企業(yè)架構(gòu)圖,從邏輯上分為四大版塊。
DevOps CI/CD 平臺(tái)。關(guān)于 CI/CD 自動(dòng)化開源工具相信大家都了解不少,就我個(gè)人而言,我所熟知的就有 Jenkins、GitLab、Spug 以及我接下來將會(huì)為大家介紹的 KubeSphere。它同樣也能完成企業(yè)級(jí) CI/CD 持續(xù)交付事宜。
Kubernetes 集群。因業(yè)務(wù)需要,這里將測(cè)試、生產(chǎn)兩套環(huán)境獨(dú)立開,避免相互影響。如上圖所示是三個(gè) Matsre 節(jié)點(diǎn),五個(gè) Node 節(jié)點(diǎn),這里 Master 節(jié)點(diǎn)標(biāo)注污點(diǎn)使其 Pod 不可調(diào)度,避免主節(jié)點(diǎn)負(fù)載過高等情況發(fā)生。另外測(cè)試環(huán)境集群規(guī)模相對(duì)較小,Master 節(jié)點(diǎn)數(shù)量相同,但 Node 節(jié)點(diǎn)僅只有兩個(gè)作為使用,因僅作測(cè)試,沒有問題。
底層存儲(chǔ)環(huán)境。我們并未采用容器化的方式進(jìn)行部署,而是以傳統(tǒng)的方式部署。這樣做也是為了高效,而且在互聯(lián)網(wǎng)業(yè)務(wù)中,存儲(chǔ)服務(wù)都有一定的性能要求來應(yīng)對(duì)高并發(fā)場(chǎng)景。因此將其部署在裸機(jī)服務(wù)器上是最佳的選擇。MySQL、Redis、NFS 均做了高可用,避免了單點(diǎn)問題,NFS 在這里是作為 KubeSphere StorageClass 存儲(chǔ)類。關(guān)于 StorageClass 存儲(chǔ)類選型還有很多,比如 Ceph、OpenEBS 等等,它們都是 KubeSphere 能接入的開源底層存儲(chǔ)類解決方案。尤其是 Ceph,得到了很多互聯(lián)網(wǎng)大廠的青睞,此時(shí)你們可能會(huì)問我,為什么選擇 NFS 而不選擇 Ceph,我只能說,在工具類選型中,只有最合適的,沒有最好的,適合你的業(yè)務(wù)類型你就選擇什么,而不是人云亦云,哪個(gè)工具熱度高而去選擇哪個(gè)工具。
分布式監(jiān)控平臺(tái)。一個(gè)完整的互聯(lián)網(wǎng)應(yīng)用平臺(tái)自然是少不了監(jiān)控告警了。在過去幾年,我們所熟知的 Nagios、Zabbix、Cacti 這幾款都是老牌監(jiān)控了,現(xiàn)如今都漸漸退出歷史的舞臺(tái)。如今 Prometheus 脫穎而出,深受各大互聯(lián)網(wǎng)企業(yè)青睞,結(jié)合 Grafana,不得不說是真的香。在該架構(gòu)體系中,我也是毫不猶豫的選擇了它。
背景介紹
客戶現(xiàn)有平臺(tái)環(huán)境缺少完整的技術(shù)架構(gòu)體系,業(yè)務(wù)版本更新迭代困難,無論是業(yè)務(wù)還是技術(shù)平臺(tái)都出現(xiàn)較為嚴(yán)重的瓶頸問題,不足以支撐現(xiàn)有的業(yè)務(wù)體系。為了避免導(dǎo)致用戶流失,需要重新制定完整的架構(gòu)體系。而如今,互聯(lián)網(wǎng)技術(shù)不斷更新迭代,隨著 Kubernetes 日益盛行,KubeSphere 也應(yīng)運(yùn)而生。一個(gè)技術(shù)的興起必定會(huì)能帶動(dòng)整個(gè)技術(shù)生態(tài)圈的發(fā)展,我相信,KubeSphere 的出現(xiàn),能帶給我們遠(yuǎn)不止你想象的價(jià)值和便捷。
Kubernetes 集群建設(shè)完畢之后,隨后便面臨一個(gè)問題,就是我們內(nèi)部研發(fā)人員如何去管理維護(hù)它。需求新增要求版本迭代,研發(fā)人員如何去進(jìn)行發(fā)版上線自己的業(yè)務(wù)代碼;出現(xiàn)問題如何更好的去分析定位處理等等一系列問題都需要考慮,難不成讓他們登陸到服務(wù)器上通過命令行敲?因此為了解決上面的問題,我們需要再引入一個(gè) Dashboard 管理平臺(tái)。
選擇 KubeSphere 的原由
KubeSphere 為企業(yè)用戶提供高性能可伸縮的容器應(yīng)用管理服務(wù),旨在幫助企業(yè)完成新一代互聯(lián)網(wǎng)技術(shù)驅(qū)動(dòng)下的數(shù)字化轉(zhuǎn)型,加速應(yīng)用的快速迭代與業(yè)務(wù)交付,以滿足企業(yè)日益增長的業(yè)務(wù)需求。我所看重的 KubeSphere 四大主要優(yōu)勢(shì)如下:
1. 多集群統(tǒng)一管理
隨著容器應(yīng)用的日漸普及,各個(gè)企業(yè)跨云或在本地環(huán)境中部署多個(gè)集群,而集群管理的復(fù)雜程度也在不斷增加。為滿足用戶統(tǒng)一管理多個(gè)異構(gòu)集群的需求,KubeSphere 配備了全新的多集群管理功能,幫助用戶跨區(qū)、跨云等多個(gè)環(huán)境管理、監(jiān)控、導(dǎo)入和運(yùn)維多個(gè)集群,全面提升用戶體驗(yàn)。
多集群功能可在安裝 KubeSphere 之前或之后啟用。具體來說,該功能有兩大特性:
統(tǒng)一管理:用戶可以使用直接連接或間接連接導(dǎo)入 Kubernetes 集群。只需簡(jiǎn)單配置,即可在數(shù)分鐘內(nèi)在 KubeSphere 的互動(dòng)式 Web 控制臺(tái)上完成整個(gè)流程。集群導(dǎo)入后,用戶可以通過統(tǒng)一的中央控制平面監(jiān)控集群狀態(tài)、運(yùn)維集群資源。
高可用:在多集群架構(gòu)中,一個(gè)集群可以運(yùn)行主要服務(wù),另一集群作為備用集群。一旦該主集群宕機(jī),備用集群可以迅速接管相關(guān)服務(wù)。此外,當(dāng)集群跨區(qū)域部署時(shí),為最大限度地減少延遲,請(qǐng)求可以發(fā)送至距離最近的集群,由此實(shí)現(xiàn)跨區(qū)跨集群的高可用。
2. 強(qiáng)大的可觀測(cè)性功能
KubeSphere 的可觀測(cè)性功能在 v3.0 中全面升級(jí),進(jìn)一步優(yōu)化與改善了其中的重要組件,包括監(jiān)控日志、審計(jì)事件以及告警通知。用戶可以借助 KubeSphere 強(qiáng)大的監(jiān)控系統(tǒng)查看平臺(tái)中的各類數(shù)據(jù),該系統(tǒng)主要的優(yōu)勢(shì)包括:
自定義配置:用戶可以為應(yīng)用自定義監(jiān)控面板,有多種模板和圖表模式可供選擇。用戶可按需添加想要監(jiān)控的指標(biāo),甚至選擇指標(biāo)在圖表上所顯示的顏色。此外,也可自定義告警策略與規(guī)則,包括告警間隔、次數(shù)和閾值等。
全維度數(shù)據(jù)監(jiān)控與查詢:KubeSphere 提供全維度的資源監(jiān)控?cái)?shù)據(jù),將運(yùn)維團(tuán)隊(duì)從繁雜的數(shù)據(jù)記錄工作中徹底解放,同時(shí)配備了高效的通知系統(tǒng),支持多種通知渠道。基于 KubeSphere 的多租戶管理體系,不同租戶可以在控制臺(tái)上查詢對(duì)應(yīng)的監(jiān)控日志與審計(jì)事件,支持關(guān)鍵詞過濾、模糊匹配和精確匹配。
圖形化交互式界面設(shè)計(jì):KubeSphere 為用戶提供圖形化 Web 控制臺(tái),便于從不同維度監(jiān)控各個(gè)資源。資源的監(jiān)控?cái)?shù)據(jù)會(huì)顯示在交互式圖表上,詳細(xì)記錄集群中的資源用量情況。不同級(jí)別的資源可以根據(jù)用量進(jìn)行排序,方便用戶對(duì)數(shù)據(jù)進(jìn)行對(duì)比與分析。
高精度秒級(jí)監(jiān)控:整個(gè)監(jiān)控系統(tǒng)提供秒級(jí)監(jiān)控?cái)?shù)據(jù),幫助用戶快速定位組件異常。此外,所有審計(jì)事件均會(huì)準(zhǔn)確記錄在 KubeSphere 中,便于后續(xù)數(shù)據(jù)分析。
3. 自動(dòng)化 DevOps CI/CD 流程機(jī)制
自動(dòng)化是落地 DevOps 的重要組成部分,自動(dòng)、精簡(jiǎn)的流水線為用戶通過 CI/CD 流程交付應(yīng)用提供了良好的條件。
集成 Jenkins:KubeSphere DevOps 系統(tǒng)內(nèi)置了 Jenkins 作為引擎,支持多種第三方插件。此外,Jenkins 為擴(kuò)展開發(fā)提供了良好的環(huán)境,DevOps 團(tuán)隊(duì)的整個(gè)工作流程可以在統(tǒng)一的平臺(tái)上無縫對(duì)接,包括開發(fā)測(cè)試、構(gòu)建部署、監(jiān)控日志和通知等。KubeSphere 的帳戶可以用登錄內(nèi)置的 Jenkins,滿足企業(yè)對(duì)于 CI/CD 流水線和統(tǒng)一認(rèn)證多租戶隔離的需求。
便捷的內(nèi)置工具:無需對(duì) Docker 或 Kubernetes 的底層運(yùn)作原理有深刻的了解,用戶即可快速上手自動(dòng)化工具,包括 Binary-to-Image 和 Source-to-Image。只需定義鏡像倉庫地址,上傳二進(jìn)制文件(例如 JAR/WAR/Binary),即可將對(duì)應(yīng)的服務(wù)自動(dòng)發(fā)布至 Kubernetes,無需編寫 Dockerfile。
4. 細(xì)粒度權(quán)限控制
KubeSphere 為用戶提供不同級(jí)別的權(quán)限控制,包括集群、企業(yè)空間和項(xiàng)目。擁有特定角色的用戶可以操作對(duì)應(yīng)的資源。
自定義角色:除了系統(tǒng)內(nèi)置的角色外,KubeSphere 還支持自定義角色,用戶可以給角色分配不同的權(quán)限以執(zhí)行不同的操作,以滿足企業(yè)對(duì)不同租戶具體工作分配的要求,即可以定義每個(gè)租戶所應(yīng)該負(fù)責(zé)的部分,不被無關(guān)資源所影響。安全性方面由于不同級(jí)別的租戶之間完全隔離,他們?cè)诠蚕聿糠仲Y源的同時(shí)也不會(huì)相互影響。租戶之間的網(wǎng)絡(luò)也完全隔離,確保數(shù)據(jù)安全。