背景
隨著5G、物聯(lián)網設備的爆炸性增長以及智能終端不斷增強的計算能力,帶來了前所未有的數(shù)據量,傳統(tǒng)的中心集中式計算捉襟見肘?!靶禄ā睉?zhàn)略的實施,工業(yè)互聯(lián)網、車聯(lián)網/自動駕駛、智慧交通、云游戲及VR/AR等標桿應用引領產業(yè)融合,企業(yè)上云常態(tài)化,催生出分布式云,混合云,邊緣云等概念。Gartner預計到2025年,超過50%的組織將在其選擇的地點使用分布式云選項,從而實現(xiàn)業(yè)務模型轉型。企業(yè)生成的75%的數(shù)據將在傳統(tǒng)數(shù)據中心或云之外的,更接近最終用戶的邊緣創(chuàng)建和處理。
云計算行業(yè)正在迎來了新一輪的增長,國內外廠商和開源社區(qū)率先行動,分別發(fā)布并開源了Open Cluster Management(OCM)項目和Clusternet項目,統(tǒng)一管理多云多集群下的Kubernetes應用,將云原生下沉實現(xiàn)云邊端一體化?;贠CM與Clusternet打造新一代開放的多集群管理系統(tǒng),管理從中心到邊緣,從機房到終端的“集群網絡”。
Clusternet
Clusternet(Cluster Internet)是騰訊開源的多集群和應用管理軟件,無論集群是運行在公有云、私有云、混合云還是邊緣云上,Clusternet都可以讓您像在本地運行一樣管理/訪問它們,用Kubernetes API集中部署和協(xié)調多集群的應用程序和服務。通過Addon插件方式,用戶可以一鍵安裝、運維及集成,輕松地管理數(shù)以百萬計的Kubernetes集群,就像訪問Internet一樣自由便捷。
Clusternet面向未來混合云、分布式云和邊緣計算場景設計,支持海量集群的接入和管理,靈活的集群注冊能力可以適應各種復雜網絡條件下的集群管理需求,通過兼容云原生的Kubernetes API簡化用戶的管理和運維成本,加快用戶業(yè)務的云原生轉型。
Clusternet為用戶提供:
一站式管理各類Kubernetes集群
Clusternet支持Pull模式和Push模式管理集群。即使集群運行在VPC內網中、邊緣或防火墻后時,Clusternet仍可建立網絡隧道連接管理集群。
支持跨集群的服務發(fā)現(xiàn)及服務互訪
在無專網通道的情況下,仍可提供跨集群的訪問路由。
完全兼容原生Kubernetes API
完全兼容Kubernetes的標準API,比如:Deployment,StatefulSet,DaemonSet,同時也包括用戶自定義的CRD等,用戶從單集群應用升級到多集群只需做簡單的配置,無需學習復雜的多集群API。
支持部署Helm Chart、Kubernetes原生的應用以及自定義的CRD
支持Helm chart類型應用,包括Chart的分發(fā)、差異化配置、狀態(tài)的匯聚等,和原生Kubernetes API的能力一致。
豐富、靈活的配置管理
提供了多種類型的配置策略,用戶可靈活的搭配這些配置來實現(xiàn)復雜的業(yè)務場景,比如多集群灰度發(fā)布。
Addon能力,架構簡單
采用了Aggregated ApiServer的方式,且不依賴額外的存儲,架構簡單,便于部署,大大降低了運維復雜度。
便捷接入
Clusternet提供了完善的對接能力,支持kubectl plugin[1]以及client-go[2],方便業(yè)務一鍵接入,具備管理多集群的能力。
OCM(Open Cluster Management)
OCM(Open Cluster Management)是一個社區(qū)驅動的項目,專注于Kubernetes應用的多集群和多云場景。OCM旨在簡化部署在混合環(huán)境下的多Kubernetes集群的管理工作,為Kubernetes生態(tài)圈不同管理工具拓展多集群管理能力。OCM總結了多集群管理所需的基礎概念,采用了hub-agent的架構,定義了多項多集群管理的原語和基礎組件來達到多集群管理的要求:
·通過ManagedCluster API定義被管理的集群,同時OCM會安裝名為Klusterlet的agent在每個集群里來完成集群注冊,生命周期管理等功能。
·通過Placement API定義如何將配置或工作負載調度到哪些集群中。調度結果會存放在PlacementDecision API中。其他的配置管理和應用部署工具可以通過PlacementDecision決定哪些集群需要進行配置和應用部署。
·通過ManifestWork API定義分發(fā)到某個集群的配置和資源信息。
·通過ManagedClusterSet API對集群進行分組,并提供用戶訪問集群的界限。
·通過ManagedClusterAddon API定義管理探針如何部署到多個集群中以及其如何與hub端的控制面進行安全可靠的通信。
·通過利用OCM的API原語,簡化了開源多集群管理項目的部署和運維,拓展許多Kubernetes的單集群管理工具的多集群管理能力。例如:
·簡化submariner等多集群網絡解決方案的管理。利用OCM的插件管理功能將submariner的部署和配置集中到統(tǒng)一的管理平臺上。
·為應用部署工具(KubeVela,ArgoCD等)提供豐富的多集群負責調度策略和可靠的資源分發(fā)引擎。
·拓展現(xiàn)有的Kubernetes單集群安全策略治理工具(Open Policy Agent,F(xiàn)alco等)使其具有多集群安全策略治理的能力。
OCM還通過內置的兩個管理插件分別用來進行應用部署和安全策略管理。其中應用部署插件采用了訂閱者模式,可以通過定義訂閱通道(Channel)從不同的源獲取應用部署的資源信息。
Clusternet與OCM結合迸發(fā)更強大能力
通過上文介紹可以看出,Clusternet有著強大的集群接入和管理能力,支持各種復雜場景下的海量集群注冊和管理,滿足對未來混合云、分布式云和邊緣計算的平臺管理需求。同時,OCM有著成熟的多集群應用管理能力,通過多項多集群管理的原語和基礎組件,實現(xiàn)各種Kubernetes項目和應用的多集群發(fā)布和管理。二者結合實現(xiàn)優(yōu)勢互補,強強聯(lián)合,提供更為強大的多集群和應用治理能力。
如何將OCM與Clusternet的能力相結合,來自Redhat的社區(qū)開發(fā)者(github:skeeey[3])實現(xiàn)了clusternet-addon[4],基于OCM的Addon-Framework[5],展示了OCM可以借助于Clusternet提供的強大集群管理能力,實現(xiàn)通過RBAC對子集群進行訪問、通過Push模式分發(fā)應用到多個子集群中等。OCM社區(qū)將與Clusternet社區(qū)緊密合作,將與Clusternet項目的集成作為一個子項目持續(xù)推進。
感興趣的同學可以查看clusternet-addon[6]了解更多信息,或持續(xù)關注OCM和Clusternet項目社區(qū)獲取最新的動態(tài)。
參與社區(qū)
OCM與Clusternet項目是Red Hat紅帽軟件,Tencent騰訊云與合作伙伴開源的重要項目,二者的結合展現(xiàn)了下一代開放的多集群管理平臺的強大能力和無與倫比的擴展性,為未來各種新技術、新業(yè)態(tài)和新服務提供了堅實的平臺基礎和無限的可能性。
Clusternet項目已發(fā)布v0.3.0版本,支持多集群和應用管理的多種特性,隨著Clusternet的不斷迭代,未來將為用戶提供更加完備和強大的能力。
OCM項目和kubernetes生態(tài)系統(tǒng)緊密結合,實現(xiàn)了kubernetes sig-multicluster的多個設計方案,包括KEP-2149 Cluster ID[7]
和KEP-1645 Multi-Cluster Services API中關于clusterset的概念[8]。也在和其他開發(fā)者在社區(qū)共同推動Work API[9])的開發(fā)。
OCM與Clusternet項目仍在快速的開發(fā)迭代,歡迎行業(yè)公司和社區(qū)開發(fā)者們共同參與,交流學習,共建未來更加開放,充滿無限可能的云世界。
鏈接
-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】