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 个关注者

Apache-2.0

170KB
4K SLoC

Akri Logo

Slack channel #akri Rust Version Kubernetes Version codecov CII Best Practices

Check Rust Tarpaulin Code Coverage Build Controller Build Agent Test K3s, Kubernetes, and MicroK8s


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 Architecture

使用演示快速入门

尝试Akri的端到端演示,以查看Akri发现模拟视频摄像头并显示这些摄像头的视频。它包括K8s集群设置的说明。如果您想在Raspberry Pi 4集群上执行演示,请参阅Raspberry Pi 4演示

文档

请参阅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