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

騰訊雲原生發表於2021-08-13

背景

隨著 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 專案地址: https://github.com/open-cluster-management-io

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

- Clusternet 專案地址: https://github.com/clusternet/clusternet

參考資料

[1]

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

[2]

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

[3]

skeeey: https://github.com/skeeey

[4]

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

[5]

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

[6]

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

[7]

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

[8]

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

[9]

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

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

相關文章