重要
Azure IoT 操作预览版(由 Azure Arc 启用)当前处于预览状态。 不应在生产环境中使用此预览版软件。
当正式版可用时,需要部署新的 Azure IoT Operations 安装,你将无法升级预览版安装。
有关 beta 版本、预览版或尚未正式发布的版本的 Azure 功能所适用的法律条款,请参阅 Microsoft Azure 预览版的补充使用条款。
本文可帮助你了解 Akri 服务的体系结构。 在了解 Akri 服务的核心组件之后,可以使用它们检测设备和资产,并将它们添加到 Kubernetes 群集。
Akri 服务是 Microsoft 托管的商业版 Akri,一个开源云原生计算基础 (CNCF) 项目。
核心组件
Akri 服务包含以下五个组件:
- Akri 配置是一种自定义资源,您可以在其中命名设备。 此配置会告诉 Akri 服务要查找哪种设备。
- Akri 实例是跟踪设备的可用性和使用情况的自定义资源。 每个 Akri 实例都表示一个叶子设备。
- Akri 发现处理程序可查找已配置的设备并将发现的设备通知代理。
- Akri 代理可创建 Akri 实例自定义资源。
- Akri 控制器可帮助你使用配置的设备。 控制器会识别每个 Akri 实例,然后部署一个能够连接和使用该资源的代理 Pod。
自定义资源定义
自定义资源定义 (CRD) 是一个 Kubernetes API 扩展,可用于定义新的对象类型。 有两个 Akri 服务的 CRDs:
- 配置
- 实例
Akri 配置 CRD
配置 CRD 可配置 Akri 服务。 你需要创建配置文件来描述要发现的资源,以及在一个发现资源的节点上要部署的 Pod。 有关详细信息,请参阅 Akri 配置 CRD。 CRD 架构指定了所有配置必须具有的设置,其中包括以下设置:
- 用于查找资源的发现协议。 例如 ONVIF 或 udev。
-
spec.capacity
,定义可在此资源上计划工作负载的最大节点数。 -
spec.brokerPodSpec
定义代理 Pod 以调度每个已报告的资源。 -
spec.instanceServiceSpec
,定义了一种服务,该服务提供单个稳定的端点来访问每个资源的代理 Pod 集。 -
spec.configurationServiceSpec
,该服务定义了一个单一的稳定终结点,用于访问与配置关联的所有资源的代理集合。
Akri 实例 CRD
每个 Akri 实例都代表一个对群集可见的单独资源。 例如,如果群集有五个可见的 IP 摄像头,则有五个实例。 实例 CRD 支持 Akri 服务协调和资源共享。 这些实例用于存储内部状态,不是供你编辑的。 有关详细信息,请参阅深入了解资源共享。
代理人
Akri 代理为发现的资源实现 Kubernetes 设备插件。 Akri 代理执行以下任务:
- 观察配置更改以确定要搜索的资源。
- 监视资源可用性以确定要发布的资源。 在边缘环境中,资源可用性经常发生变化。
- 当资源健康状况和可用性发生变化时,通知 Kubernetes。
这些任务与实例中存储的状态相结合,允许多个节点共享资源,同时遵守 spec.capacity
设置所定义的限制。
欲了解更多信息,请参阅代理深度解析。
发现处理程序
发现处理程序查找设备。 设备示例包括:
- 连接到节点的 USB 传感器。
- 嵌入在节点中的 GPU。
- 网络上的 IP 摄像头。
发现处理程序将所有发现的设备报告给代理。 通常有用于发现一组设备的协议实现,无论是 OPC UA 之类的网络协议还是专用协议。 发现处理程序实现在 DiscoveryHandler
中定义的 discovery.proto
服务。 发现处理程序需要向托管在 Registration
中定义的 discovery.proto
服务的代理注册。
有关详细信息,请参阅自定义发现处理程序。
控制器
Akri 控制器的目标是:
- 创建或删除用于确保资源可用性的容器和服务。
- 确保实例在任何给定时刻都与群集状态保持一致。
为了实现这些目标,控制器会:
- 留意实例变化以确定有哪些 Pod 和服务应该存在。
- 监视不再存在的实例中包含的节点。
这些任务使 Akri 控制器能够确保协议代理和 Kubernetes 服务在所有节点上运行,并公开所需的资源,同时遵守 spec.capacity
设置所定义的限制。
有关详细信息,请参阅有关如何深入了解控制器的文档。