KubeEdge 發布 v1.15.0 版本。新版本新增多個增強功能,在邊緣節點管理、邊緣應用管理、邊緣設備管理等方面均有大幅提升。
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
更多信息可參考:
基于物模型的新版本設備管理 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"`
}
更多信息可參考:
承載 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 數據面系統架構如下圖所示:
- Mapper 自動生成框架 Mapper-Framework
v1.15.0 版本提出全新的 Mapper 自動生成框架 Mapper-Framework??蚣苤幸呀浖?Mapper 向云端注冊、云端向 Mapper 下發 Device Model 與 Device Instance 配置信息、設備數據傳輸上報等功能,大大簡化用戶設計實現 Mapper 的開發工作,便于用戶體驗 KubeEdge 邊緣計算平臺帶來的云原生設備管理體驗。
更多信息可參考:
支持邊緣節點運行 Kubernetes 靜態 Pod
新版本的 KubeEdge 支持了 Kubernetes 原生靜態 Pod 能力,與 Kubernetes 中操作方式一致,用戶可以在邊緣主機的指定目錄中,以 JSON 或者 YAML 的形式寫入 Pod 的 Manifests 文件,Edged 會監控這個目錄下的文件來創建/刪除邊緣靜態 Pod,并在集群中創建鏡像 Pod。
靜態 Pod 默認目錄是 /etc/kubeedge/manifests,你也可以通過修改 EdgeCore 配置的 staticPodPath 字段來指定目錄。
更多信息可參考:
支持更多的 Kubernetes 原生插件運行在邊緣節點
v1.15.0 版本的 KubeEdge 支持更多原生插件在邊緣節點上運行。KubeEdge 提供了高擴展性的 Kubernetes 原生非資源類 API 透傳框架,滿足了原生插件對此類 API 的依賴。插件可以從邊緣節點的 MetaServer 中獲取集群 version 等信息,MetaServer 將對請求進行數據緩存,保證邊緣節點網絡中斷時仍能正常服務。
當前框架下,社區開發者將更容易的開放更多非資源類 API。開發者只需關注插件依賴的 API,而不需要考慮請求如何傳遞至邊緣節點。
更多信息可參考:
升級 Kubernetes 依賴到 v1.26
新版本將依賴的 Kubernetes 版本升級到 v1.26.7,你可以在云和邊緣使用新版本的特性。
更多信息可參考:
版本升級注意事項
-
新版本 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。