如何向 akri 中的 BrokerPod 提供附加信息,或根据 udev 规则启动不同的 BrokerPod

问题描述 投票:0回答:1

我想根据 udev 规则在 akri 中启动自定义 Brokerpod,并希望为 BrokerPod 提供启动 udev 规则的附加信息。我尝试了这样的方法,但这似乎不起作用。

helm repo add akri-helm-charts https://project-akri.github.io/akri/
helm install akri akri-helm-charts/akri \
    $AKRI_HELM_CRICTL_CONFIGURATION \
    --set udev.discovery.enabled=true \
    --set udev.configuration.enabled=true \
    --set udev.configuration.name=akri-udev-video \
    --set udev.configuration.discoveryDetails.udevRules[0]='ATTR{product}=="AAAA"' \
    --set udev.configuration.brokerPod.image.repository[0]=nginx \
    --set udev.configuration.discoveryDetails.udevRules[1]='ATTR{product}=="BBBB"' \
    --set udev.configuration.brokerPod.image.repository[1]=nginx:1.24

这会启动两个 akri 实例,我可以使用 kubectl get akrii 看到它,但作为示例的 nginx 似乎没有正确运行。如果我只启动一条规则,我就可以进入 nginx 容器。

helm repo add akri-helm-charts https://project-akri.github.io/akri/
helm install akri akri-helm-charts/akri \
    $AKRI_HELM_CRICTL_CONFIGURATION \
    --set udev.discovery.enabled=true \
    --set udev.configuration.enabled=true \
    --set udev.configuration.name=akri-udev-video \
    --set udev.configuration.discoveryDetails.udevRules='ATTR{manufacturer}=="manufacturer_of_AAAA_and_BBBB"' \
    --set udev.configuration.brokerPod.image.repository=nginx

但目标是启动不同的容器,并根据 udev 规则赋予brokerProperties。

kubernetes kubernetes-helm
1个回答
0
投票

要实现在 Akri 中启动不同自定义 BrokerPod 的目标(根据 udev 规则)并向这些 BrokerPod 传递附加信息,您将需要修改您的 Helm Chart 配置。
关键是在 Akri 中正确设置 udev 配置,以根据 udev 规则 匹配特定设备,并相应地自定义 brokerPod 配置

+---------------------------------------------------------------+
|                          Kubernetes Cluster                   |
|                                                               |
|   +-------------------+           +----------------------+    |
|   |  Akri Controller  |<----------|     Broker Pods      |    |
|   +-------------------+           +----------------------+    |
|              |                              |                 |
|              |    Discovers Devices         |                 |
|              |    Matching udev Rules  /----+----\            |
|              |                         |         |            |
|   +-------------------+      +-----------+     +------------+ |
|   |   udev Discovery  |----->| Broker A  |     | Broker B   | |
|   |    Configuration  |      +-----------+     +------------+ |
|   +-------------------+             |                |        |
|              |                      |                |        |
|              |    Matches Devices   |                |        |
|              |    Based on Rules    |                |        |
|   +-------------------+             |                |        |
|   |   udev Rule 1     |-------------+                |        |
|   |   udev Rule 2     |------------------------------+        |
|   +-------------------+                                       |
+---------------------------------------------------------------+

首先,定义多个 udev 配置,每个配置根据您的 udev 规则针对一组特定的设备。每个配置都应指定在发现与其 udev 规则匹配的设备时要部署的不同的brokerPod。

然后,为每个udev规则定制brokerpod:对于每个udev配置,指定不同的brokerPod镜像或配置。这确保了不同的brokerpod根据它们对应的设备启动。

要将附加信息传递给brokerpod,例如哪个udev规则触发了它的启动,您可以使用环境变量或Kubernetes和Akri支持的其他配置方法。

首先,定义多个 udev 配置,每个配置根据您的 udev 规则针对一组特定的设备。每个配置都应指定在发现与其 udev 规则匹配的设备时要部署的不同的brokerPod。

然后,为每个udev规则定制brokerpod:对于每个udev配置,指定不同的brokerPod镜像或配置。这确保了不同的brokerpod根据它们对应的设备启动。

要将附加信息传递给brokerpod,例如哪个udev规则触发了它的启动,您可以使用环境变量或Kubernetes和Akri支持的其他配置方法。

您的 Helm 图表需要进行调整以反映这些多种配置。这可能看起来像下面这样(为了说明而简化):

udev:
    discovery:
    enabled: true
    configuration:
    - name: akri-udev-rule1
        discoveryDetails:
        udevRules: ['ATTR{product}=="AAAA"']
        brokerPod:
        image:
            repository: custom-image-for-rule1
    - name: akri-udev-rule2
        discoveryDetails:
        udevRules: ['ATTR{product}=="BBBB"']
        brokerPod:
        image:
            repository: custom-image-for-rule2

将此修改后的 Helm 图表部署到您的 Kubernetes 集群。然后,Akri 将根据其发现的符合指定 udev 规则的设备部署不同的 BrokerPod。

如果 BrokerPod 未按预期运行,请检查 Akri 控制器和 BrokerPod 的日志中是否有任何错误消息。 (

kubectl get pods
kubectl logs <broker-pod-name>
kubectl describe pod <broker-pod-name>
)

© www.soinside.com 2019 - 2024. All rights reserved.