作者|VMWare 主任工程师:刘武明、浙江大学 SEL 实验室研究生:陈涛
审核&校对:溪洋、海珠
编辑&排版:雯燕
背景介绍
边缘计算区别于传统的中心云计算模式,并被广泛地应用于汽车、农业、能源、交通等各行各业。Gartner 将边缘计算分为 "Cloud" 、"Far Edge" 、"Near Edge" 三部分,分别对应常见的公共云/私有云、云下 IDC/CDN 节点以及设备终端;即常说的 “云、边、端” 三层结构。随着算力和业务的逐级下沉,网络环境越来越复杂,设备资源越来越受限,设备架构越来越丰富,这些变化给运维管理边缘节点、设备,提高边缘应用的可靠性、资源的利用率等方面,都带来了巨大的挑战。
近日,OpenYurt 与 EdgeX Foundry 社区合作,完成了集成对接:从 v0.5.0 版本开始,OpenYurt 将正式支持部署和管理 EdgeX Foundry,并以云原生的方式管理端设备,双方将共同帮助开发者轻松、高效地解决物联网边缘计算场景下端设备管理和运维的挑战。
1、OpenYurt:非侵入式的边缘云原生智能平台
OpenYurt 基于原生 Kubernetes 构建,由阿里云于 2020 年 5 月开源,并于同年 9 月份入选 CNCF SandBox 项目,是业界首个对 Kubernetes 无侵入的边缘计算云原生开源平台。OpenYurt 主打 “云边一体化” 的概念,针对边缘计算场景中的网络环境复杂、大规模应用交付、运维困难等痛点,提供了边缘自治、云边运维通道、单元化部署、一键式集群转化等能力,通过将云边节点统一管理,使得边缘节点拥有与云端相同的能力,帮助开发者轻松完成在海量边缘资源上的大规模应用交付、运维、管控。
2、EdgeX Foundry:边缘物联网管理平台
EdgeX Foundry 是一款由生态系统提供强力支持的边缘物联网即插即用型、开放式软件平台。它具有高度灵活和可扩展性,可以大大的降低应用与边缘设备,传感器等硬件互操作的复杂性。EdgeX Foundy 采用分层和服务的设计,从下至上分别是设备服务,核心服务,支持服务,应用服务以及安全和管理两个辅助服务。EdgeX Foundry 的分层和服务为边缘设备/节点和云/企业应用之间提供了一个双向转换引擎。可以将传感器和节点数据按特定格式传输到应用,也可以将应用指令下发到边缘设备。
- 设备服务层:设备服务将“物”即传感器和设备连接到 EdgeX 的其余部分。设备服务是与 “物” 交互的边缘连接器,包括但不限于警报系统、家庭和办公楼中的供暖和空调系统、灌溉系统、无人机、自动化运输(例如一些铁路系统)等等。
- 核心服务层:核心服务包括核心数据库,核心元数据,配置和注册表以及核心命令/控制四个服务。他们是对各类设备的一层抽象,保存和收集传感器的数据和元数据,以及来自应用的命令/控制以及配置。
- 支持服务层:主要包括警报服务、通知服务、计划服务,以及规则引擎。
- 应用服务层:应用服务负责从 EdgeX 提取、处理、转换和发送感测数据到用户选择的断点或者流程。EdgeX 现在提供了很多应用程序服务示例以将数据发送到一些主要的云提供商。
- 安全服务层:保护 EdgeX 管理的设备、传感器和其它物联网对象的数据以及控制。EdgeX 的安全功能建立在开放接口、可插拔、可更换模块的基础之上。
- 管理服务:为外部管理系统提供统一的借口以便于其启动、停止、重启 Edgex 服务、获取服务的状态或者相关指标,以便于 EdgeX 服务可以被监控。
拓展 “端” 的能力
根据上述介绍可以看到,OpenYurt 擅长以非侵入的方式,实现云边资源的统一管理和运维,使得边缘节点拥有云端相同的能力。但随着将相关纳管能力拓展至 “ 端 ”这一层时,由于近端设备异构资源支持复杂、通信方式多样、分布位置分散等特点,会出现以下问题:
- 为了支持各种边缘设备,现有的 OpenYurt 框架必须为每个类别的设备开发专用的适配器;
- 在直接纳管端设备的过程中,现有解决方案要么改变 Kubernetes 架构,要么显著修改核心组件,丢失一些上游 Kubernetes 特性的同时,与 OpenYurt 的非侵入式理念相悖。
从 v0.5.0 版本开始,Openyurt 和 EdgeX Foundry 社区通过可扩展方式深度融合,在边缘计算、设备管理、物模型定义、云原生 IoT 领域进一步合作,实现 “云、边、端” 三者的强力协同。OpenYurt 通过集成 EdgeX Foundry 设备管理平台,正式支持端设备的管理能力。用户可以使用 Yurt-edgex-manager 组件一键式部署 Edgex Foundry 实例,并通过部署 Yurt-device-controller 组件打通边缘设备管理平台和云端之间的运维管理通道,允许用户声明式地管理边缘设备,为用户提供 Kubernetes 原生管理端设备的体验。
OpenYurt v0.5.0 设备管理解决方案
1、使用 OpenYurt 编排部署 EdgeX Foundry
在最新 OpenYurt 中引入了一个 Yurt-edgex-controller 的控制器来管理 EdgeX CR。EdgeX CR 是对 EdgeX Foundy 在 OpenYurt 中部署的一个抽象,用户可以操作 CR 的方式来管理 EdgeX 的部署,更新,删除。不再需要写复杂的 Yaml 文件以及 Helm Chart。
用户只需要创建一个 EdgeX 的 CR,Yurt-edgex-controller 会根据 CR 中版本以及对应的 Nodepool 的名字部署 EdgeX。用户在一个集群中可以根据 Nodepool 的数量部署多个 EdgeX,每个 EdgeX 的版本,以及包括的 EdgeX 服务可以配置。
- EdgeX: 是一套 EdgeX foundy 部署的抽象,包括 EdgeX foundry 的版本,以及需要部署的 Nodepool 的名字。基础的 EdgeX CR 包括 8 个基础的 EdgeX 服务和部署,此外还提供 AdditionalDeployment 和 Additional Service 的字段,让用户可以部署任何所需的 EdgeX 组件和第三方应用。
在 OpenYurt 中,EdgeX 的服务通过以 Kubernetes 服务的形式来对外提供访问,尽管不同的 EdgeX 实例使用相同 Kubernates 服务名称,ServiceToploy 会确保 EdgeX 组件只能访问属于同一 EdgeX 实例的其他组件,而不会发生交叉访问的情绪。Yurt-edgex-controller 利用 unitedeployment 的能力,在 Nodepool 中部署 EdgeX 的组件。
2、云原生 IoT 模型
设备信息抽象
为管理现实世界中的设备,需要对设备管理相关的服务进行抽象,Yurt-device-controller 作为连通云和边缘管理平台的组件,抽象出了三个 CRD,用于映射对应设备管理平台上的资源,它们分别是 DeviceProfile、DeviceService 和 Device:
- DeviceProfile:描述了使用相同协议的一种设备类型,其中包括一些通用信息,如制造商名称、设备描述和设备型号。DeviceProfile 还定义了此类设备提供的资源类型(例如,温度、湿度)以及如何读取/写入这些资源。每个 device 都需要关联一个 DeviceProfile;
- DeviceService:是与设备交互的边缘连接器在云端的映射,定义了如何将设备接入到边缘设备管理平台,包括设备的通信协议,通信地址等信息。每个 device 都需要关联一个 DeviceService;
- Device:是现实世界中端设备的映射,例如:电器、警报系统、照明、传感器等设备,它给出了特定设备的详细定义,包括关联的 DeviceProfile(属于哪类设备)、关联的 DeviceService(使用何种通信方式)以及设备特有属性(如照明设备的开关状态等)。
设备管理架构
通过抽象出上述三种 CRD,可以反应出设备基本的状态信息,再使用对应的 controller 与边缘设备管理平台进行交互,可以将边侧发现的端设备及时映射至云端;与此同时,Yurt-device-controller 组件将云端针对设备属性的修改(例如:设置照明设备的开关状态)同步至端设备上,从而影响真实世界中的物理设备。用户只需要声明式地修改 CRs 的相应字段,以一种云原生的方式即可达到运维、管理复杂端设备的目的,下面是组成 Yurt-device-controller 的三个组件:
- DeviceProfile controller:它可以将边缘平台中的 deviceProfile 对象抽象为 deviceProfile CR 并同步到云端。在 deviceProfile controller 的支持下,用户可以在云端查看、创建或删除边缘平台的 deviceProfile。
- DeviceService controller:它可以将边缘平台中的 deviceService 对象抽象为 deviceService CR 并同步到云端。在 deviceService controller 的支持下,用户可以在云端查看、创建或删除边缘平台的 deviceService 信息。
- Device controller:它可以将边缘平台中的 device 对象抽象为 device CR 并同步到云端。在 device controller 的支持下,用户可以通过声明式修改云端 device CR 的方式来管理边缘平台上的设备信息,如创建设备、删除设备、更新设备属性(如设置灯的开和关等)。
下面是云边端三者整体的架构模型:
边缘端设备的通信范围往往局限于某一网络区域内,因此可以将同一网络区域内的边缘节点划分为一个节点池,在每一个节点池内部署一个 Edgex Foundry 实例和一个 yurt-device-controller 组件:
- 在与云端 apiserver 的通信中,Yurt-device-controller 只会监听属于该节点池内的设备对象,并将更新信息通过 Edgex Foundry 实例及时地同步至对应的设备上;
- 在与 Edgex Foundry 实例的通信中,复用 YurtHub、节点池以及单元化部署等能力,Yurt-device-controller 组件只会访问本节点池内的 Edgex Foundry 实例,并将接入该节点池内的设备信息抽象为 device、deviceService 和 deviceProfile 对象同步至云端。
社区合作规划
未来,双方还将面向 IoT 行业继续探索云原生边缘设备管理的解决方案,并吸引更多轻量级边缘设备管理平台加入 OpenYurt 生态,使端设备的管理更加便捷、高效以及云原生。
相关链接:
1)Yurt-edgex-manager:
https://github.com/openyurtio...
2)Yurt-device-controller:
https://github.com/openyurtio...
3)OpenYurt 官网:
https://openyurt.io/en-us/
4)EdgeX Foundry官网:
https://www.edgexfoundry.org/
戳这里,立即了解 OpenYurt 项目!
了解更多相关信息,请扫描下方二维码或搜索微信号(AlibabaCloud888)添加云原生小助手!获取更多相关资讯!
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。