KubeEdge之設備管理:如何在雲端點亮您家的燈

邊緣計算與KubeEdge

雲計算離終端設備(如攝像頭、傳感器等)較遠,對於實時性要求高的計算需求,把計算放在雲上會引發較長的網絡延時、網絡擁塞、服務質量降低等問題。而終端設備一般計算能力不足,沒法與雲端相比。在此狀況下,邊緣計算應運而生,將雲端計算能力延伸到靠近終端設備的邊緣節點,完美解決上述問題。git

KubeEdge做爲全球首個Kubernetes原生的開源邊緣計算平臺,依託Kubernetes的容器編排和調度能力,經過納管用戶的邊緣節點,提供將雲上應用延伸到邊緣的能力,聯動邊緣側和雲端的數據,知足客戶對邊緣計算資源的遠程管控、數據處理、分析決策、智能化的訴求。同時,在雲端提供統一的設備/應用監控、日誌採集等運維能力,爲企業提供完整的邊雲協同一體化服務的邊緣計算解決方案。github

本文將介紹KubeEdge是如何在雲端管理邊緣側的設備的,例如:用戶只需在按下手機上app的一個按鈕,就能打開本身家中的電燈。數據庫

 

設備孿生與KubeEdge設備管理緩存

說到IoT設備,不得不提到一個概念叫作設備孿生Device Twin。設備孿生做爲一種IoT設備元數據在應用平臺上的虛擬映射,已經成爲IoT設備管理的重要組成部分。IoT設備一般包含兩類數據:一是不會改變的元數據,包括序列號、資產標識符、Mac地址等描述設備的詳細信息,也能夠稱爲設備的靜態屬性。另外一類是設備的動態數據,包括特定背景下的設備專有實時數據,例如燈的開、關狀態,也能夠稱爲設備的Twin屬性。設備孿生具備與物理設備相同的特性,便於設備與應用之間進行更好地通訊。應用發送的命令首先到達設備孿生,設備孿生根據應用設置的Expected State進行狀態更新,此外IoT設備實時反饋自身的Actual State,設備孿生同時記錄IoT設備的Actual State和Expected State 。這種方式也使IoT設備在離線情況下再次上線時,設備的狀態也能獲得同步。服務器

設備管理也是邊緣計算中IoT場景的關鍵功能。KubeEdge做爲一個雲端和邊緣側都開源的邊緣計算平臺,除了實現雲端應用的配置和下發以外,另外一個很重要的功能就是在雲端管理IoT設備,而且實現雲邊之間的設備狀態同步。網絡

 

KubeEdge設備管理組件併發

KubeEdge設備管理相關的組件以下:app

  • DeviceController:擴展的 Kubernetes 控制器,管理雲端的設備信息以及雲端與邊緣側設備的同步。運維

  • CloudHub:WebSocket 服務端,負責監聽雲端資源變化, 緩存併發送消息到 EdgeHub。工具

  • EdgeHub:WebSocket 客戶端,包括同步雲端資源更新、報告邊緣節點和設備信息到雲端等功能。

  • DeviceTwin:負責存儲設備狀態並將設備狀態同步到雲端。

  • EventBus:與 MQTT 服務器Mosquitto交互的客戶端,爲其餘組件提供訂閱和發佈消息的功能。

  • Mapper:用於鏈接和控制端側設備,例如開、關燈。

KubeEdge經過CRD(Customer Resource Definition)擴展Kubernetes的API,擴展的API資源包括:Device和DeviceModel等,這樣咱們能在雲端經過Kubernetes命令行工具Kubectl或其餘方式對設備資源進行CRUD的操做。Device資源映射與各個邊緣節點關聯的設備,例如傳感器。DeviceModel則是對一類設備定義的模板,方便用戶能夠在雲端依據DeviceModel模板輕易地完成對Device資源的批量操做。

 

使用KubeEdge點亮您家的燈

在雲端點亮您家的燈,讓咱們來看看KubeEdge如何實現這件有趣的事情?一個設備孿生的參考示例以下所示:

這裏就須要用到上面提到Device Twin。例如燈的元數據信息以Json的格式描述如上,包含靜態屬性attributes和動態屬性twin。這裏定義一個名爲powerstatus的twin屬性,它的expected值和actual值能夠爲ON或者OFF。設備自身能夠上報powerstatus的actual值到雲端,雲端則能夠經過修改成powerstatus屬性的expected值來控制邊緣側燈的開、關。

首先咱們看看如何上報燈的powerstatus的actual值到雲端:

  1. Mapper實時上報實際狀態Actual State給MQTT服務器Mosquitto。

  2. EventBus從Mosquitto收到訂閱消息,消息內容包含設備的實際狀態Actual State。

  3. EventBus把設備實際狀態Actual State發送給Device Twin。

  4. Device Twin更新設備實際狀態Actual State到邊緣節點本地的輕量級數據庫,例如SQLite。

  5. Device Twin同步實際狀態Actual State給WebSocket客戶端EdgeHub。

  6. EdgeHub發送消息給WebSocket服務端CloudHub。

  7. CloudHub回饋消息給DeviceController。

  8. DeviceController同步實際狀態Actual State到Kubernetes API Server。

最後用戶就能在雲端查詢設備的powerstatus的actual值,獲取到邊緣側設備上的燈開、關的實際狀態。

 

加入KubeEdge

設備管理毫無疑問是邊緣計算IoT場景中十分關鍵的特性,目前KubeEdge的設備管理特性仍在開發之中,將會在0.3版本發佈,敬請期待。

KubeEdge做爲一個100%開源的項目,十分歡迎您的加入。KubeEdge Github項目地址:

https://github.com/kubeedge/kubeedge

相關文章
相關標籤/搜索