3

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。

iyacontrol
1.4k 声望2.7k 粉丝

专注kubernetes,devops,aiops,service mesh。