Akri 服务体系结构

重要

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。

Akri 服务体系结构的关系图。

自定义资源定义

自定义资源定义 (CRD) 是一个 Kubernetes API 扩展,可用于定义新的对象类型。 有两个 Akri 服务 CRD:

  • 配置
  • 实例

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 服务协调和资源共享。 这些实例用于存储内部状态,不是供你编辑的。 有关详细信息,请参阅深入了解资源共享

Agent

Akri 代理为发现的资源实现 Kubernetes 设备插件。 Akri 代理执行以下任务:

  • 观察配置更改以确定要搜索的资源。
  • 监视资源可用性以确定要播发的资源。 在边缘环境中,资源可用性经常发生变化。
  • 当资源健康状况和可用性发生变化时,通知 Kubernetes。

这些任务与实例中存储的状态相结合,允许多个节点共享资源,同时遵守 spec.capacity 设置所定义的限制。

有关详细信息,请参阅深入了解代理

发现处理程序

发现处理程序查找设备。 设备示例包括:

  • 连接到节点的 USB 传感器。
  • 嵌入在节点中的 GPU。
  • 网络上的 IP 摄像头。

发现处理程序将所有发现的设备报告给代理。 通常有用于发现一组设备的协议实现,无论是 OPC UA 之类的网络协议还是专用协议。 发现处理程序实现在 discovery.proto 中定义的 DiscoveryHandler 服务。 需要使用发现处理程序向代理注册,该代理托管在 discovery.proto 中定义的 Registration 服务。

有关详细信息,请参阅自定义发现处理程序

控制器

Akri 控制器的目标是:

  • 创建或删除启用资源可用性的 Pod 和服务。
  • 确保实例在任何给定时刻都与群集状态保持一致。

为了实现这些目标,控制器会:

  • 留意实例更改以确定应存在哪些 Pod 和服务。
  • 监视不再存在的实例中包含的节点。

这些任务使 Akri 控制器能够确保协议代理和 Kubernetes 服务在所有节点上运行,并公开所需的资源,同时遵守 spec.capacity 设置所定义的限制。

有关详细信息,请参阅有关如何深入了解控制器的文档。