開源雲原生平臺 KubeSphere 與 Rainbond 對比

最近因爲工作需要,需要找一個功能完善的雲原生應用平臺,經過自己篩選和朋友推薦,剩下 KubeSphere 和 Rainbond,這兩個產品都是基於 Kubernetes 之上構建的雲原生應用平臺,功能都非常強大,但產品定位和功能側重不同,本文將介紹我在選型過程中從各維度對比兩款產品的過程記錄。

產品定位對比

KubeSphere 是在 Kubernetes 之上構建的面向雲原生應用的分佈式操作系統,完全開源,支持多雲與多集羣管理,提供全棧的 IT 自動化運維能力,簡化企業的 DevOps 工作流。作爲全棧的多租戶容器平臺,KubeSphere 提供了運維友好的嚮導式操作界面,幫助企業快速構建一個強大和功能豐富的容器雲平臺。KubeSphere 爲用戶提供構建企業級 Kubernetes 環境所需的多項功能,例如多雲與多集羣管理、Kubernetes 資源管理、DevOps、應用生命週期管理、微服務治理(服務網格)、日誌查詢與收集、服務與網絡、多租戶管理、監控告警、事件與審計查詢、存儲管理、訪問權限控制、GPU 支持、網絡策略、鏡像倉庫管理以及安全管理等。

Rainbond 是一個雲原生應用管理平臺,使用簡單,不需要懂容器、Kubernetes 和底層複雜技術,支持管理多個 Kubernetes 集羣,和管理企業應用全生命週期。主要功能包括應用開發環境、應用市場、微服務架構、應用交付、應用運維、應用級多雲管理等。Rainbond 遵循 以應用爲中心的設計理念,統一封裝容器、Kubernetes 和底層基礎設施相關技術,讓使用者專注於業務本身, 避免在業務以外技術上花費大量學習和管理精力。

3uqIks

由於產品抽象不同,表現出來的概念和流程也有很大差異,KubeSphere 主要是 Kubernetes 相關概念和抽象,使用和管理都需要懂 Kubernetes 相關體系知識,懂 Kubernetes 的人能快速上手,Rainbond 應用級抽象,使用門檻很低,面向不懂 Kubernetes 的普通開發人員,平臺管理跟 KubeSphere 一樣都需要懂 Kubernetes。

開源社區活躍度對比

KH38iY

KubeSphere 社區更加活躍些,畢竟是萬星開源項目,用戶遍佈國內外。Rainbond 社區用戶基本都是國內用戶,Star 上差了些不過 Github、社區羣也蠻活躍的。

安裝體驗對比

KubeSphere

支持通過一條命令在 Linux 上快速安裝 KubeSphere。

./kk create cluster --with-kubernetes v1.22.10 --with-kubesphere v3.3.0

Rainbond

支持通過一條命令在 Mac、Win、Linux 上快速安裝 Rainbond。

docker run --privileged -d -p 7070:7070 -p 80:80 -p 6060:6060 rainbond/rainbond:v5.8.1-dind-allinone

3lH8yp

KubeSphere 和 Rainbond 安裝都很簡單。KubeSphere 自研的 KubeKey 安裝工具,在服務上安裝 K8s 和 KubeSphere 很方便。KubeSphere 的可拔插組件這個設計還蠻好的,Allinone 安裝之後有 5  個 Pod 左右,能滿足基本運行需求,需要其他功能就通過可拔插開啓,開啓所有組件後 Pod 大概 60 個左右。Rainbond 能支持在 Mac M1 Docker Desktop 上安裝,這個安裝體驗還蠻好的可以在本地開發,Rainbond 啓動後 Pod 大概 15 個左右,內存佔用 1G 左右。

應用部署功能對比

KubeSphere

KubeSphere 對接 git 倉庫部署源碼,支持 Source-to-Image (S2I) 標準工作流將源碼打包成鏡像,並部署在 Kubernetes 集羣中。支持 Java、Python、Node,其他語言可通過自定義 S2I 實現源碼構建。

KubeSphere 採用 Binary-to-Image (B2I) 標準工作流將二進制打包成鏡像,並部署在 Kubernetes 集羣中。支持通過 Jar、War、二進制

KubeSphere 支持自定義持續構建的流水線

Rainbond

Rainbond 支持對接和整合 Gitlab、Github、Gitee、SVN,實現統一入口

Rainbond 的構建支持自動識別源代碼類型,支持自動識別 Java Maven、Java Gradle、Java Jar、Java War、Python、PHP、.NetCore、Golang、NodeJS、Static HTML。

每種識別的開發語言支持設置環境相關信息,並自動構建成容器鏡像。

AGlkGK

KubeSphere 兼容 Kubernetes 體系,應用部署使用 S2I 和 B2I,KubeSphere 自定義流水線功能非常強大,配置靈活。Rainbond 應用部署不需要懂容器和 Kubernetes,支持常見的源代碼,並自動識別和構建,使用非常簡單。

微服務架構功能對比

KubeSphere

KubeSphere 的微服務架構基於 Istio 實現,支持微服務的流量可視化管理。

基於 Jaeger 的調用鏈分析

Rainbond

Rainbond 的微服務架構拓撲和服務編排,通過圖形化的編排,添加組件之間的依賴關係,添加後也會注入服務之間的連接信息等。拓撲圖可以展示服務之間的關係,用顏色區分服務的狀態等。

微服務實時性能分析

EVzji1

KubeSphere 完全依賴 Istio 實現微服務架構,對 Istio 的功能支持非常完整,KubeSphere 彌補了 Istio 沒有圖形化的控制面板的不足,簡化了 Istio 的上手難度,服務之間的拓撲圖是根據流量走向自動生成的,可以直觀的看到服務間流量。

Rainbond 的服務網格、服務治理、可觀測性都是通過插件體系支持的,傳統應用開啓服務網格插件,馬上就能支持微服務架構,服務治理和可觀測性也只需要開啓相應插件,Rainbond 內置了很多插件,有需要還可以自行擴展,可以將自己趁手的工具添加進來,另外,圖形化手動編排服務是個特色,不用改代碼就可以動態調整依賴關係。

應用市場功能對比

KubeSphere

內置應用商店有 30 個應用可直接安裝。

基於 Helm Chart 創建應用模板。

發佈 Helm Chart 應用模板。

Rainbond

內置應用商店有 90+ 應用可直接安裝。

支持用戶將已經部署好的應用一鍵發佈至應用市場,無需編寫複雜的 YAML。可以一鍵發佈應用模型內所有元數據,例如依賴關係、配置文件、存儲信息等。

支持應用離線導出導入,支持導出 Rainbond App 應用包、Docker Compose 應用包、非容器環境應用包。

支持基於 Rainbond 應用市場一鍵安裝和一鍵升級,升級會包含應用模型內所有元數據,包括依賴關係等。

XBfog5

在應用市場這塊 Rainbond 的功能比 KubeSphere 強大很多,易用性也好很多。KubeSphere 在應用市場這塊是基於標準的 Helm 實現的,在應用發佈、安裝、升級這套流程裏是按照標準的 Helm 應用規範實現,製作 Helm Chart 門檻比較高,功能也受限於 Helm。Rainbond 的應用市場 定義了自己的應用模型規範,也支持 Helm Chart 轉成 Rainbond 的應用模型,應用發佈支持一鍵發佈由幾十個服務組成的應用,無需編寫複雜的 YAML,離線導出是在企業軟件交付場景非常實用的功能。

Kubenetes 多集羣管理功能對比

KubeSphere

KubeSphere 支持對接多個 K8s 集羣,支持各種雲廠商託管 K8s 集羣以及私有云、混合雲等。藉助 KubeSphere 的圖形化 Web 控制檯,用戶可以管理底層的基礎架構,例如添加或刪除集羣。可以使用相同的方式管理部署在任何基礎架構上的異構集羣。支持跨集羣應用分發,資源整合等。支持通過圖形化界面管理節點,監控集羣狀態、應用資源監控、集羣告警和通知等。

集羣監控

Rainbond

支持對接多個 K8s 集羣,支持各種雲廠商託管 K8s 集羣以及私有云、混合雲等。支持用戶通過控制檯添加或刪除集羣,支持跨集羣應用分發。

通過 grafana 擴展的集羣和節點監控

KyrHVt

KubeSphere 在多集羣管理這塊比 Rainbond 體驗好,有豐富的監控和可觀測性,管理存儲和節點在控制檯全部完成,Rainbond 在集羣管理這塊需要在命令行下管理,監控功能也弱一些。

應用運維功能對比

基本管理

KubeSphere

支持對工作負載、容器組級別的管理,支持工作負載的 YAML 編輯、版本回滾、刪除、重新創建等。

支持對容器級別的日誌查詢過濾,支持全局的日誌查詢過濾。

KubeSphere 採用 Kubernetes 原生模式進行應用訪問,可通過 NodePort、LoadBalancer、Ingress 實現外部訪問。支持擴展第三方負載均衡控制器以及 Ingress 控制器

Rainbond

支持對應用、組件級別的管理,支持應用批量啓動、重啓、更新、關閉、刪除以及組件的操作,支持應用和組件級別的環境變量、版本回滾等。

組件日誌實時查看和篩選

Rainbond 採用統一的應用網關,支持配置 HTTP 路由規則和 HTTPS 證書

由 Rainbond Gateway 統一封裝訪問,支持 http、tcp、udp、grpc 訪問組件。

0wPiHR

對於基本管理來說 KubeSphere 是原生 K8s 的一些管理,比如刪除 Pod、編輯 YAML、配置環境、自定伸縮等,同樣 Rainbond 展現的是應用級概念,比如:在 K8s 裏沒有關閉的概念,而在 Rainbond 裏應用不用了直接關閉,想用了再啓動,Rainbond 做了很多應用級的概念轉化,對於不動 K8s 的開發人員更加容易接受。

KubeSphere 在網關這塊同樣也是遵循了 K8s 原生的模式,通過 NodePort、LoadBalancer、Ingress 實現外部訪問,並通過圖形化操作簡化了 YAML 的操作,優點是可以擴展更多第三方 Ingress 控制器,例如 Traefik 等。Rainbond 網關則是通過 Rainbond Gateway 統一封裝實現外部訪問,簡化了用戶的操作,一鍵開啓外部訪問,同時也能配置 HTTP 的路由規則等,使用的體驗非常好。

總結

總體來說,KubeSphere 和 Rainbond 都很成熟,也都有大量開源使用用戶,只是定位不同,所以適用場景也會不同。

KubeSphere 在兼容 Kubernetes 生態方面做的非常好,包裝和整合了很多雲原生的工具,並擴展了對 Kubernetes 和開源工具的管理能力,對於想要管理 Kubernetes 集羣的系統管理員是個好的工具,熟悉 Kubernetes 的工程師也可以自行擴展 KubeSphere 的能力。但對開發人員來開發和管理應用來說,門檻比較高,需要學習和理解的概念非常多。

Rainbond 屏蔽了底層複雜的技術,基於應用級抽象,在 Rainbond 的產品閉環裏,體驗非常好。這適用普通的開發人員開發和管理應用,對於不熟悉 Kubernetes 用戶快速起步也是一個不錯的選擇,在企業軟件交付上 Rainbond 非常擅長。但在對 Kubernetes 的系統管理上功能有欠缺。

由於個人知識和經驗有限,如有理解不對的地方,還請見諒。

本文爲作者張齊原創投稿,版權歸原作者所有。

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/VIxJNlJHQu91T7ASXg7sAQ