KubeEdge詳解


一、KubeEdge介紹

KubeEdge 是一個開源的系統,可將本機容器化應用編排和管理擴展到邊緣端設備。 它構建在Kubernetes之上,為網絡和應用程序提供核心基礎架構支持,並在雲端和邊緣端部署應用,同步元數據。100%兼容K8S API,可以使用K8S API原語管理邊緣節點和設備。KubeEdge 還支持 MQTT 協議,允許開發人員編寫客戶邏輯,並在邊緣端啟用設備通信的資源約束。

1、優勢

kubernetes + 容器的組合大大提高了用戶創建部署應用的效率。kubernetes 可以把 n 台主機整合成一個集群,用戶在 master 節點上通過編寫一個 yaml 或者 json 格式的配置文件,也可以通過命令等請求 Kubernetes API 創建應用,就直接將應用部署到集群上的各個節點上,該配置文件中還包含了用戶想要應用程序保持的狀態,從而生成用戶想要的環境。
Kubernetes 作為容器編排的標准,自然會想把它應用到邊緣計算上,即通過 kubernetes 在邊緣側部署應用,但是 kubernetes 在邊緣側部署應用時遇到了一些問題,例如:

  • 邊緣側設備沒有足夠的資源運行一個完整的 Kubelet
  • 一些邊緣側設備是 ARM 架構的,然而大部分的 Kubernetes 發行版並不支持 ARM 架構
  • 邊緣側網絡很不穩定,甚至可能完全不通,而 kubernetes 需要實時通信,無法做到離線自治
  • 很多邊緣設備都不支持TCP/IP 協議
  • Kubernetes 客戶端(集群中的各個Node節點)是通過 list-watch 去監聽 Master 節點的 apiserver 中資源的增刪改查,list-watch 中的 watch 是調用資源的 watch API 監聽資源變更事件,基於 HTTP 長連接實現,而維護一個 TCP 長連接開銷較大。從而造成可擴展性受限。

為了解決包含但不限於以上 Kubernetes 在物聯網邊緣場景下的問題,從而產生了KubeEdge 。對應以上問題:

  • KubeEdge 保留了 Kubernetes 的管理面,重新開發了節點 agent,大幅度優化讓邊緣組件資源占用更低很多
  • KubeEdge 可以完美支持 ARM 架構和 x86 架構
  • KubeEdge 有離線自治功能,可以看 MetaManager 組件的介紹
  • KubeEdge 豐富了應用和協議支持,目前已經支持和計划支持的有:MQTT、BlueTooth、OPC UA、Modbus等。
  • KubeEdge 通過底層優化的多路復用消息通道優化了雲邊的通信的性能,可以看 EdgeHub 組件的介紹

2、介紹

2.1 應用場景、特點等

 

 

 

 

上圖是 華為雲IEF 的應用場景,Kubeedge 就是源於這個產品,它基於 KubeEdge 和 Kubernetes 生態構建,將雲原生的技術應用到邊緣計算。IEF 通過納管邊緣節點,將雲端AI應用、函數計算等能力下發到邊緣節點(EdgeNode),將公有雲能力延伸到靠近設備的一端,使得邊緣節點擁有雲端相同能力,能夠實時處理終端設備計算需求。

 

KubeConShanghai2018——KubeEdge開源首秀
KubeEdge 向左,K3S 向右
KubeEdge實現原理

2.2 架構

 

 

 

KubeEdge 由以下組件構成:

2.1.1 雲邊通信

  • CloudHub: CloudHub 是一個 Web Socket 服務端,用於大量的 edge 端基於 websocket 或者 quic 協議連接上來。負責監聽雲端的變化, 緩存並發送消息到 EdgeHub
  • EdgeHub: 是一個 Web Socket 客戶端,負責將接收到的信息轉發到各edge端的模塊處理;同時將來自個edge端模塊的消息通過隧道發送到cloud端。提供可靠和高效的雲邊信息同步

如何配置通信協議

2.1.2 雲上部分

  • EdgeController: 用於控制 Kubernetes API Server 與邊緣的節點、應用和配置的狀態同步。
  • DeviceController: DeviceController 是一個擴展的 Kubernetes 控制器,管理邊緣設備,確保設備信息、設備狀態的雲邊同步。

2.1.3 邊緣部分

  • MetaManager: MetaManager 模塊后端對應一個本地的數據庫(sqlLite),所有其他模塊需要與 cloud 端通信的內容都會被保存到本地 DB 種一份,當需要查詢數據時,如果本地 DB 中存在該數據,就會從本地獲取,這樣就避免了與 cloud 端之間頻繁的網絡交互;同時,在網絡中斷的情況下,本地的緩存的數據也能夠保障其穩定運行(比如你的智能汽車進入到沒有無線信號的隧道中),在通信恢復之后,重新同步數據。是邊緣節點自治能力的關鍵
  • Edged: 是運行在邊緣節點的代理,用於管理容器化的應用程序。算是個重新開發的輕量化 Kubelet,實現 Pod,Volume,Node 等 Kubernetes 資源對象的生命周期管理
  • EventBus: EventBus 是一個與 MQTT 服務器(mosquitto)交互的 MQTT 客戶端,為其他組件提供訂閱和發布功能。
  • ServiceBus: ServiceBus是一個運行在邊緣的HTTP客戶端,接受來自雲上服務的請求,與運行在邊緣端的HTTP服務器交互,提供了雲上服務通過HTTP協議訪問邊緣端HTTP服務器的能力。
  • DeviceTwin: DeviceTwin 負責存儲設備狀態並將設備狀態同步到雲,它還為應用程序提供查詢接口。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM