KubeEdge v1.15.0釋出!新增5大特性

華為雲開發者聯盟發表於2023-10-24

本文分享自華為雲社群《KubeEdge v1.15.0釋出!新增Windows 邊緣節點支援,基於物模型的裝置管理,DMI 資料面支援等功能》,作者:雲容器大未來 。

北京時間2023年10月13日,KubeEdge 釋出 v1.15.0 版本。新版本新增多個增強功能,在邊緣節點管理、邊緣應用管理、邊緣裝置管理等方面均有大幅提升。

kubeedge.png

KubeEdge v1.15.0 新增特性:

  • 支援 Windows 邊緣節點
  • 基於物模型的新版本裝置管理 API v1beta1釋出
  • 承載 DMI 資料面的 Mapper 自定義開發框架 Mapper-Framework 釋出
  • 支援邊緣節點執行靜態 Pod
  • 支援更多的 Kubernetes 原生外掛執行在邊緣節點

新特性概覽

▍支援 Windows 邊緣節點

隨著邊緣計算應用場景的不斷擴充,涉及到的裝置型別也越來越多,其中包括很多基於Windows 作業系統的感測器、攝像頭和工控裝置等,因此新版本的KubeEdge 支援在 Windows 上執行邊緣節點,覆蓋更多的使用場景。

在 v1.15.0 版本中,KubeEdge 支援邊緣節點執行在 Windows Server 2019,並且支援 Windows 容器執行在邊緣節點上,將 KubeEdge 的使用場景成功擴充到 Windows 生態。

Windows 版本的 EdgeCore 配置新增了 windowsPriorityClass 欄位,預設為NORMAL_PRIORITY_CLASS。使用者可以在 Windows 邊緣主機上下載 Windows 版本的 EdgeCore 安裝包[1],解壓後執行如下命令即可完成 Windows 邊緣節點的註冊與接入,使用者可以透過在雲端執行 kubectl get nodes 確認邊緣節點的狀態,並管理邊緣 Windows 應用。

edgecore.exe --defaultconfig > edgecore.yaml
edgecore.exe --config edgecore.yaml

更多資訊可參考:

https://github.com/kubeedge/kubeedge/pull/4914

https://github.com/kubeedge/kubeedge/pull/4967

▍基於物模型的新版本裝置管理 API v1beta1 釋出

v1.15.0 版本中,基於物模型的裝置管理 API,包括 Device Model 與 Device Instance,從 v1alpha2 升級到了 v1beta1,新增了邊緣裝置資料處理相關等的配置,北向裝置 API 結合南向的 DMI 介面,實現裝置資料處理,API 的主要更新包括:

  • Device Model 中按物模型標準新增了裝置屬性描述、裝置屬性型別、裝置屬性取值範圍、裝置屬性單位等欄位。
// ModelProperty describes an individual device property / attribute like temperature / humidity etc.
type ModelProperty struct {
   // Required: The device property name.
   Name string `json:"name,omitempty"`
   // The device property description.
   // +optional
   Description string `json:"description,omitempty"`
   // Required: Type of device property, ENUM: INT,FLOAT,DOUBLE,STRING,BOOLEAN,BYTES
   Type PropertyType `json:"type,omitempty"`
   // Required: Access mode of property, ReadWrite or ReadOnly.
   AccessMode PropertyAccessMode `json:"accessMode,omitempty"`
   // +optional
   Minimum string `json:"minimum,omitempty"`
   // +optional
   Maximum string `json:"maximum,omitempty"`
   // The unit of the property
   // +optional
   Unit string `json:"unit,omitempty"`
}
  • Device Instance 中內建的協議配置全部移除,包括 Modbus、Opc-UA、Bluetooth 等。使用者可以透過可擴充套件的 Protocol 配置來設定自己的協議,以實現任何協議的裝置接入。Modbus、Opc-UA、Bluetooth 等內建協議的 Mapper 不會從 mappers-go 倉庫移除,並且會更新到對應的最新版本,且一直維護。
type ProtocolConfig struct {
   // Unique protocol name
   // Required.
   ProtocolName string `json:"protocolName,omitempty"`
   // Any config data
   // +optional
   // +kubebuilder:validation:XPreserveUnknownFields
   ConfigData *CustomizedValue `json:"configData,omitempty"`
}

type CustomizedValue struct {
   Data map[string]interface{} `json:"-"`
}   
  • 在 Device Instance 的裝置屬性中增加了資料處理的相關配置,包括裝置上報頻率、收集資料頻率、屬性是否上報雲端、推送到邊緣資料庫等欄位,資料的處理將在 Mapper 中進行。
type DeviceProperty struct {
   ......
   // Define how frequent mapper will report the value.
   // +optional
   ReportCycle int64 `json:"reportCycle,omitempty"`
   // Define how frequent mapper will collect from device.
   // +optional
   CollectCycle int64 `json:"collectCycle,omitempty"`
   // whether be reported to the cloud
   ReportToCloud bool `json:"reportToCloud,omitempty"`
   // PushMethod represents the protocol used to push data,
   // please ensure that the mapper can access the destination address.
   // +optional
   PushMethod *PushMethod `json:"pushMethod,omitempty"`
}

更多資訊可參考:

https://github.com/kubeedge/kubeedge/pull/4999

https://github.com/kubeedge/kubeedge/pull/4983

▍承載 DMI 資料面的 Mapper 自定義開發框架 Mapper-Framework 釋出

v1.15.0 版本中,對 DMI 資料面部分提供了支援,主要承載在南向的 Mapper 開發框架 Mapper-Framework中。Mapper-Framework 提供了全新的 Mapper 自動生成框架,框架中整合了 DMI 裝置資料管理(資料面)能力,允許裝置在邊緣端或雲端處理資料,提升了裝置資料管理的靈活性。Mapper-Framework 能夠自動生成使用者的 Mapper 工程,簡化使用者設計實現 Mapper 的複雜度,提升 Mapper 的開發效率。

  • DMI 裝置資料面管理能力支援

v1.15.0 版本 DMI 提供了資料面能力的支援,增強邊緣端處理裝置資料的能力。裝置資料在邊緣端可以按配置直接被推送至使用者資料庫或者使用者應用,也可以透過雲邊通道上報至雲端,使用者也可以透過 API 主動拉取裝置資料。裝置資料管理方式更加多樣化,解決了 Mapper 頻繁向雲端上報裝置資料,易造成雲邊通訊阻塞的問題,能夠減輕雲邊通訊的資料量,降低雲邊通訊阻塞的風險。DMI 資料面系統架構如下圖所示:

KubeEdge v1.15.0釋出!新增5大特性

  • Mapper 自動生成框架 Mapper-Framework

v1.15.0 版本提出全新的 Mapper 自動生成框架 Mapper-Framework。框架中已經整合 Mapper 向雲端註冊、雲端向 Mapper 下發 Device Model 與 Device Instance 配置資訊、裝置資料傳輸上報等功能,大大簡化使用者設計實現 Mapper 的開發工作,便於使用者體驗 KubeEdge 邊緣計算平臺帶來的雲原生裝置管理體驗。

更多資訊可參考:https://github.com/kubeedge/kubeedge/pull/5023

▍支援邊緣節點執行 Kubernetes 靜態 Pod

新版本的 KubeEdge 支援了 Kubernetes 原生靜態 Pod 能力,與 Kubernetes 中操作方式一致,使用者可以在邊緣主機的指定目錄中,以 JSON 或者 YAML 的形式寫入 Pod 的 Manifests 檔案,Edged 會監控這個目錄下的檔案來建立/刪除邊緣靜態 Pod,並在叢集中建立映象 Pod。

靜態 Pod 預設目錄是 /etc/kubeedge/manifests,您也可以透過修改 EdgeCore 配置的 staticPodPath 欄位來指定目錄。

更多資訊可參考:https://github.com/kubeedge/kubeedge/pull/4825

▍支援更多的 Kubernetes 原生外掛執行在邊緣節點

v1.15.0 版本的 KubeEdge 支援更多原生外掛在邊緣節點上執行。KubeEdge 提供了高擴充套件性的 Kubernetes 原生非資源類 API 透傳框架,滿足了原生外掛對此類 API 的依賴。外掛可以從邊緣節點的 MetaServer 中獲取叢集 version 等資訊,MetaServer 將對請求進行資料快取,保證邊緣節點網路中斷時仍能正常服務。

當前框架下,社群開發者將更容易的開放更多非資源類 API。開發者只需關注外掛依賴的 API,而不需要考慮請求如何傳遞至邊緣節點。

更多資訊可參考:https://github.com/kubeedge/kubeedge/pull/4904

▍升級 Kubernetes 依賴到 v1.26

新版本將依賴的 Kubernetes 版本升級到 v1.26.7,您可以在雲和邊緣使用新版本的特性。

更多資訊可參考:https://github.com/kubeedge/kubeedge/pull/4929

升級注意事項

  • 新版本 v1beta1 的 Device API不相容 v1alpha1 版本,如果您需要在 KubeEdge v1.15.0 中使用裝置管理特性,您需要更新 Device API 的 yaml 配置。

  • 如果您使用 containerd 作為邊緣容器執行時,您需要將 containerd 版本升級到 v1.6.0 或者更高版本,KubeEdge v1.15.0 不再支援 containerd 1.5 以及更早的版本。

    參考:https://kubernetes.io/blog/2022/11/18/upcoming-changes-in-kubernetes-1-26/#cri-api-removal

  • 在 KubeEdge v1.14 中,EdgeCore 已經移除了對 dockershim 的支援,邊緣執行時僅支援 remote 型別,並且使用 containerd 作為預設執行時。如果您想要繼續使用 docker 作為邊緣執行時,您需要安裝 cri-dockerd,並且在啟動 EdgeCore 過程中,設定 runtimeType=remote 以及 remote-runtime-endpoint=unix:///var/run/cri-dockerd.sock。

    參考:https://github.com/kubeedge/kubeedge/issues/4843

▍致謝

感謝 KubeEdge 社群技術指導委員會( TSC )、各 SIG 成員對 v1.15.0 版本開發的支援與貢獻,未來 KubeEdge 將持續在新場景探索與支援、穩定性、安全性、可擴充套件性等方面持續發展與演進!

▍相關連結

[1] Windows 版本 EdgeCore 安裝包:

https://github.com/kubeedge/kubeedge/releases/download/v1.15.0/kubeedge-v1.15.0-windows-amd64.tar.gz

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

相關文章