OpenYurt:延伸原生 Kubernetes 到边缘场景下的落地实践
作者?|?何淋波(新勝)
來源|阿里巴巴云原生公眾號(hào)
隨著云原生技術(shù)的逐步成熟,阿里云容器服務(wù)團(tuán)隊(duì)在具體落地實(shí)踐過程中不斷探索云原生技術(shù)的應(yīng)用邊界。同時(shí)隨著物聯(lián)網(wǎng)和 5G 的迅猛發(fā)展,傳統(tǒng)的邊緣計(jì)算架構(gòu)已經(jīng)不能滿足業(yè)務(wù)發(fā)展的需要。
如何基于云原生技術(shù)構(gòu)建新一代的邊緣計(jì)算平臺(tái)成為行業(yè)的新焦點(diǎn)。如何解決云邊協(xié)同,邊緣自治等業(yè)界難題來幫助開發(fā)者輕松完成在海量邊,端資源上大規(guī)模應(yīng)用的交付、運(yùn)維、管控?我們構(gòu)建并開源了 OpenYurt:業(yè)內(nèi)首個(gè)基于原生 Kubernetes 構(gòu)建的、對(duì)于 Kubernetes 非侵入式的邊緣計(jì)算項(xiàng)目,無縫的融合了云原生和邊緣計(jì)算,目前已經(jīng)在萬臺(tái)邊緣節(jié)點(diǎn)規(guī)模場(chǎng)景下落地實(shí)踐。本文將介紹如何融合云原生技術(shù)和邊緣計(jì)算,解決大規(guī)模應(yīng)用的交付、運(yùn)維、管控。
邊緣計(jì)算
首先,我們從直觀感受上看看什么是邊緣計(jì)算。隨著 5G、IoT、音視頻、直播、CDN 等行業(yè)和業(yè)務(wù)的發(fā)展,我們看到一個(gè)行業(yè)趨勢(shì),就是越來越多的算力和業(yè)務(wù)開始下沉到距離數(shù)據(jù)源或者終端用戶更近的地方,從而來獲得更好的響應(yīng)時(shí)間和更低的計(jì)算成本,這明顯區(qū)別傳統(tǒng)的中心式的云計(jì)算模式,并越來越被廣泛應(yīng)用于汽車、農(nóng)業(yè)、能源、交通等各行各業(yè)。邊緣計(jì)算,總結(jié)為一句話“讓計(jì)算離數(shù)據(jù)和設(shè)備更近”。
再從 IT 架構(gòu)上看邊緣計(jì)算,可以看到它具有明顯的按照業(yè)務(wù)時(shí)延和計(jì)算形態(tài)來確定的分層結(jié)構(gòu),這里分別引用 Gartner 和 IDC 對(duì)邊緣計(jì)算架構(gòu)的解釋:Gartner 將邊緣計(jì)算分為“Near Edge”、“Far Edge”、“Cloud”三部分,分別對(duì)應(yīng)常見的設(shè)備終端,云下 IDC/CDN 節(jié)點(diǎn),以及公共云/私有云;而 IDC 則將邊緣計(jì)算定義為更直觀的“Heavy Edge”、“Light Edge”來分別表示數(shù)據(jù)中心維度、低功耗計(jì)算的端側(cè)。從圖中我們可以看到分層結(jié)構(gòu)中,層層相依,互相協(xié)作。這種定義也是現(xiàn)在業(yè)界對(duì)邊緣計(jì)算和云計(jì)算關(guān)系所達(dá)成的一個(gè)共識(shí),接下來再看看邊緣計(jì)算的趨勢(shì)。
去分析一個(gè) IT 行業(yè)的趨勢(shì),通常包括業(yè)務(wù)、架構(gòu)和規(guī)模三個(gè)維度;邊緣計(jì)算的三大趨勢(shì)是:
-
第一,AI、IoT 與邊緣計(jì)算的融合,會(huì)有種類越來越多、規(guī)模越來越大、復(fù)雜度越來越高的業(yè)務(wù)運(yùn)行在邊緣計(jì)算場(chǎng)景中,從圖上我們也能看到一些非常震撼人心的數(shù)字。
-
第二,邊緣計(jì)算作為云計(jì)算的延伸,將被廣泛應(yīng)用于混合云場(chǎng)景,這里面需要未來的基礎(chǔ)設(shè)施能夠去中心化、邊緣設(shè)施自治、邊緣云端托管能力,同樣圖上也有部分引用數(shù)字。
-
第三個(gè)場(chǎng)景趨勢(shì)是基礎(chǔ)設(shè)施的發(fā)展將會(huì)引爆邊緣計(jì)算的增長,隨著 5G、IoT、音視頻行業(yè)的發(fā)展,邊緣計(jì)算的爆發(fā)是理所當(dāng)然,今年疫情期間在線直播、在線教育行業(yè)的爆發(fā)式增長也是一個(gè)例子。
隨著架構(gòu)的共識(shí)形成,落地過程中我們發(fā)現(xiàn),邊緣計(jì)算的規(guī)模、復(fù)雜度正逐日攀升,而短缺的運(yùn)維手段和運(yùn)維能力也終于開始不堪重負(fù),那么如何去解這個(gè)問題呢?“云邊端一體“的運(yùn)維協(xié)同是目前比較能形成共識(shí)的一種方案。
云邊一體的邊緣云原生
作為云原生領(lǐng)域的從業(yè)人員,我們?cè)囍鴱脑圃慕嵌葋硭伎己徒鉀Q這些問題:
首先我們一起回顧下云原生的定義和技術(shù)體系,眼下,云原生已經(jīng)作為一系列的工具、架構(gòu)、方法論而深入人心,并廣泛使用;那么云原生到底是如何定義的呢?早期,云原生含義包括:容器、微服務(wù)、DevOps、CI/CD;18 年以后 CNCF 又加入了服務(wù)網(wǎng)格和聲明式 API。而回過頭,我們?cè)俅志€條的看看云原生的發(fā)展歷史,早期因?yàn)?Docker 的出現(xiàn),大量的業(yè)務(wù)開始容器化、Docker 化,容器化通過統(tǒng)一交付件、隔離性從而帶來了 DevOps 的快速發(fā)展;Kubernetes 的出現(xiàn)讓資源編排調(diào)度與底層基礎(chǔ)設(shè)施解耦,應(yīng)用和資源的管控也開始得心應(yīng)手;隨后,以 Istio 為代表的服務(wù)網(wǎng)格技術(shù)解耦了服務(wù)實(shí)現(xiàn)與服務(wù)治理能力。越來越多的企業(yè)、行業(yè)開始擁抱云原生。
接下來聊下阿里云的云原生產(chǎn)品家族。阿里云作為云原生的踐行者,不論是集團(tuán)內(nèi)部全面上云,還是為廣大的客戶提供豐富的云原生業(yè)務(wù),都是擁抱云原生最好的佐證;我們堅(jiān)信云原生是未來;云原生技術(shù)已經(jīng)無處不在, 作為云原生服務(wù)的提供者,我們認(rèn)為云原生技術(shù)會(huì)繼續(xù)高速發(fā)展,并被應(yīng)用于“新的應(yīng)用負(fù)載” ,“新的計(jì)算形態(tài)”和“新的物理邊界”;從阿里云云原生產(chǎn)品家族大圖中我們可以看到:容器正被用于越來越多類型應(yīng)用和云服務(wù)中;并且通過越來越多的計(jì)算形態(tài)承載,如 Serverless,函數(shù)計(jì)算等等;而豐富的形態(tài)也開始從傳統(tǒng)的中心云走向邊緣計(jì)算,走向終端。
在中心云的標(biāo)準(zhǔn)托管架構(gòu)下,我們抽象出了云邊端協(xié)同的云原生架構(gòu):在中心(云),我們保留了原汁原味的云原生管控和產(chǎn)品化能力,通過云邊管控通道將之下沉到邊緣,使海量邊緣節(jié)點(diǎn)和邊緣業(yè)務(wù)搖身一變成為云原生體系的工作負(fù)載,通過服務(wù)流量和服務(wù)治理更好的和端進(jìn)行交互;從而完成業(yè)務(wù)、運(yùn)維、生態(tài)的一體化。
那么,通過云邊一體架構(gòu)我們可以有哪些收益呢;首先,云上云下通過云原生體系實(shí)現(xiàn)云邊一體化融合,從而為用戶在任何基礎(chǔ)設(shè)施上提供和云上一致的功能和體驗(yàn),實(shí)現(xiàn)云邊端一體化的應(yīng)用分發(fā),容器化的隔離特性、流量控制,網(wǎng)絡(luò)策略等等能力讓工作負(fù)載的運(yùn)行更加安全;“云邊端一體”有云原生的加持,將會(huì)更好的加速多云,云邊融合進(jìn)程。
聊完云邊一體的云原生基礎(chǔ)設(shè)施之后,接下來聊下云原生和邊緣計(jì)算融合的難點(diǎn),在實(shí)際落地過程中,我們主要識(shí)別了下面幾個(gè)問題:
-
邊緣計(jì)算規(guī)模和業(yè)務(wù)復(fù)雜,采取原生 Kubernetes 的 workload 管理模型遠(yuǎn)不能滿足現(xiàn)實(shí)需求。
-
云邊網(wǎng)絡(luò)通過公網(wǎng)相連,網(wǎng)絡(luò)連接有很大不可控因素,可能帶來邊緣業(yè)務(wù)運(yùn)行的不穩(wěn)定因素。
-
由于邊緣節(jié)點(diǎn)一般位于用戶網(wǎng)絡(luò)的防火墻內(nèi)部,從而造成云邊網(wǎng)絡(luò)只能單向連通的客觀條件,因此給原生的 Kubernetes 運(yùn)維監(jiān)控帶來很大挑戰(zhàn)。
-
最后是邊緣資源種類多樣,系統(tǒng)可能是 Linux/Windows,架構(gòu)也可能是 amd64/arm/arm64 等等,從而給邊緣標(biāo)準(zhǔn)化支持帶來巨大挑戰(zhàn)。
OpenYurt 邊緣計(jì)算云原生平臺(tái)
接下來我們看下 OpenYurt,業(yè)界首個(gè)非侵入式 Kubernets 的邊緣計(jì)算云原生開源平臺(tái)。
OpenYurt 是一個(gè)典型的“中心-邊緣”簡潔架構(gòu)。如架構(gòu)圖所示:邊緣和云之間通過公網(wǎng)連接,其中藍(lán)色框是原生 Kubernetes 的組件,橙色框是 OpenYurt 的組件。基于 Kubernetes 強(qiáng)大的插件化,Operator 能力,OpenYurt 保證對(duì) upstream kubernetes 的零修改,因此保證了 OpenYurt 可以跟隨社區(qū)同步演進(jìn),并且保證和云原生社區(qū)主流技術(shù)的兼容。OpenYurt 項(xiàng)目在 2020 年 9 月份已經(jīng)捐給 CNCF,也保證了項(xiàng)目的中立性。同時(shí) OpenYurt 目前在阿里內(nèi)部已經(jīng)大規(guī)模使用,管理了數(shù)百萬核的規(guī)模,場(chǎng)景上覆蓋了 CDN,物聯(lián)網(wǎng),音視頻,邊緣AI等多種場(chǎng)景。也意味著 OpenYurt 的品質(zhì)和穩(wěn)定性已經(jīng)有足夠驗(yàn)證。
OpenYurt 目前已經(jīng)發(fā)布三個(gè)版本,具備如下能力:邊緣單元化、邊緣自治、云邊協(xié)同、無縫轉(zhuǎn)換能力、異構(gòu)資源(amd64/arm/arm64)支持能力、云上云下業(yè)務(wù)彈性和互通能力等。
單元化管理能力用于解決前面提到的融合難點(diǎn) 1,主要是對(duì)節(jié)點(diǎn)提供分組、批量管理能力,并在分組內(nèi)對(duì)應(yīng)用編排部署、業(yè)務(wù)流量做更精細(xì)化管控,比如為了業(yè)務(wù)流量的安全、效率考慮可以將業(yè)務(wù)流量現(xiàn)在在某一個(gè)單元內(nèi);或者為了批量管理某一個(gè)區(qū)域內(nèi)的節(jié)點(diǎn),打標(biāo)簽,配置調(diào)度策略等等;相關(guān)能力由 yurt-app-manager 組件提供。
邊緣自治能力用于解決前面提到的融合難點(diǎn) 2,主要是云邊網(wǎng)絡(luò)斷開或者連接不穩(wěn)定時(shí),確保邊緣業(yè)務(wù)可以持續(xù)運(yùn)行;相關(guān)能力由 yurt-controller-manager 和 YurtHub 組件提供。另外下個(gè)版本中還會(huì)繼續(xù)增強(qiáng)邊緣自治能力。
云邊協(xié)同能力用于解決前面提到的融合難點(diǎn) 3,主要是由于邊緣節(jié)點(diǎn)位于用戶內(nèi)網(wǎng),無法從云端訪問時(shí),造成原生 Kubernetes 運(yùn)維能力(如 kubectl logs/exec/port-forward,Prometheus 等)無法支持。云邊協(xié)同能力通過云邊隧道解決云邊網(wǎng)絡(luò)只能單向通,從而支持原生 Kubernetes 運(yùn)維能力。相關(guān)能力由 tunnel-server/tunnel-agent 組件提供。
無縫轉(zhuǎn)換能力用于部分解決融合難點(diǎn) 4,主要用于標(biāo)準(zhǔn) Kubernetes 和 OpenYurt 集群之間的一鍵式轉(zhuǎn)換,目前在 Minikube,Kubeadm,ACK 等工具部署的集群上完整驗(yàn)證過。也歡迎有興趣的同學(xué)來支持和貢獻(xiàn)其他工具部署的集群。相關(guān)能力由 yurtctl 組件提供。
OpenYurt 案例介紹
接下來我們介紹一下 OpenYurt 的實(shí)踐案例。
第一個(gè),是盒馬鮮生基于邊緣云原生實(shí)現(xiàn)的“人貨場(chǎng)”數(shù)字化融合轉(zhuǎn)型,通過云原生體系將多種類型的邊緣異構(gòu)算力統(tǒng)一接入、統(tǒng)一調(diào)度,包括:ENS(阿里公共云邊緣節(jié)點(diǎn)服務(wù)、線下自建邊緣網(wǎng)關(guān)節(jié)點(diǎn),GPU 節(jié)點(diǎn)等)。獲取了強(qiáng)大的資源彈性和業(yè)務(wù)混編帶來的靈活性。
第二個(gè),是交通領(lǐng)域的視頻上云場(chǎng)景,通過云邊端一體化協(xié)同,融合了中心云大交通智慧能力,邊緣 CDN/ENS 等算力資源,給業(yè)務(wù)提供就近接入的資源能力;視頻采集端設(shè)備的統(tǒng)一管理。邊緣云原生的調(diào)度、編排、服務(wù)管理等能力穿插其中,三層融合。
最后,OpenYurt 還是一個(gè)比較初期的 CNCF 官方邊緣計(jì)算云原生項(xiàng)目,需要大家的支持和幫助,也歡迎大家參與?OpenYurt 社區(qū)共建。
Q?& A
Q:YurtHub 代理實(shí)現(xiàn)機(jī)制,需要修改什么配置嗎?
A:主要是邊緣節(jié)點(diǎn)上組件的云端訪問地址需要調(diào)整為本地 YurtHub 監(jiān)聽地址(http://127.0.0.1:10261),其他配置不用修改。
Q:和 KubeEdge 的優(yōu)劣對(duì)比分析?
A:首先這個(gè)問題可能第三方來評(píng)價(jià)會(huì)客觀一點(diǎn),有興趣看下知乎這篇文章:《家里的樹莓派,如何加入阿里云搭建的 K8s 集群?》。不過站在程序員或者云原生開發(fā)者角度,也可以談一點(diǎn)個(gè)人的看法:OpenYurt 對(duì) Kubernetes 零修改,通過 Kubernetes 的插件和 Operator 機(jī)制進(jìn)行增強(qiáng),因此對(duì)原生 Kubernetes 使用者會(huì)比較友好。而 KubeEdge 對(duì) Kubernetes 有比較大的修改(kubelet/kube-proxy/list-watch 機(jī)制等重寫了),對(duì)原生 Kubernetes 使用者的友好性會(huì)弱一點(diǎn)。當(dāng)然還有不少其他差別,時(shí)間有限,有興趣的同學(xué)可以自行研究。
Q:想問問貴司在萬臺(tái)規(guī)模的機(jī)器采用了哪些版本系統(tǒng)呢?內(nèi)核有什么要求嗎?
A:目前主要是 AliOS,CentOS,以及 Ubuntu,內(nèi)核版本基本在 3.10 以上。
Q:請(qǐng)問案例 1 和 2 分別是什么樣的節(jié)點(diǎn)規(guī)模?
A:集群規(guī)模都在 100+ 以上。
Q:請(qǐng)問案例 1 中的 GPU 節(jié)點(diǎn)主要是什么功能?
A:案例 1 的 AI 訓(xùn)練是云端完成的,GPU 節(jié)點(diǎn)主要做推理相關(guān)的任務(wù)。
Q:如果中心和邊緣徹底網(wǎng)絡(luò)斷開了,邊緣側(cè)是否可以繼續(xù)持久運(yùn)作?
A:節(jié)點(diǎn)重啟或者業(yè)務(wù)重啟的狀態(tài)下,業(yè)務(wù)是可以持續(xù)運(yùn)行的。如果出現(xiàn)節(jié)點(diǎn)宕機(jī)的情況下,云端還無法準(zhǔn)確識(shí)別并在其他正常節(jié)點(diǎn)重建,這個(gè)會(huì)在下個(gè)版本解決。
Q:請(qǐng)問目前阿里內(nèi)部是否會(huì)有專門的技術(shù)、產(chǎn)品等團(tuán)隊(duì)來支撐?
A:目前阿里云容器服務(wù)產(chǎn)品 ACK@Edge 是基于 OpenYurt 開源項(xiàng)目來實(shí)現(xiàn)的,因此是有專門團(tuán)隊(duì)來統(tǒng)一支撐的。
Q:請(qǐng)問邊緣側(cè)的 CPU 是否有限制?端側(cè)呢?例如 arm。
A:邊緣側(cè) CPU 架構(gòu)目前支持 amd64/arm/arm64。端側(cè)主要是設(shè)備端,由運(yùn)行在 OpenYurt 邊緣節(jié)點(diǎn)上的業(yè)務(wù)負(fù)責(zé)。所以端側(cè)目前不在 OpenYurt 的覆蓋范圍內(nèi)。
Q:請(qǐng)問對(duì)未來 3 年內(nèi),邊緣這一塊的主流應(yīng)用場(chǎng)景在哪一塊,怎么看?
A:這是一個(gè)好問題,目前能確定的是像 CDN,邊緣 AI,音視頻,5G MEC,IOT 等已經(jīng)在大規(guī)模鋪開邊緣計(jì)算云原生方案。其他像后續(xù)的車聯(lián)網(wǎng),云游戲,其他傳統(tǒng)行業(yè)(如農(nóng)業(yè),能源等)都在逐步展開,總之邊緣這快 ToB 屬性比較強(qiáng)。
Q:現(xiàn)在 Kubernetes 場(chǎng)景已經(jīng)覆蓋的場(chǎng)景大概能占總邊緣場(chǎng)景的多少百分比呢?估計(jì)。
A:這個(gè)很難講,我個(gè)人覺得目前比例應(yīng)該很低,整個(gè)邊緣計(jì)算場(chǎng)景的數(shù)字化轉(zhuǎn)型應(yīng)該剛剛開始。相信這是一個(gè)會(huì)持續(xù)可以做 20 年的行業(yè)-!
分享人簡介
何淋波(花名:新勝),來自于阿里云容器服務(wù)團(tuán)隊(duì),OpenYurt 作者&初創(chuàng)成員之一。2015 年開始從事 Kubernetes 相關(guān)產(chǎn)品的設(shè)計(jì),研發(fā),開源等工作,先后負(fù)責(zé)和參與物聯(lián)網(wǎng)邊緣計(jì)算,邊緣容器服務(wù),OpenYurt 等相關(guān)項(xiàng)目。
內(nèi)容來源:Dockone
點(diǎn)擊訪問“Kubernetes 與云原生應(yīng)用更多開源實(shí)踐”大講堂,4 次開源技術(shù)直播, 60+ 節(jié) Kubernetes 經(jīng)典課程,3 本云原生電子書,將前沿的容器技術(shù)和開源實(shí)踐一網(wǎng)打盡!
總結(jié)
以上是生活随笔為你收集整理的OpenYurt:延伸原生 Kubernetes 到边缘场景下的落地实践的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spring Boot Admin 集成
- 下一篇: 开放下载!解锁 Serverless 从