從架構設計理念到集羣部署,全面認識KubeEdge

摘要:本篇文章將從KubeEdge架構設計理念、KubeEdge代碼目錄概覽、KubeEdge集羣部署三方面帶大家認識KubeEdge。

KubeEdge即Kube+Edge,顧名思義就是依託K8s的容器編排能力和調度能力,實現雲邊協同、計算下沉、海量設備的平滑接入。本篇文章將從KubeEdge架構設計理念、KubeEdge代碼目錄概覽、KubeEdge集羣部署三方面帶大家認識KubeEdge。

KubeEdge架構設計理念

1、Kubernetes的架構

這裏是一個經典的K8s架構,K8s相信大家已經瞭解比較多了,它主要是分爲控制面和數據面,而現在K8s的生態已經非常火爆了,關於應用管理和容器管理已經形成了一套標準,這裏列舉了它的一些優勢:

  • 只有API server可以訪問etcd
  • 組件通過 API Server 訪問集羣狀態
  • API採用聲明式設計
  • API對象彼此互補、可組合
  • 優先使用事件監聽而不是輪詢

2、基於Kubernetes構建邊緣計算的優勢與痛點

核心優勢主要有4方面:

容器化應用封裝現在已經成爲應用交付的一個趨勢,我可以把我的應用打包到容器裏,我只打包一次,可以跑在各種地方,這種如果應用到我們IOT領域,我們傳統有很多IOT嵌入式設備,它其實很多硬件和軟件強相關的,如果換一個硬件,可能軟件就要更改,如果說我這個容器化封裝以後,設備可支持容器runtime,我可以將容器跑在任何IOT設備上。

通用應用抽象定義:K8s的API,包括development、pod現在其實在業內已經形成一套標準,大家都比較瞭解和認可,其實我們基於這些應用做這個平臺,大家也更能容易接受。

松耦合架構:它的可擴展性比較好,比如我們基於K8s之上可以通過CRD來定義一些API,像我們通過設備管理CRD來定義一些IOT裏device的一些API,到時候我們可以直接通過K8s的一些方式來管理這些設備;還有一些可擴展,比如它的CIA可以對接各種runtime,我們有些邊緣節點它的資源非常有限,我們就可以對接一些輕量化的runtime。

其關鍵痛點有:

1)資源有限

網關設備,128MB內存

K8s集羣需要至少1G內存

2)網絡不暢

邊緣位於私有網絡,無公網IP

雲邊跨越公網,帶寬有限,延遲高

K8s的List-watch需要數據中心網絡

3)邊緣如何離線自治

網絡不穩,隨時可能離線

邊緣業務離線可工作

邊緣離線可故障恢復

4)設備接入和管理

缺少邊緣設備抽象

缺少邊緣設備接入協議支持

3、KubeEdge 架構與核心理念

我們這個架構主要是分了雲、邊、端三部分,雲上邊就是我們的控制面,邊就是我們的邊緣節點,端就是跑了我們的一些端側設備,雲上左邊是一個K8s的master,是沒有做過改動的原生的K8s控制面,後邊我們加了我們的一個組件叫CloudCore,它雲上的組件主要是會拿一些K8s控制面上的東西,通過EdgeController和DeviceController做一些處理,然後通過下邊的Cloud Hub,Cloud Hub主要是跟邊端通信的,邊端有個EdgeHub和Cloud Hub通信,然後把數據拿下來。

邊端是主要做了一個應用管理和設備管理的能力,應用管理左邊會有一個Edged,右邊有DeviceTwin、EventBus,分別是應用管理和設備管理,左邊有個DataStore,就是我們說的本地自治的能力,比如說我們這應用或者設備的元素從雲上分發下來,我們是先把它存到一個數據庫裏,然後再到它的Edged或者設備裏邊,這樣就能保證雲邊網絡斷開或者邊緣節點重啓了以後我應用的Edged它可以從數據庫裏把應用源數據拿出來,這樣就能保證在故障的情況下業務可以正常恢復。

核心理念:

1)雲邊可靠協同

雙向多路複用消息通道,支持邊緣節點位於私有網絡

Websocket + 消息封裝,大幅減少通信壓力,高時延下仍可正常工作

雲邊消息校驗,網絡不穩定時不丟數據

2)邊緣離線自治

節點元數據持久化,實現節點級離線自治

節點故障恢復無需List-watch,降低網絡壓力,快速ready

3)邊緣極致輕量

重組Kubelet功能模塊,極致輕量化(~70mb內存佔用)

支持CRI集成Containerd、CRI-O,優化runtime資源消耗

4)邊緣設備管理

雲端通過Kubernetes API管理邊緣Device

4、KubeEdge 社區生態

KubeEdge致力於將Kubernetes的能力拓展到邊緣

  • 業界首個邊緣容器平臺項目
  • Apache 2.0協議
  • 2019年3月捐給CNCF基金會
  • 2020年9月晉級爲孵化級託管項目
  • K8s IoT Edge WG參考架構
  • 基於Kubernetes構建,100%兼容K8s API
  • 9個特性版本,最新版本爲v1.4.0
  • 3100+ Star,810+ Fork,500+貢獻者
  • 目前成立Device/IoT與MEC兩個SIG
  • 參與社區貢獻的企業包括:中國聯通,ARM,中國移動,諧雲,中國電信,時速雲,http://JD.com,浙大SEL實驗室,EMQ,InfoBlox,Inovex,Midokura等

KubeEdge代碼目錄概覽

ADOPTERS就是我們社區的一些採納者,比如說你用了KubeEdge,並且想成爲參與者,建議者,你可以提一個PR,把你們寫到這個ADOPTER裏面去,下面的這些就是代碼目錄,主要就是cloud(雲端)、edge(邊緣端)、mappers(接入設備的mapper端),還有OWNERS是我們項目的一些matiner,主要負責核代碼,比如你對我們社區貢獻比較多,我們可以把你加到OWNERS,幫我們核代碼和檢視代碼。

KubeEdge集羣部署

1、KubeEdge 集羣部署工具—— keadm

這個是借鑑了K8s的Kubeadm,可以一鍵部署KubeEdge集羣,在部署KubeEdge集羣時,要先裝一個K8s的master,這個master用任何符合K8s的標準都可以,這個 keadm是基於K8s之上部署KubeEdge系統。

子命令參數:

init:部署雲端組件

join:部署邊緣端組件

gettoken:從雲端獲取邊緣端啓動憑據

reset:重置KubeEdge集羣的雲端和邊緣端

2、KubeEdge 部署 —— 雲端

在已經裝好的master上裝我們的雲端,用 init即可:

重要參數:

--kube-config:連接K8s Master的憑據

--advertise-address:簽發到邊緣證書裏的IP地址

3、KubeEdge 部署 —— 邊緣端

邊緣端主要用我們的join命令:

重要參數:

--token:邊緣端啓動時訪問雲端的憑據

--cloudcore-ipport:邊緣端訪問的雲端IP地址

本文分享自華爲雲社區《KubeEdge架構解讀:雲原生的邊緣計算平臺》,原文作者:技術火炬手。

 

點擊關注,第一時間瞭解華爲雲新鮮技術~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章