Akri,一个用于建立Kubernetes和边缘计算连接的开源项目

共 1675字,需浏览 4分钟

 ·

2020-10-30 03:56

作者:iyacontrol

来源:SegmentFault 思否社区




Akri 使您可以轻松地将异构叶子设备(例如IP摄像机和USB设备)公开为Kubernetes集群中的资源,同时还支持公开嵌入式硬件资源(例如GPU和FPGA)。Akri不断检测有权访问这些设备的节点,并根据这些节点调度工作负载。




Why Akri


在边缘,有各种各样的传感器,控制器和MCU类设备正在产生数据并执行动作。为了使Kubernetes成为可行的边缘计算解决方案,Kubernetes集群需要轻松利用这些异构的“叶子设备”。但是,许多此类叶子设备太小,无法自行运行Kubernetes。Akri 是一个开源项目,将这些叶设备公开为Kubernetes集群中的资源。它利用并扩展了 Kubernetes设备插件框架,该框架是在考虑云的基础上创建的,并专注于静态资源,例如GPU和其他系统硬件。Akri采用了此框架并将其应用于边缘,边缘包含一组具有独特通信协议和间歇可用性的叶子设备。

Akri专为边缘设计,可处理叶子设备的动态创建和销毁情况。Akri提供了类似于CNI的抽象层,但是它没有对底层网络详细信息进行抽象。操作员只需要将Akri配置应用于集群,即可指定发现协议(例如ONVIF)和应部署的Pod(例如视频帧服务器)。然后剩下的事,Akri来完成。操作员还可以允许多个节点使用分支设备,从而在节点脱机的情况下提供高可用性。此外,Akri将为每种类型的叶子设备(或Akri Configuration)自动创建Kubernetes服务,从而无需使用应用程序来跟踪Pod或节点的状态。


最重要的是,Akri被构建为可扩展的。我们目前拥有ONVIF和udev发现协议,并且正在努力实现OPC UA,同时社区成员可以轻松添加更多协议。Akri支持的协议越多,Akri可以发现的叶子设备的范围越广。




Akri 工作原理


Akri的架构由四个关键组件组成:


  • Akri Configuration CRD
  • Akri Instance CRD
  • Agent( 一个设备插件实现)
  • 一个自定义控制器

您可以在第一个自定义资源Akri Configuration中对其进行命名。这告诉Akri应该寻找哪种设备。Akri的设备插件实现会使用Akri的第二个自定义资源Akri Instance查找设备并跟踪其可用性。找到设备后,Akri Controller可以帮助您使用它。它查看每个Akri实例(代表叶子设备),并部署一个“broker” Pod,该Pod知道如何连接到资源并加以利用。


关于该架构深度解析,大家可以参考官方文档。



示例


我们通过官方的一个示例,来加深对Arki的理解。

作为处理动态共享叶设备的示例,已经为ONVIF摄像机协议创建了一个实现。ONVIF是许多IP摄像机使用的标准,它定义了RTSP摄像机流的发现和访问。除了用于ONVIF的协议实现外,Akri还提供了ONVIF配置和示例代理(akri-onvif-video-broker),它充当帧服务器。使用Akri的默认ONVIF配置来发现和利用ONVIF摄像机如下所示:


  • 操作员将ONVIF配置应用于集群。
  • Akri Agent 使用ONVIF协议发现IP摄像机,并为每个发现的摄像机创建实例。
  • Akri控制器将看到实例并部署在配置中指定的akri-onvif-video-broker pod。控制器还将为每个ONVIF摄像机创建一个Kubernetes服务,并为所有ONVIF摄像机创建一个服务。

该项目由微软开源主导,可以完美配合k3s 等基于k8s实现的边缘框架。项目实现语言为rust。



点击左下角阅读原文,到 SegmentFault 思否社区 和文章作者展开更多互动和交流。

- END -

浏览 20
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报