You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Akri中根据udev规则启动不同BrokerPod并传递额外信息

解决Akri多udev规则对应不同BrokerPod的配置问题

问题根源

你当前的配置逻辑有误:Akri的单个UdevConfiguration资源中,udevRules数组是用来定义多个匹配规则(逻辑或关系,满足任意一个规则即触发匹配),而非绑定多套不同的BrokerPod模板。你试图在同一个Configuration里用数组关联不同规则与镜像,会导致BrokerPod配置冲突,进而引发容器启动异常。

要实现不同udev规则对应不同容器,需创建多个独立的UdevConfiguration资源,每个资源对应一套规则、一个BrokerPod模板,以及专属的brokerProperties。

正确配置示例

方式1:通过Helm--set参数创建多Configuration

helm repo add akri-helm-charts https://project-akri.github.io/akri/
helm install akri akri-helm-charts/akri \
    $AKRI_HELM_CRICTL_CONFIGURATION \
    # 第一个Configuration:匹配product=AAAA,使用默认nginx镜像
    --set udev.configurations[0].enabled=true \
    --set udev.configurations[0].name=akri-udev-aaaa \
    --set udev.configurations[0].discoveryDetails.udevRules='ATTR{product}==\"AAAA\"' \
    --set udev.configurations[0].brokerPod.image.repository=nginx \
    --set udev.configurations[0].brokerProperties.ruleTag="aaaa-device" \
    --set udev.configurations[0].brokerProperties.deviceType="video" \
    # 第二个Configuration:匹配product=BBBB,使用nginx:1.24镜像
    --set udev.configurations[1].enabled=true \
    --set udev.configurations[1].name=akri-udev-bbbb \
    --set udev.configurations[1].discoveryDetails.udevRules='ATTR{product}==\"BBBB\"' \
    --set udev.configurations[1].brokerPod.image.repository=nginx \
    --set udev.configurations[1].brokerPod.image.tag=1.24 \
    --set udev.configurations[1].brokerProperties.ruleTag="bbbb-device" \
    --set udev.configurations[1].brokerProperties.deviceType="video"

方式2:使用values.yaml文件(更易维护)

创建akri-custom-values.yaml:

udev:
  discovery:
    enabled: true
  configurations:
    - enabled: true
      name: akri-udev-aaaa
      discoveryDetails:
        udevRules: 'ATTR{product}==\"AAAA\"'
      brokerPod:
        image:
          repository: nginx
          tag: latest
      brokerProperties:
        ruleTag: "aaaa-device"
        customAttr: "aaaa-specific"
    - enabled: true
      name: akri-udev-bbbb
      discoveryDetails:
        udevRules: 'ATTR{product}==\"BBBB\"'
      brokerPod:
        image:
          repository: nginx
          tag: 1.24
      brokerProperties:
        ruleTag: "bbbb-device"
        customAttr: "bbbb-specific"

执行安装命令:

helm install akri akri-helm-charts/akri \
    $AKRI_HELM_CRICTL_CONFIGURATION \
    -f akri-custom-values.yaml

让BrokerPod获取对应规则信息

配置的brokerProperties会自动注入到BrokerPod的环境变量中,变量名格式为AKRI_BROKER_PROPERTY_<KEY>(大写,下划线替换特殊字符)。例如配置的ruleTag会变成环境变量AKRI_BROKER_PROPERTY_RULETAG,容器内可直接读取这些变量识别对应的udev规则。

验证配置

  1. 查看创建的UdevConfiguration:
kubectl get udevconfigurations
  1. 查看发现的设备实例:
kubectl get akrii
  1. 验证BrokerPod的环境变量:
kubectl exec -it <目标BrokerPod名称> -- env | grep AKRI_BROKER_PROPERTY

内容的提问来源于stack exchange,提问作者Klaus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 03:28:31