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。