11个版本 (6个重大更新)
0.12.20 | 2024年3月18日 |
---|---|
0.12.9 | 2023年10月2日 |
0.10.4 | 2023年4月18日 |
0.8.23 | 2022年10月25日 |
0.0.35 | 2020年10月16日 |
#210 在 硬件支持
1,089 个星标 & 43 个关注者
170KB
4K SLoC
Akri是云原生计算基金会(CNCF)沙箱项目。
Akri允许您轻松地将异构的叶子设备(如IP摄像头和USB设备)作为Kubernetes集群中的资源暴露,同时支持暴露嵌入式硬件资源,如GPU和FPGA。Akri会持续检测可以访问这些设备的节点,并据此调度工作负载。
简单来说:您取其名,Akri即找其用。
为何选择Akri
在边缘,有多种传感器、控制器和MCU类设备正在生成数据和执行操作。为了使Kubernetes成为一个可行的边缘计算解决方案,这些异构的“叶设备”需要能够被Kubernetes集群轻松利用。然而,许多叶设备太小,无法运行Kubernetes。Akri是一个开源项目,它将这些叶设备作为Kubernetes集群中的资源暴露出来。它利用并扩展了Kubernetes的设备插件框架,该框架旨在云环境,并侧重于宣传静态资源,如GPU和其他系统硬件。Akri将此框架应用于边缘,在那里有各种具有独特通信协议和间歇可用性的叶设备。
Akri专为边缘设计,处理叶设备的动态出现和消失。Akri提供了一个类似于CNI的抽象层,但它不是抽象底层的网络细节,而是移除寻找、利用和监控叶设备可用性的工作。操作员只需将Akri配置应用到集群中,指定用于发现设备的发现处理器(例如ONVIF)以及发现后应部署的Pod(例如视频帧服务器)。然后,Akri完成剩余的工作。操作员还可以允许多个节点利用叶设备,从而在节点离线的情况下提供高可用性。此外,Akri将自动为每种类型的叶设备(或Akri配置)创建Kubernetes服务,从而无需应用程序跟踪Pod或节点的状态。
最重要的是,Akri是可扩展的。Akri目前支持ONVIF、udev和OPC UA发现处理器,但社区成员如您可以轻松添加更多。Akri可以支持的协议越多,它可以发现的叶设备种类就越广泛。我们期待与您合作,构建一个更加互联的边缘。
Akri的工作原理
Akri的架构由五个关键组件组成:两个自定义资源、发现处理器、代理(设备插件实现)和自定义控制器。第一个自定义资源,Akri配置,是您给它起名字的地方。这告诉Akri它应该寻找哪种设备。在此阶段,Akri找到了它!Akri的发现处理器寻找设备并向代理报告发现的设备。然后,代理创建Akri的第二个自定义资源,Akri实例,以跟踪设备的可用性和使用情况。找到您的设备后,Akri控制器帮助您使用它。它看到每个Akri实例(代表叶设备)并部署一个(代理)Pod,该Pod知道如何连接到资源并利用它。
使用演示快速入门
尝试Akri的端到端演示,以查看Akri发现模拟视频摄像头并显示这些摄像头的视频。它包括K8s集群设置的说明。如果您想在Raspberry Pi 4集群上执行演示,请参阅Raspberry Pi 4演示。
文档
请参阅Akri的文档网站,其中包括
- 使用Helm部署Akri的用户指南
- Akri架构
- 如何构建Akri
- 如何扩展Akri以支持尚未支持的协议.
- 如何创建代理以利用发现的设备。若要为Akri的文档做出贡献,请访问Akri的文档仓库。
路线图
Akri被设计为可扩展的。我们目前有ONVIF、udev、OPC UA Discovery处理器,但作为一个社区,我们希望持续支持更多协议。我们创建了一个发现处理器实现路线图,以便优先开发发现处理器。如果您认为我们应该优先考虑某个协议,请创建一个issue,或者更好的是,贡献实现!
要了解Akri还有哪些计划,请参考我们的路线图。
社区、贡献和支持
您可以通过#akri频道在Kubernetes Slack联系Akri社区,或者加入我们每月第一个星期二上午9:00 PT举行的社区会议。
Akri欢迎贡献,无论是通过创建新issue还是pull request。请参阅我们的贡献文档了解如何开始!
许可
本项目遵循Apache 2.0许可证。
依赖
~76MB
~1M SLoC