新聞中心
聊聊多圖詳解邊緣計算系統(tǒng)的組成及概念,你還記得嗎?
作者: 崔廣章 2021-09-05 20:18:33
前端
邊緣計算 Kubernetes是Google開源的大規(guī)模容器編排解決方案。整套解決方案由核心組件、第三方組件和容器運行時組成。

本文從組成部分和概念解析兩方面來說明邊緣計算系統(tǒng)。
- 組成部分:邊緣計算系統(tǒng)由云、邊、端三部分組成,每部分的解決方案不止一種。本文的云組成部分選擇Kubernetes,邊組成部分選擇KubeEdge,端組成部分選擇EdgeX Foundry。
- 概念解析:對組成邊緣計算系統(tǒng)的云、邊、端三部分涉及的相關(guān)概念進行說明。
01 邊緣計算系統(tǒng)的組成
1. 云——Kubernetes
Kubernetes是Google開源的大規(guī)模容器編排解決方案。整套解決方案由核心組件、第三方組件和容器運行時組成,具體如下所示。
1)核心組件
- Kube-apiserver:Kubernetes內(nèi)部組件相互通信的消息總線,對外暴露集群API資源的唯一出口
- Kube-controller:保證集群內(nèi)部資源的現(xiàn)實狀態(tài)與期望狀態(tài)保持一致
- Kube-scheduler:將需要調(diào)度的負載與可用資源最佳匹配
- Kube-proxy:為節(jié)點內(nèi)的負載訪問和節(jié)點間的負載訪問做代理
- Kubelet:根據(jù)Kube-scheduler的調(diào)度結(jié)果,操作相應(yīng)負載
2)第三方組件
- Etcd:存儲集群的元數(shù)據(jù)和狀態(tài)數(shù)據(jù)
- Flannel
集群的跨主機負載網(wǎng)絡(luò)通信的解決方案
需要對原來的數(shù)據(jù)包進行額外的封裝、解封裝,性能損耗較大
- Calico
集群的跨主機負載網(wǎng)絡(luò)通信的解決方案
純?nèi)龑泳W(wǎng)絡(luò)解決方案,不需要額外的封裝、解封裝,性能損耗較小
- CoreDNS:負責(zé)集群中負載的域名解析
3)容器運行時
- Docker:目前默認的容器運行時
- Containerd:比Docker輕量,穩(wěn)定性與Docker相當(dāng)?shù)娜萜鬟\行時
- Cri-o
輕量級容器運行時
目前穩(wěn)定性沒有保證
- Frakti
基于Hypervisor的容器運行時
目前穩(wěn)定性沒有保證
2. 邊——KubeEdge
KubeEdge是華為開源的一款基于Kubernetes的邊緣計算平臺,用于將容器化應(yīng)用的編排功能從云擴展到邊緣的節(jié)點和設(shè)備,并為云和邊緣之間的網(wǎng)絡(luò)、應(yīng)用部署和元數(shù)據(jù)同步提供基礎(chǔ)架構(gòu)支持。KubeEdge使用Apache 2.0許可,并且可以免費用于個人或商業(yè)用途。
KubeEdge由云部分、邊緣部分和容器運行時組成,具體如下所示。
- 云部分 | CloudCore
- 負責(zé)將云部分的事件和指令下發(fā)到邊緣端,同時接收邊緣端上報的狀態(tài)信息和事件信息
- 邊緣部分 | EdgeCore
- 接收云部分下發(fā)的事件和指令,并執(zhí)行相關(guān)指令,同時將邊緣的狀態(tài)信息和事件信息上報到云部分
- 容器運行時 | Docker
- 目前,KubeEdge默認支持Docker
- 官方表示未來會支持Containerd、Cri-o等容器運行時
3. 端——EdgeX Foundry
EdgeX Foundry是一個由Linux基金會運營的開源邊緣計算物聯(lián)網(wǎng)軟件框架項目。該項目的核心是基于與硬件和操作系統(tǒng)完全無關(guān)的參考軟件平臺建立的互操作框架,構(gòu)建即插即用的組件生態(tài)系統(tǒng),加速物聯(lián)網(wǎng)方案的部署。EdgeX Foundry使有意參與的各方在開放與互操作的物聯(lián)網(wǎng)方案中自由協(xié)作,無論其是使用公開標(biāo)準(zhǔn)還是私有方案。
EdgeX Foundry微服務(wù)集合構(gòu)成了4個微服務(wù)層及兩個增強的基礎(chǔ)系統(tǒng)服務(wù)。4個微服務(wù)層包含從物理域數(shù)據(jù)采集到信息域數(shù)據(jù)處理等一系列服務(wù),兩個增強的基礎(chǔ)系統(tǒng)服務(wù)為4個微服務(wù)層提供服務(wù)支撐。
4個微服務(wù)層從物理層到應(yīng)用層依次為設(shè)備服務(wù)(Device Service)層、核心服務(wù)(Core Service)層、支持服務(wù)(Supporting Service)層、導(dǎo)出服務(wù)(Export Service)層,兩個增強的基礎(chǔ)系統(tǒng)服務(wù)包括安全和系統(tǒng)管理服務(wù),具體說明如下所示。
1)設(shè)備服務(wù)層
- Device-modbus-go:Go實現(xiàn)對接使用Modbus協(xié)議設(shè)備的服務(wù)
- Device-camera-go:Go實現(xiàn)對接攝像頭設(shè)備的服務(wù)
- Device-snmp-go:Go實現(xiàn)對接SNMP服務(wù)
- Device-mqtt-go:Go實現(xiàn)對接使用MQTT協(xié)議設(shè)備的服務(wù)
- Device-sdk-go
Go實現(xiàn)對接其他設(shè)備的SDK
SDK給設(shè)備接入提供了較大的靈活性
2)核心服務(wù)層
- Core-command:負責(zé)向南向設(shè)備發(fā)送命令
- Core-metadata:負責(zé)設(shè)備自身能力描述,提供配置新設(shè)備,并將它們與其擁有的設(shè)備服務(wù)配對的功能
- Core-data:負責(zé)采集南向設(shè)備層數(shù)據(jù),并向北向服務(wù)提供數(shù)據(jù)服務(wù)
- Registry & Config:負責(zé)服務(wù)注冊與發(fā)現(xiàn),為其他EdgeX Foundry微服務(wù)提供關(guān)于EdgeX Foundry的相關(guān)服務(wù)的信息,包括微服務(wù)配置屬性
3)支持服務(wù)層
- Support-logging:負責(zé)日志記錄
- Support-notification:負責(zé)事件通知
- Support-scheduler:負責(zé)數(shù)據(jù)調(diào)度
4)導(dǎo)出服務(wù)層
- Export-client:導(dǎo)出數(shù)據(jù)的客戶端
- Export-distro:導(dǎo)出數(shù)據(jù)的應(yīng)用
5)兩個增強的基礎(chǔ)系統(tǒng)服務(wù)
- System-mgmt-agent:提供啟動、停止所有微服務(wù)的API
- Sys-mgmt-executor:負責(zé)啟動、停止所有微服務(wù)的最終執(zhí)行
02 概念解析
組成邊緣計算系統(tǒng)的云、邊、端三部分的相關(guān)概念如下。
- 云:涉及的概念包括Container、Pod、ReplicaSet、Service、Deployment、DaemonSet、Job、Volume、ConfigMap、NameSpace、Ingress等。
- 邊:目前邊緣系統(tǒng)的實現(xiàn)方式是通過對云原有的組件進行裁剪并下沉到邊緣,所以邊涉及的概念是云的子集,而且與云保持一致。
- 端:部署在邊上的一套微服務(wù),目前沒有引入新的概念。
目前,邊和端都在沿用云的概念,所以本節(jié)主要是對云的概念進行解析。下面以圖解的形式對云涉及的相關(guān)概念進行說明。由圖1-1可知,Container(容器)是在操作系統(tǒng)之上的一種新的環(huán)境隔離技術(shù)。使用容器隔離出的獨立空間包含應(yīng)用所需的運行時環(huán)境和依賴庫。在同一臺主機上,容器共享操作系統(tǒng)內(nèi)核。
▲圖1-1 Container解析
由圖1-2可知,Pod是由一組容器組成的,在同一個Pod內(nèi)的容器共享存儲和網(wǎng)絡(luò)命名空間。在邊緣計算系統(tǒng)中,Pod是最小的可調(diào)度單元,也是應(yīng)用負載的最終載體。
▲圖1-2 Pod解析
由圖1-3可知,ReplicaSet用來管理Pod,負責(zé)讓Pod的期望數(shù)量與Pod真實數(shù)量保持一致。在邊緣計算系統(tǒng)中,ReplicaSet負責(zé)維護應(yīng)用的多實例和故障自愈。
▲圖1-3 ReplicaSet解析
由圖1-4可知,Service作為一組Pod的訪問代理,在多個Pod之間做負載均衡。Pod的生命周期相對比較短暫,變更頻繁。Service除了為與之相關(guān)的Pod做訪問代理和負載均衡外,還會維護與Pod的對應(yīng)關(guān)系。
▲圖1-4 Service解析
由圖1-5可知,Deployment是ReplicaSet的抽象,在ReplicaSet的基礎(chǔ)上增加了一些高級功能。其功能和應(yīng)用場景與ReplicaSet相同。
▲圖1-5 Deployment解析
由圖1-6可知,DaemonSet負責(zé)讓指定的Pod在每個節(jié)點上都啟動一個實例。該功能一般用在部署網(wǎng)絡(luò)插件、監(jiān)控插件和日志插件的場景。
▲圖1-6 DaemonSet解析
由圖1-7可知,Job用來管理批量運行的Pod,該管理類型的Pod會被定期批量觸發(fā)。與Deployment管理的Pod不同,Job管理的Pod執(zhí)行完相應(yīng)的任務(wù)后就退出,不會一直駐留。在邊緣計算系統(tǒng)中,一般用Job所管理的Pod來訓(xùn)練AI模型。
▲圖1-7 Job解析
由圖1-8可知,Volume是用來給Pod提供存儲的,通過掛載的方式與對應(yīng)Pod關(guān)聯(lián)。Volume分臨時存儲和持久存儲,臨時存儲類型的Volume會隨著Pod的刪除而被刪除,持久存儲類型的Volume不會隨著Pod的刪除而被刪除。
▲圖1-8 Volume解析
由圖1-9可知,ConfigMap作為Pod存儲配置文件的載體,通過環(huán)境變量(env)和文件卷的方式與Pod進行關(guān)聯(lián)。在邊緣計算系統(tǒng)中,以ConfigMap方式來管理配置信息會更方便。ConfigMap還可以對配置中的敏感信息進行加密,使配置信息更安全。
▲圖1-9 ConfigMap解析
由圖1-10可知,NameSpace是對Pod、Service、ConfigMap、Deployment、DaemonSet等資源進行隔離的一種機制,一般用在同一公司的不同團隊隔離資源的場景。邊緣計算系統(tǒng)使用NameSpace來對一個團隊可以使用的資源(CPU、內(nèi)存)和創(chuàng)建的負載所需要的資源進行限制。
▲圖1-10 NameSpace解析
由圖1-11可知,Ingress可作為集群內(nèi)與集群外相互通信的橋梁—將集群內(nèi)的服務(wù)暴露到集群外,同時可以對進入集群內(nèi)的流量進行合理的管控。在邊緣計算系統(tǒng)中,Ingress是一種資源對象,需要配合Ingress Controller和反向代理工作。
▲圖1-11 Ingress解析
關(guān)于作者:崔廣章,之江實驗室高級研究專員,資深云計算和邊緣計算技術(shù)工程師。從2014年接觸云計算以來,參與過多個云計算生產(chǎn)項目,其中代表性的項目有基于OpenStack進行定制開發(fā)的運營商私有云、政務(wù)云,基于開源容器云方案定制開發(fā)的面向運營商的數(shù)據(jù)中心操作系統(tǒng)(DCOS),2018年開始從事邊緣計算相關(guān)研究與開發(fā)。
本文摘編自《深入理解邊緣計算:云、邊、端工作原理與源碼分析》,經(jīng)出版方授權(quán)發(fā)布。
文章名稱:聊聊多圖詳解邊緣計算系統(tǒng)的組成及概念,你還記得嗎?
網(wǎng)站URL:http://fisionsoft.com.cn/article/cdecceh.html


咨詢
建站咨詢
