作者|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: github.com/openyurtio/… 2)Yurt-device-controller: github.com/openyurtio/… 3)OpenYurt 官网: openyurt.io/en-us/ 4)EdgeX Foundry官网: www.edgexfoundry.org/
戳这里,当即了解 OpenYurt 项目!
了解更多相关信息,请扫描下方二维码或搜索微信号(AlibabaCloud888)增加云原生小助手!获取更多相关资讯!
