9.4. 部署使用通用设备的应用程序


在 MicroShift 中配置并启用通用设备插件(GDP)后,您可以部署 Kubernetes 工作负载,如 pod、部署或 StatefulSets,它请求访问您公开的主机设备。设备在容器内可用,无需 pod 使用升级的特权运行。

先决条件

  • 已安装 MicroShift。
  • 您已启用并配置了 GDP。
  • 已安装 OpenShift CLI (oc)。

流程

  1. Pod 规格中定义设备请求:

    apiVersion: v1
    kind: Pod
    metadata:
      name: device-app
    spec:
      containers:
      - name: container
        image: <your_application_image> 
    1
    
        command: ["/path/to/your/app"] 
    2
    
        args: ["--device_path=/dev/video0"] 
    3
    
        resources:
          limits: 
    4
    
            device.microshift.io/video: 1 
    5
    
        securityContext: 
    6
    
          allowPrivilegeEscalation: false
          capabilities:
            drop: ["ALL"]
          runAsNonRoot: true
          seccompProfile:
            type: "RuntimeDefault"
    Copy to Clipboard Toggle word wrap
    1
    使用容器镜像替换。
    2
    使用应用程序的命令替换。
    3
    例如,您的应用程序如何使用该设备。
    4
    资源名称必须遵循模式 device.microshift.io/<device_name&gt;,其中 < device_ name > 与您在配置文件中指定的名称匹配。
    5
    对一个视频设备实例的请求。
    6
    使用最小特权值定义和配置,以确保容器只有所需的权限,如访问设备文件,以及限制容器的其他功能。
  2. 运行以下命令,将清单应用到 MicroShift 节点来部署 Kubernetes 工作负载:

    $ oc apply -f <your-workload-manifest.yaml> 
    1
    Copy to Clipboard Toggle word wrap
    1
    <your_workload_manifest > 替换为工作负载清单的名称。

结果

pod 运行后,指定的主机设备将位于其原始路径上,或者在容器内的 mountPath (如果指定)。然后,应用程序可以与它交互,就像它是本地设备一样。

例如,如果您请求了 device.microshift.io/serial,它映射到 /dev/ttyUSB*,则应用程序可能会找到位于 /dev/ttyUSB0 的设备,或容器中的类似路径。

验证

  • 通过在运行的 pod 中运行以下命令来验证设备访问:

    $ oc exec -it <pod_name> -- ls -l /dev/video0 
    1
    Copy to Clipboard Toggle word wrap
    1
    <pod_name > 替换为 pod 的名称。
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2026 Red Hat