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。