基於 Clusternet 與 OCM 打造新一代開放的多集群管理平台

背景

隨著 5G、物聯網設備的爆炸性增長以及智慧終端不斷增強的計算能力,帶來了前所未有的數據量,傳統的中心集中式計算捉襟見肘。「新基建」戰略的實施,工業互聯網、車聯網/自動駕駛、智慧交通、雲遊戲及 VR/AR 等標杆應用引領產業融合,企業上雲常態化,催生出分散式雲,混合雲,邊緣雲等概念。Gartner 預計到2025年,超過 50% 的組織將在其選擇的地點使用分散式雲選項,從而實現業務模型轉型。企業生成的 75% 的數據將在傳統數據中心或雲之外的,更接近最終用戶的邊緣創建和處理。

雲計算行業正在迎來了新一輪的增長,中國外廠商和開源社區率先行動,分別發布並開源了 Open Cluster Management (OCM) 項目和 Clusternet 項目,統一管理多雲多集群下的 Kubernetes 應用,將雲原生下沉實現雲邊端一體化。基於 OCM 與 Clusternet 打造新一代開放的多集群管理系統,管理從中心到邊緣,從機房到終端的「集群網路」。

Clusternet

Clusternet ( Cluster Internet ) 是騰訊開源的多集群和應用管理軟體,無論集群是運行在公有雲、私有雲、混合雲還是邊緣雲上,Clusternet 都可以讓您像在本地運行一樣管理/訪問它們,用 K8s API 集中部署和協調多集群的應用程式和服務。通過 Addon 插件方式,用戶可以一鍵安裝、運維及集成,輕鬆地管理數以百萬計的 Kubernetes 集群,就像訪問 Internet 一樣自由便捷。

Clusternet 面向未來混合雲、分散式雲和邊緣計算場景設計,支援海量集群的接入和管理,靈活的集群註冊能力可以適應各種複雜網路條件下的集群管理需求,通過兼容雲原生的 Kubernetes API 簡化用戶的管理和運維成本,加快用戶業務的雲原生轉型。

Clusternet 為用戶提供:

一站式管理各類 Kubernetes 集群

Clusternet 支援 Pull 模式和 Push 模式管理集群。即使集群運行在 VPC 內網中、邊緣或防火牆後時,Clusternet 仍可建立網路隧道連接管理集群。

支援跨集群的服務發現及服務互訪

在無專網通道的情況下,仍可提供跨集群的訪問路由。

完全兼容原生 Kubernetes API

完全兼容 Kubernetes 的標準 API,比如:Deployment,StatefulSet,DaemonSet,同時也包括用戶自定義的 CRD 等,用戶從單集群應用升級到多集群只需做簡單的配置,無需學習複雜的多集群 API。

支援部署 Helm Chart、Kubernetes 原生的應用以及自定義的 CRD

支援 Helm chart 類型應用,包括 Chart 的分發、差異化配置、狀態的匯聚等,和原生 Kubernetes API 的能力一致。

豐富、靈活的配置管理

提供了多種類型的配置策略,用戶可靈活的搭配這些配置來實現複雜的業務場景,比如多集群灰度發布。

Addon 能力,架構簡單

採用了 Aggregated ApiServer 的方式,且不依賴額外的存儲,架構簡單,便於部署,大大降低了運維複雜度。

便捷接入

Clusternet 提供了完善的對接能力,支援 kubectl plugin[1] 以及 client-go[2],方便業務一鍵接入,具備管理多集群的能力。

OCM ( Open Cluster Management )

OCM (Open Cluster Management) 是一個社區驅動的項目,專註於 Kubernetes 應用的多集群和多雲場景。OCM 旨在簡化部署在混合環境下的多 Kubernetes 集群的管理工作,為 Kubernetes 生態圈不同管理工具拓展多集群管理能力。OCM 總結了多集群管理所需的基礎概念,採用了 hub-agent 的架構,定義了多項多集群管理的原語和基礎組件來達到多集群管理的要求:

  • 通過 ManagedCluster API 定義被管理的集群,同時 OCM 會安裝名為 Klusterlet 的 agent 在每個集群里來完成集群註冊,生命周期管理等功能。
  • 通過 Placement API 定義如何將配置或工作負載調度到哪些集群中。調度結果會存放在 PlacementDecision API 中。其他的配置管理和應用部署工具可以通過 PlacementDecision 決定哪些集群需要進行配置和應用部署。
  • 通過 ManifestWork API 定義分發到某個集群的配置和資源資訊。
  • 通過 ManagedClusterSet API 對集群進行分組,並提供用戶訪問集群的界限。
  • 通過 ManagedClusterAddon API 定義管理探針如何部署到多個集群中以及其如何與 hub 端的控制面進行安全可靠的通訊。

通過利用 OCM 的 API 原語,簡化了開源多集群管理項目的部署和運維,拓展許多 Kubernetes 的單集群管理工具的多集群管理能力。例如:

  • 簡化 submariner 等多集群網路解決方案的管理。利用 OCM 的插件管理功能將 submariner 的部署和配置集中到統一的管理平台上。
  • 為應用部署工具(KubeVela, ArgoCD 等)提供豐富的多集群負責調度策略和可靠的資源分發引擎。
  • 拓展現有的 Kubernetes 單集群安全策略治理工具(Open Policy Agent,Falco 等)使其具有多集群安全策略治理的能力。

OCM 還通過內置的兩個管理插件分別用來進行應用部署和安全策略管理。其中應用部署插件採用了訂閱者模式,可以通過定義訂閱通道(Channel)從不同的源獲取應用部署的資源資訊。

Clusternet 與 OCM 結合迸發更強大能力

通過上文介紹可以看出,Clusternet 有著強大的集群接入和管理能力,支援各種複雜場景下的海量集群註冊和管理,滿足對未來混合雲、分散式雲和邊緣計算的平台管理需求。 同時,OCM 有著成熟的多集群應用管理能力,通過多項多集群管理的原語和基礎組件,實現各種 Kubernetes 項目和應用的多集群發布和管理。二者結合實現優勢互補,強強聯合,提供更為強大的多集群和應用治理能力。

如何將 OCM 與 Clusternet 的能力相結合,來自 Redhat 的社區開發者 (github: skeeey[3]) 實現了 clusternet-addon[4],基於 OCM 的 Addon-Framework[5],展示了 OCM 可以藉助於 Clusternet 提供的強大集群管理能力,實現通過 RBAC 對子集群進行訪問、通過 Push 模式分發應用到多個子集群中等。OCM 社區將與 Clusternet 社區緊密合作,將與 Clusternet 項目的集成作為一個子項目持續推進。

感興趣的同學可以查看 clusternet-addon[6] 了解更多資訊,或持續關注 OCM 和 Clusternet 項目社區獲取最新的動態。

參與社區

OCM 與 Clusternet 項目是 Red Hat 紅帽軟體,Tencent 騰訊雲與合作夥伴開源的重要項目,二者的結合展現了下一代開放的多集群管理平台的強大能力和無與倫比的擴展性,為未來各種新技術、新業態和新服務提供了堅實的平台基礎和無限的可能性。

Clusternet 項目已發布 v0.3.0 版本,支援多集群和應用管理的多種特性,隨著 Clusternet 的不斷迭代,未來將為用戶提供更加完備和強大的能力。

OCM 項目和 kubernetes 生態系統緊密結合,實現了 kubernetes sig-multicluster 的多個設計方案,包括 KEP-2149 Cluster ID [7]

和 KEP-1645 Multi-Cluster Services API 中關於 clusterset 的概念[8] 。也在和其他開發者在社區共同推動 Work API [9]) 的開發。

OCM 與 Clusternet 項目仍在快速的開發迭代,歡迎行業公司和社區開發者們共同參與,交流學習,共建未來更加開放,充滿無限可能的雲世界。

鏈接

– OCM 項目地址: //github.com/open-cluster-management-io

– OCM官網地址: //open-cluster-management.io

– Clusternet 項目地址: //github.com/clusternet/clusternet

參考資料

[1]

kubectl plugin: //github.com/clusternet/kubectl-clusternet


[2]

client-go: //github.com/clusternet/clusternet/blob/main/examples/clientgo/READEME.md


[3]

skeeey: //github.com/skeeey


[4]

clusternet-addon: //github.com/skeeey/clusternet-addon


[5]

Addon-Framework: //github.com/open-cluster-management/addon-framework


[6]

clusternet-addon: //github.com/skeeey/clusternet-addon


[7]

KEP-2149 Cluster ID: //github.com/kubernetes/enhancements/tree/master/keps/sig-multicluster/2149-clusterid


[8]

clusterset的概念: //github.com/kubernetes/enhancements/tree/master/keps/sig-multicluster/1645-multi-cluster-services-api


[9]

Work API: //github.com/kubernetes-sigs/work-api


>【騰訊雲原生】雲說新品、雲研新術、雲遊新活、雲賞資訊,掃碼關注同名公眾號,及時獲取更多乾貨!!
![](//img2020.cnblogs.com/other/2041406/202108/2041406-20210813125505764-1422188413.png)