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