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