Akri 使您能够轻松地将异构叶子设备(例如IP摄像机和USB设备)公开为Kubernetes集群中的资源,同时还支持公开嵌入式硬件资源(例如GPU和FPGA)。 Akri不断检测有权访问这些设备的节点,并根据这些节点调度工做负载。git
在边缘,有各类各样的传感器,控制器和MCU类设备正在产生数据并执行动做。为了使Kubernetes成为可行的边缘计算解决方案,Kubernetes集群须要轻松利用这些异构的“叶子设备”。可是,许多此类叶子设备过小,没法自行运行Kubernetes。 Akri 是一个开源项目,将这些叶设备公开为Kubernetes集群中的资源。它利用并扩展了 Kubernetes设备插件框架,该框架是在考虑云的基础上建立的,并专一于静态资源,例如GPU和其余系统硬件。 Akri采用了此框架并将其应用于边缘,边缘包含一组具备独特通讯协议和间歇可用性的叶子设备。github
Akri专为边缘设计,可处理叶子设备的动态建立和销毁状况。 Akri提供了相似于CNI的抽象层,可是它没有对底层网络详细信息进行抽象。操做员只须要将Akri配置应用于集群,便可指定发现协议(例如ONVIF)和应部署的Pod(例如视频帧服务器)。而后剩下的事,Akri来完成。操做员还能够容许多个节点使用分支设备,从而在节点脱机的状况下提供高可用性。此外,Akri将为每种类型的叶子设备(或Akri Configuration)自动建立Kubernetes服务,从而无需使用应用程序来跟踪Pod或节点的状态。服务器
最重要的是,Akri被构建为可扩展的。咱们目前拥有ONVIF和udev发现协议,而且正在努力实现OPC UA,同时社区成员能够轻松添加更多协议。 Akri支持的协议越多,Akri能够发现的叶子设备的范围越广。网络
Akri的架构由四个关键组件组成:架构
您能够在第一个自定义资源Akri Configuration中对其进行命名。这告诉Akri应该寻找哪一种设备。 Akri的设备插件实现会使用Akri的第二个自定义资源Akri Instance查找设备并跟踪其可用性。找到设备后,Akri Controller能够帮助您使用它。它查看每一个Akri实例(表明叶子设备),并部署一个“broker” Pod,该Pod知道如何链接到资源并加以利用。框架
关于该架构深度解析,你们能够参考官方文档。ide
咱们经过官方的一个示例,来加深对Arki的理解。spa
做为处理动态共享叶设备的示例,已经为ONVIF摄像机协议建立了一个实现。 ONVIF是许多IP摄像机使用的标准,它定义了RTSP摄像机流的发现和访问。除了用于ONVIF的协议实现外,Akri还提供了ONVIF配置和示例代理(akri-onvif-video-broker
),它充当帧服务器。 使用Akri的默认ONVIF配置来发现和利用ONVIF摄像机以下所示:插件
akri-onvif-video-broker
pod。控制器还将为每一个ONVIF摄像机建立一个Kubernetes服务,并为全部ONVIF摄像机建立一个服务。该项目由微软开源主导,能够完美配合k3s 等基于k8s实现的边缘框架。项目实现语言为rust。