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

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

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

KubeEdge架構設計理念

一、Kubernetes的架構

這裏是一個經典的K8s架構,K8s相信你們已經瞭解比較多了,它主要是分爲控制面和數據面,而如今K8s的生態已經很是火爆了,關於應用管理和容器管理已經造成了一套標準,這裏列舉了它的一些優點:網絡

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

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

核心優點主要有4方面:架構

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

通用應用抽象定義:K8s的API,包括development、pod如今其實在業內已經造成一套標準,你們都比較瞭解和承認,其實咱們基於這些應用作這個平臺,你們也更能容易接受。socket

鬆耦合架構:它的可擴展性比較好,好比咱們基於K8s之上能夠經過CRD來定義一些API,像咱們經過設備管理CRD來定義一些IOT裏device的一些API,到時候咱們能夠直接經過K8s的一些方式來管理這些設備;還有一些可擴展,好比它的CIA能夠對接各類runtime,咱們有些邊緣節點它的資源很是有限,咱們就能夠對接一些輕量化的runtime。工具

其關鍵痛點有:優化

1)資源有限url

網關設備,128MB內存spa

K8s集羣須要至少1G內存.net

2)網絡不順暢

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

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

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

3)邊緣如何離線自治

網絡不穩,隨時可能離線

邊緣業務離線可工做

邊緣離線可故障恢復

4)設備接入和管理

缺乏邊緣設備抽象

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

三、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

四、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集羣部署

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

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

子命令參數:

init:部署雲端組件

join:部署邊緣端組件

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

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

二、KubeEdge 部署 —— 雲端

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

重要參數:

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

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

三、KubeEdge 部署 —— 邊緣端

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

重要參數:

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

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

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

 

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

相關文章
相關標籤/搜索