北京时间2月7日,KubeEdge发布了新的特性版本v1.2.0。
本次发布的1.2版本迎来可靠性方面的重大升级,包含:增强云边协同传输的可靠性、Component Config API、自动注册边缘节点到云端、升级Kubernetes依赖到v1.17 Stable版本,以及30处问题修复。
接下来本文将逐一解读KubeEdge v1.2的新特性。
KubeEdge名字来源于Kube+Edge,即在Kubernetes原生的容器编排和调度能力之上,实现云边协同、计算下沉、海量边缘设备管理、边缘自治等能力。在追求边缘极致轻量化的同时,结合云原生生态的众多优势,解决当前智能边缘领域面临的挑战。
KubeEdge架构上分为云、边、端三个层次。云端负责应用和配置的校验、下发,边缘侧负责运行边缘应用和管理接入的设备,设备端运行各种边缘设备。
KubeEdge完整的打通了边缘计算中云、边、设备协同的场景,整体架构如下图。
在边缘计算场景下,边缘的网络通常是不稳定的,这将导致云边的网络连接频繁断开,在云边协同通信时存在丢失数据的风险。
在针对边缘网络不稳定场景优化的基础上,KubeEdge v1.2版本做了以下增强:
1. 增加业务层消息发送的校验机制。云端发送状态同步消息到边缘时,边缘在接收并且持久化成功后,会回复状态同步成功的ACK消息给云端。如果云端未收到边缘状态同步成功的消息回复,则由业务层代码触发重传机制,重新进行状态同步。
2. 持久化云边协同消息状态。在云和边缘状态同步的过程中,云端会实时记录每个边缘节点同步成功的最新消息版本号(ResourceVersion),并以CRD的形式持久化保存到K8s中。该机制可以保证在边际场景下云端故障或者边缘离线重启后消息发送的顺序和连续性,避免重发旧消息引起云边状态不一致问题。
3. 周期性检查同步云边数据,保持一致性。在前两步的基础上,KubeEdge又在云端CloudCore中添加了新的模块SyncController,它主要负责周期性检查个边缘节点的同步状态,对比K8s中资源的信息,将不一致的状态同步到边缘,确保云边状态的最终一致性。
整体工作流程如下图所示:
KubeEdge v1.2版本的另一项重要改进是将CloudCore、EdgeCore、EdgeSite等组件的所有配置项结构化,统一使用K8s原生风格的Component Config API定义,按API版本形式管理后续演进,提供历史兼容支持。
在以往版本中,KubeEdge组件的配置项分散在各个模块的独立文件中,维护比较繁琐。配置项按组件聚合后,用户只需在一个配置文件中进行配置,并可通过”–config”设置配置文件的路径。
本次增强还提供了默认完整配置和最小配置两个命令,用户可以使用这两个命令来生成配置文件,快速部署KubeEdge。
KubeEdge v1.2版本中的组件配置API:
详细配置及设计原则,请见
1.2版本之前,用户在添加一个边缘节点时,首先需要在云端创建Node对象,再启动边缘端的EdgeCore。
在v1.2版本中,KubeEdge提供了边缘节点自动注册到云端的功能,并且默认开启该特性,以减少用户在安装使用KubeEdge时的操作步骤。用户可以通过修改EdgeCore的“registerNode”配置项来关闭该特性(将其设置为“false”即可)。
1.2版本将K8s相关的依赖升级到了v1.17 Stable版本,edged对应的k8s版本也升级到了v1.17,用户可以在边缘侧享用最新版K8s的应用管理、存储管理等能力。
由于边缘端只关心Pod、ConfigMap、Secret、Service、Endpoint这几个核心API对象,K8s中这几个API对象保持不变,那么就可以保持兼容,兼容性表报如下图。
Kubernetes兼容性:
Golang兼容性:
新版本除了以上新特性外,还包括以下修改:
随着v1.2版本的发布,KubeEdge提供了更稳定可靠的云边协同传输机制,更完备的边缘应用管理以及设备管理能力,更加友好的用户体验,以及更加友好的社区贡献者体验,感谢所有社区贡献者的支持!后续版本将进一步提升KubeEdge的用户使用体验,提供完备的智能边缘计算平台。
领取专属 10元无门槛券
私享最新 技术干货