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