邊緣計(jì)算的一體化調(diào)度方案探索
Part 01 邊緣計(jì)算方案的概念界定
圖1
如上圖1所示,在《AI邊緣計(jì)算技術(shù)白皮書》[5]中提出的邊緣計(jì)算體系定義中,以云數(shù)據(jù)中心為核心,將邊緣計(jì)算劃分為三個(gè)層級(jí):
云邊緣:部署在云服務(wù)的CDN節(jié)點(diǎn)或者是各個(gè)地市的分布式數(shù)據(jù)中心當(dāng)中的云計(jì)算資源,是與現(xiàn)有云計(jì)算業(yè)務(wù)最為接近的一種邊緣計(jì)算形態(tài)??梢蕴峁┖瘮?shù)計(jì)算、AI智能服務(wù)、云渲染等邊緣云服務(wù)。
移動(dòng)邊緣:伴隨著5G通信的發(fā)展而出現(xiàn)的新興邊緣計(jì)算形態(tài),由于5G網(wǎng)絡(luò)具備的大帶寬、低時(shí)延特點(diǎn),可以通過(guò)5G基站+終端實(shí)現(xiàn)最佳的邊緣位置布放,但要實(shí)現(xiàn)云計(jì)算能力在5G基站的布放,需要針對(duì)基站做較大的改造,而且由于基站空間和配電的限制,無(wú)法布放大規(guī)模的計(jì)算能力。
物邊緣:終端自身具備計(jì)算能力,如智能手機(jī)、VR頭顯設(shè)備、智能攝像頭等,由于在終端本地處理計(jì)算請(qǐng)求,雖然響應(yīng)時(shí)延低和穩(wěn)定性能達(dá)到最優(yōu),但受限于功耗、物理資源等因素,一般僅完成簡(jiǎn)單計(jì)算任務(wù)。
綜合比較以上三個(gè)邊緣計(jì)算不同層級(jí)的特性,可以看出物邊緣就是利用了用戶終端的算力來(lái)處理簡(jiǎn)單的事務(wù),無(wú)法擴(kuò)展算力以滿足云渲染、大數(shù)據(jù)分析、AI智能服務(wù)等重算力場(chǎng)景的需求;而移動(dòng)邊緣也有空間和配電的先天限制,無(wú)法擴(kuò)展太多的算力來(lái)給用戶終端提供重算力的云計(jì)算服務(wù)。云邊緣既具備云計(jì)算中心的重算力儲(chǔ)備特點(diǎn),又貼近用戶終端進(jìn)行部署,應(yīng)該作為拓展用戶終端算力的首選解決方案。
Part 02 邊緣計(jì)算一體化調(diào)度的主要技術(shù)路線
在單一云中心節(jié)點(diǎn)的基礎(chǔ)上增加了多個(gè)邊緣云節(jié)點(diǎn)后(如下圖2),應(yīng)用服務(wù)的運(yùn)維管理復(fù)雜度會(huì)成倍增加,而且多個(gè)邊緣節(jié)點(diǎn)之間的負(fù)載均衡、請(qǐng)求轉(zhuǎn)發(fā)也更為復(fù)雜。為了解決以上問(wèn)題,Kubernetes、Openstack、微軟、華為等國(guó)內(nèi)外開(kāi)源社區(qū)和軟件廠商都紛紛推出了自己的邊緣云架構(gòu)解決方案。
圖2
綜合比較了各大廠商提出的云邊緣解決方案,可以歸納兩種不同的技術(shù)路線:
基于云原生的方案:基于目前已廣泛應(yīng)用的云原生容器化管理架構(gòu)如Kubernetes和K3s,在其基礎(chǔ)上拓展出跨公網(wǎng)的容器化應(yīng)用下發(fā)、統(tǒng)一監(jiān)控、負(fù)載均衡、接口轉(zhuǎn)發(fā)等適配邊緣云架構(gòu)的功能,代表性的方案為KubeEdge、Kubernetes Federation。
基于云計(jì)算IAAS的方案:依托Openstack等云計(jì)算管理平臺(tái),在云計(jì)算的基礎(chǔ)設(shè)施層面拓展邊緣云的資源管理、應(yīng)用打包和下發(fā)、負(fù)載均衡等功能,其功能范圍覆蓋了物理硬件管理-虛擬化-容器化的全流程,代表性的工具為StarlingX、EdgeGallery。
Part 03 Nacos的服務(wù)發(fā)現(xiàn)
3.1 KubeEdge
KubeEdge是基于kubernetes之上將容器化應(yīng)用的編排能力拓展到邊緣主機(jī)或邊緣設(shè)備,在云端和邊緣端提供網(wǎng)絡(luò)通信,應(yīng)用部署、元數(shù)據(jù)同步等功能。最早是由華為開(kāi)源并捐獻(xiàn)給Kubernetes社區(qū)的。
KubeEdge的優(yōu)勢(shì)包括:
便捷部署:開(kāi)發(fā)者可以開(kāi)發(fā)http或mqtt協(xié)議的應(yīng)用,運(yùn)行在云端和邊緣端。
kubernetes原生支持:可以通過(guò)kubernetes管理和監(jiān)控邊緣設(shè)備和邊緣節(jié)點(diǎn),原有的各種應(yīng)用編排可以無(wú)縫移植到KubeEdge中。
KubeEdge作為一個(gè)云-邊一體化調(diào)度的開(kāi)源解決方案,也將自己的核心模塊分為了云側(cè)和邊緣側(cè)兩類,分別部署在中心云節(jié)點(diǎn)和邊緣云節(jié)點(diǎn),其核心的模塊如下表1所示。
表1
從以上表格不難看出,KubeEdge新增的模塊是比較多的,而且這些模塊都必須通過(guò)命令行的方式到集群的宿主機(jī)上執(zhí)行很多的命令行才能安裝,其安裝和配置的復(fù)雜度相對(duì)于純粹的云原生應(yīng)用還是要高出許多。
3.2 Kubernetes Federation
Kubernetes Federation通常又被稱為K8s聯(lián)邦,Kubernetes在1.3版本之后,增加了“集群聯(lián)邦”Federation的功能。這個(gè)功能使企業(yè)能夠快速有效的、低成本的跨區(qū)跨域、甚至在不同的云平臺(tái)上運(yùn)行集群,還可以按照地理位置創(chuàng)建一個(gè)復(fù)制機(jī)制,將多個(gè)kubernetes集群進(jìn)行復(fù)制,即使遇到某個(gè)區(qū)域連接中斷或某個(gè)數(shù)據(jù)中心故障,也會(huì)保持最關(guān)鍵的服務(wù)運(yùn)行。
該方案的主要優(yōu)點(diǎn)包括:
基于原生kubernetes,各個(gè)擴(kuò)展的基礎(chǔ)模塊都可以復(fù)用集群原有的API,且能在社區(qū)獲得較好的技術(shù)支持。
真正的與基礎(chǔ)設(shè)施無(wú)關(guān),相關(guān)擴(kuò)展工具的安裝都是通過(guò)容器化的方式實(shí)現(xiàn)。
相較于之前提到的KubeEdge,Kubernetes Federation主要是擴(kuò)展了Type Configuration、Schedule、MutiClusterDNS三個(gè)組件,如下表2所示。
表2
Kubernetes Federation跨公網(wǎng)的多級(jí)群聯(lián)邦調(diào)度機(jī)制,其實(shí)就是一個(gè)依托于MutiClusterDNS多級(jí)群服務(wù)發(fā)現(xiàn)的一種分布式Kubernetes集群調(diào)度體系如下圖3所示:
圖3
3.3 StarlingX
StarlingX準(zhǔn)確的說(shuō)是一個(gè)軟件棧,他包含了打包、編譯、安裝配置、Openstack、WindRiver的MTCE平臺(tái),以及WindRiver針對(duì)電信云開(kāi)發(fā)的VIM等等。StarlinX的部署應(yīng)用需要從物理機(jī)虛擬化開(kāi)始逐一安裝相關(guān)工具,因此其邊緣節(jié)點(diǎn)資源調(diào)度的能力很強(qiáng)。但由于跟底層硬件和虛擬化等軟件耦合較為驗(yàn)證,業(yè)內(nèi)也主要是九州、風(fēng)河等云服務(wù)廠商在使用,普通的應(yīng)用系統(tǒng)開(kāi)發(fā)廠商要應(yīng)用該軟件棧的開(kāi)發(fā)和改造成本會(huì)很大。
3.4 EdgeGallery
同樣是提供了從虛擬化到容器化的一整套軟件棧以支持邊緣計(jì)算的一體化調(diào)度,且將APP開(kāi)發(fā)、測(cè)試、認(rèn)證以及上線的技術(shù)流程全打通,和StartlingX不同的是,該開(kāi)源項(xiàng)目的各個(gè)模塊可以拆分開(kāi)來(lái)按需進(jìn)行部署,由于該開(kāi)源項(xiàng)目出現(xiàn)時(shí)間較晚,且發(fā)行的版本很少,目前還未見(jiàn)到有廠商應(yīng)用的示例。
綜合對(duì)比目前主要的一些邊緣計(jì)算解決方案,對(duì)于普通的應(yīng)用服務(wù)廠商來(lái)說(shuō)基于云原生路線的KubeEdge和Kubernetes Federation相較于基于云計(jì)算的StartlingX和EdgeGallery具有更高的易用性和更低的實(shí)施成本,而對(duì)于已經(jīng)通過(guò)Kubernetes進(jìn)行了容器化部署的廠商,選擇Kubernetes Federation平臺(tái)切換成本最?。ㄈ缦卤?)。
圖片
Part 04 Kubernetes Federation的使用
4.1 環(huán)境初始化
1)下載kubefedctl命令行并下載
https://github.com/kubernetes-sigs/kubefed/releases/tag/v0.3.1
2)將kubefed-0.3.1.tgz、kubefedctl-0.3.1-linux-amd64.tgz兩個(gè)文件上傳到主機(jī)群的master節(jié)點(diǎn),并執(zhí)行以下命令:
tar -xvf kubefedctl-0.3.1-linux-amd64.tgzmv kubefedctl /usr/local/bin/ tar -xvf kubefed-0.3.1.tgzkubectl create namespace kube-federation-systemhelm install --name kubefed --namespace kubefederation-system kubefed
3)查看并確認(rèn)kubefed的po全部都啟動(dòng)成功了
圖片
4.2 將邊緣節(jié)點(diǎn)的集群添加到聯(lián)邦中
1)查看各個(gè)邊緣集群的config信息
cat $HOME/.kube/config
2)將各個(gè)集群的信息添加到中心集群的$HOME/.kube/config配置文件當(dāng)中
vi $HOME/.kube/config
3)通過(guò)kubefedctl命令行工具將自己群加入聯(lián)邦
kubefedctl join clusterName --cluster-context clusterName --host-cluster-context local --v=2kubectl -n kube-federation-system get kubefedclusters
如果想要退出聯(lián)邦,可以執(zhí)行命令:
kubefedctl unjoin zj --host-cluster-cnotallow=host
4.3 配置聯(lián)邦化的namespace和yaml配置文件
1)創(chuàng)建聯(lián)邦化的namespace
kubectl create namespace vrfederationvi vrfederation.yaml
添加以下內(nèi)容:
apiVersion: types.kubefed.io/v1beta1kind: FederatedNamespacemetadata: name: vrfederation namespace: vrfederationspec: placement: clusters: - name: local - name: cddev
由于采用應(yīng)用商店部署只能看到登錄賬號(hào)所屬項(xiàng)目的命名空間,所以還必須強(qiáng)制指定各個(gè)集群中的projectid:
overrides: - clusterName: cddev clusterOverrides: - path: "/metadata/labels" op: "add" value: field.cattle.io/projectId: p-64g94 - path: "/metadata/annotations" op: "add" value: field.cattle.io/projectId: local:p-64g94 - clusterName: local clusterOverrides: - path: "/metadata/labels" op: "add" value: field.cattle.io/projectId: p-6rt82 - path: "/metadata/annotations" op: "add" value: field.cattle.io/projectId: local:p-6rt82
2)創(chuàng)建聯(lián)邦化的deployment
vi test.yaml
添加以下內(nèi)容:
apiVersion: types.kubefed.io/v1beta1kind: FederatedDeploymentmetadata: name: test-deployment namespace: vrfederationspec: template: metadata: labels: app: nginx-test spec: replicas: 1 selector: matchLabels: app: nginx-test template: metadata: labels: app: nginx-test spec: containers: - image: nginx:1.17 name: nginx-test placement: clusters: - name: local - name: cddev overrides: - clusterName: cddev clusterOverrides: - path: "/spec/replicas" value: 3 - path: "/spec/template/spec/containers/0/image" value: "nginx:1.14.0-alpine" - path: "/metadata/annotations" op: "add" value: foo: bar - path: "/metadata/annotations/foo" op: "remove"
3)查看各個(gè)集群當(dāng)中容器部署的情況
ubectl --context cddev -n vrfederation get deployments
4.4 跨集群的service和ingress配置
1)創(chuàng)建聯(lián)邦化的service
apiVersion: types.kubefed.io/v1beta1kind: FederatedServicemetadata: labels: app: federated-svc name: federated-svc namespace: vrfederationspec: template: spec: type: LoadBalancer ports: - name: http port: 80 selector: app: nginx placement: clusters: - name: cddev - name: localkubectl --context cddev -n vrfederation get svc
2)創(chuàng)建聯(lián)邦化的ingress
apiVersion: types.kubefed.io/v1beta1kind: FederatedIngressmetadata: name: test-ingress namespace: vrfederationspec: template: spec: backend: serviceName: federated-svc servicePort: 80 placement: cluster: - name: local - name: cddev ---apiVersion: multiclusterdns.kubefed.io/v1alpha1kind: IngressDNSRecordmetadata: name: test-ingress namespace: vrfederationspec: hosts: - www.vr.wellmaxwang.top recordTTL: 600
完成以上配置,就可以在內(nèi)網(wǎng)環(huán)境配置出可供驗(yàn)證的Kubernetes聯(lián)邦集群,對(duì)于跨公網(wǎng)的聯(lián)邦則需要進(jìn)一步配置公網(wǎng)的DNS和Externel DNS服務(wù)來(lái)進(jìn)行跨公網(wǎng)的服務(wù)發(fā)現(xiàn)。
Part 05 總結(jié)
從筆者所在的分布式直播項(xiàng)目實(shí)踐情況來(lái)看,Kubernetes Federation作為Kubernetes社區(qū)主推的云原生邊緣計(jì)算一體化調(diào)度解決方案,對(duì)于普通的應(yīng)用服務(wù)廠商將單中心的應(yīng)用改造為云邊協(xié)同的應(yīng)用,是一個(gè)高效且開(kāi)發(fā)成本最低的一種方案。但對(duì)于云服務(wù)提供商來(lái)說(shuō),StarlingX也許能更好地分配不同節(jié)點(diǎn)的云計(jì)算算力,所以具體選擇哪一種邊緣計(jì)算的一體化調(diào)度方案還是需要根據(jù)自己項(xiàng)目的實(shí)際情況而定。
- 上一篇
數(shù)字化供應(yīng)鏈被供應(yīng)鏈管理協(xié)會(huì)列為2024年十大供應(yīng)鏈趨勢(shì)榜首
你將在前五名中找到一系列與技術(shù)相關(guān)的主題。在供應(yīng)鏈管理協(xié)會(huì)(ASCM)的年度供應(yīng)鏈趨勢(shì)排行榜上,數(shù)字供應(yīng)鏈位居榜首,數(shù)字供應(yīng)鏈取代了大數(shù)據(jù)和分析的榜首,這兩項(xiàng)首次跌至榜單第二位。AI、供應(yīng)鏈投資(在系統(tǒng)和人員方面)、可見(jiàn)性、可跟蹤性和位置智能躋身前五名。
- 下一篇
云計(jì)算安全:尋找云安全之路
當(dāng)您最終決定需要安全關(guān)注和資源的關(guān)鍵領(lǐng)域時(shí),請(qǐng)花一點(diǎn)時(shí)間評(píng)估您的風(fēng)險(xiǎn)級(jí)別、部署策略和覆蓋區(qū)域。
相關(guān)資訊
- 企業(yè)必須為2024年的數(shù)字化轉(zhuǎn)型挑
- 扎克伯格:希望借助數(shù)字助理、智能
- 研究人員開(kāi)發(fā)兩棲人工視覺(jué)系統(tǒng)
- 英特爾實(shí)驗(yàn)室通過(guò)兩種新的AI模型
- 應(yīng)對(duì)物聯(lián)網(wǎng)實(shí)時(shí)數(shù)據(jù)共享的挑戰(zhàn)
- 忘記算法和模型——首先學(xué)習(xí)如何
- 人工智能自動(dòng)化客戶服務(wù)是未來(lái)
- 現(xiàn)在是您的品牌進(jìn)入元宇宙的時(shí)候
- 未來(lái)五年,人工AI將催生哪些成熟職
- 云遷移到數(shù)據(jù)中心的網(wǎng)絡(luò)注意事項(xiàng)