12 Akri #
Akri 是一个 CNCF 沙箱项目,旨在发现叶设备并将其呈现为 Kubernetes 原生资源。它还允许为每个发现的设备调度一个 Pod 或作业。设备可以在节点本地,也可以联网,并可以使用多种协议。
https://docs.akri.sh 上提供了 Akri 的上游文档
12.1 SUSE Edge 如何使用 Akri? #
Akri 目前在 SUSE Edge 堆栈中以技术预览的形式提供。
每当需要发现叶设备以及针对叶设备调度工作负载时,都可以使用 Edge 堆栈中包含的 Akri。
12.1.1 安装 Akri #
Akri 在 Edge Helm 储存库中作为 Helm chart 提供。建议的 Akri 配置方法是使用给定的 Helm chart 部署不同的组件(代理、控制器、发现处理程序),然后使用您偏好的部署机制部署 Akri 的配置 CRD。
12.1.2 配置 Akri #
使用 akri.sh/Configuration
对象来配置
Akri,该对象包含有关如何发现设备,以及发现了匹配的设备时要执行哪种操作的所有信息。
下面列出了示例配置的明细,其中解释了所有字段:
apiVersion: akri.sh/v0
kind: Configuration
metadata:
name: sample-configuration
spec:
此部分描述发现处理程序的配置,您必须指定处理程序的名称(作为 Akri chart 一部分提供的处理程序包括
udev
、opcua
、onvif
)。discoveryDetails
与特定的处理程序相关,有关其配置方法,请参见处理程序的文档。
discoveryHandler:
name: debugEcho
discoveryDetails: |+
descriptions:
- "foo"
- "bar"
此部分定义要为每个已发现设备部署的工作负载。该示例显示了 brokerPodSpec
中
Pod
配置的最低版本,在此处可以使用 Pod 规范的所有常规字段。其中还显示了
resources
部分中用于请求设备的 Akri 特定语法。
您也可以使用作业来代替 Pod,方法是改用 brokerJobSpec
键,并在其中提供作业的规范部分。
brokerSpec:
brokerPodSpec:
containers:
- name: broker-container
image: rancher/hello-world
resources:
requests:
"{{PLACEHOLDER}}" : "1"
limits:
"{{PLACEHOLDER}}" : "1"
这两个部分显示如何配置 Akri 以便为每个中介程序部署一个服务
(instanceService
),或指向所有中介程序
(configurationService
)。这些部分包含与常规服务相关的所有元素。
instanceServiceSpec:
type: ClusterIp
ports:
- name: http
port: 80
protocol: tcp
targetPort: 80
configurationServiceSpec:
type: ClusterIp
ports:
- name: https
port: 443
protocol: tcp
targetPort: 443
brokerProperties
字段是一个键/值存储,它将作为附加环境变量公开给请求已发现设备的任何 Pod。
capacity 是已发现设备的并发用户的允许数量。
brokerProperties:
key: value
capacity: 1
12.1.3 编写和部署更多发现处理程序 #
如果现有的发现处理程序无法涵盖您的设备使用的协议,您可以遵循此指南编写自己的发现处理程序。
12.1.4 Akri Rancher 仪表板扩展 #
Akri 仪表板扩展允许您使用 Rancher 仪表板用户界面来管理和监控叶设备,并在发现这些设备后运行工作负载。
安装扩展后,您可以使用群集资源管理器导航到任何已启用 Akri 的受管群集。在 Akri 导航组下,可以看到“Configurations”(配置)和“Instances”(实例)部分。
配置列表提供了有关配置发现处理程序和实例数量的信息。单击名称会打开配置细节页面。
您还可以编辑或创建新的配置。扩展允许您选择发现处理程序、设置中介程序 Pod 或作业、配置配置和实例服务,以及设置配置容量。
实例列表中会列出已发现的设备。
单击实例名称会打开细节页面,在其中可以查看工作负载和实例服务。