亚洲先锋影音人AV成_免费A级毛片一分钟_人人爽人人爽人人插_日韩少妇极品熟妇人妻潮喷

沃卡惠移動(dòng)端logo

邊緣計(jì)算的一體化調(diào)度方案探索

2023-09-18 14:41:084636

邊緣計(jì)算的一體化調(diào)度方案探索

Part 01 邊緣計(jì)算方案的概念界定

邊緣計(jì)算的一體化調(diào)度方案探索

圖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)解決方案。

邊緣計(jì)算的一體化調(diào)度方案探索

圖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所示。

邊緣計(jì)算的一體化調(diào)度方案探索

表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所示。

邊緣計(jì)算的一體化調(diào)度方案探索

表2

Kubernetes Federation跨公網(wǎng)的多級(jí)群聯(lián)邦調(diào)度機(jī)制,其實(shí)就是一個(gè)依托于MutiClusterDNS多級(jí)群服務(wù)發(fā)現(xiàn)的一種分布式Kubernetes集群調(diào)度體系如下圖3所示:

邊緣計(jì)算的一體化調(diào)度方案探索

圖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)切換成本最?。ㄈ缦卤?)。

 

邊緣計(jì)算的一體化調(diào)度方案探索圖片

Part 04 Kubernetes Federation的使用

4.1 環(huán)境初始化

1)下載kubefedctl命令行并下載

https://github.com/kubernetes-sigs/kubefed/releases/tag/v0.3.1

邊緣計(jì)算的一體化調(diào)度方案探索

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)成功了

邊緣計(jì)算的一體化調(diào)度方案探索圖片

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

邊緣計(jì)算的一體化調(diào)度方案探索

3)通過(guò)kubefedctl命令行工具將自己群加入聯(lián)邦

kubefedctl join clusterName --cluster-context clusterName --host-cluster-context local --v=2kubectl -n kube-federation-system get kubefedclusters

邊緣計(jì)算的一體化調(diào)度方案探索

如果想要退出聯(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)中容器部署的情況

邊緣計(jì)算的一體化調(diào)度方案探索

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

邊緣計(jì)算的一體化調(diào)度方案探索

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í)際情況而定。