iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 5
0

今天來介紹Cloud端的元件。在運行KubeEdge時會在雲端節點執行cloudcore、邊緣端節點執行edgecore。在Cloud元件有三個,分別是Cloud Hub、Edge Controller、Device Controller。

Edge Controller

負責Kubernetes API server和邊緣端的edgecore的溝通,傳遞新增/刪除/更新物件(資源)訊息。又可細分為底下幾個部分:

  • Downstream Controller:
    將訊息向下傳遞給邊緣端
  1. 負責監看kubernetes API server對物件(pod、secret、configmap)的事件(create/delete/update)將訊息透過cloud hub傳遞至邊緣端。
  2. 決定configmap、secret被請求時需要送至哪個節點
  • Upstream Controller
    接收由邊緣端(edgecore)傳來的訊息
  1. 接收來自edgecore的訊息並同步給kubernetes APT server。
  2. 管理刪除物件(pod/secret/configmap/node)的事件通道
  3. 管理更新物件(node/pod/secret/configmap)狀態的事件通道
  4. 取得pod狀態訊息
  • Controller Manager
    定義Config manager、Pod mananger、secret manager介面。透過CommonResourceEventHandler管理物件(Configmap/Pod...)的新增/刪除/更新事件發布於對應的邊緣端。

Cloud Hub

為雲端controller與邊緣端溝通的中繼站。提供websocket與QUIC兩種通訊協定作為雲端與邊緣端的通訊方式。使用websocket時透過TCP連接的方式和邊緣端連接,從邊緣端傳來的事件(event)都會被存入channelQ中與通道(channels)對應,並標記一個nodeID。
其主要動作有這些:

  • 取得訊息主體並為事件新增channelQ
  • 使用websocket創建http連線
  • 邊緣端訊息讀取/寫入
    讀取來自邊緣端的訊息(JSON格式),轉換為事件物件(event object)後用於做雲端內部通訊,最後將事件發布給其他controller。
    寫入訊息至邊緣端則是將event object轉換為訊息結構後再通過websocket傳送。
  • 傳送訊息給Controller
    每當controller發起一次websocket連線請求時預設便會發送一則包含時間註記、clientID以及事件類型的訊息給controller;當(與邊緣端)節點斷線時也會發送訊息通知controller。

Device Controller

管理裝置(device)的元件。在KubeEdge中透過Kubernetes自定義資源(Custom Resource Definitions, CRD)的方式宣告裝置,並將裝置的資料與狀態同步給雲端與邊緣端。這裡的裝置指類似感測器之類的,DHT11、LED等等。
在宣告裝置時需要兩份YAML。一份是Device Model用於描述裝置的性質,有點類似於一份通用的模板;一份是Device Instance用於實例化成真實的物件,透過引用Device Model的定義為個別的裝置做實例化。


上一篇
Day 4: KubeEdge 簡介
下一篇
Day 6: KubeEdge 元件:Edge(I)
系列文
從開源kubernetes雲端運算到kubeedge雲邊協同30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言