Kubernetes节点设备端口(USB)映射到POD?或者 Swarm 服务——设备映射

Posted

技术标签:

【中文标题】Kubernetes节点设备端口(USB)映射到POD?或者 Swarm 服务——设备映射【英文标题】:Kubernetes node Device port (USB) mapping to POD? Or Swarm service --device mapping 【发布时间】:2017-07-30 14:15:31 【问题描述】:

是否可以将工作节点的设备端口(USB 端口)映射到 POD? 类似于docker create --device=/dev/ttyACM0:/dev/ttyACM0

有可能吗?我检查了参考文档,但找不到任何东西。

在 Docker 服务中,是否可以将--device port 映射到服务容器(如果我只运行 1 个容器)?

【问题讨论】:

【参考方案1】:

这似乎是不可能的。 v1.Container 对象的相关 API 定义文档不包含任何容器引擎特定参数或传递给容器引擎 (click) 参数的任何参数。

此外,命令式速记 kubectl run ... 不提供任何传递给容器引擎 (here's the documentation) 的参数。

虽然这不能解决您的问题,但我希望我的回答仍然可以帮助您在文档的帮助下回答类似的问题。

【讨论】:

是的,我在发布之前浏览了这些文档。这就是我所理解的,而 docker run --device=.... 允许将设备端口映射到容器。但 Kubernetes 没有。码头服务也没有。只有在启动单个容器时才有可能。一定有道理。您的回答仍然可以帮助我看到第二种意见。 .非常感谢。 :) 暂时没有。即使很难你也可以做到docker service create --mount source=/dev/something,target=/dev/something,type=bind ... 不支持--privilege 也不支持--cap-add(请参阅github.com/docker/docker/issues/24862)【参考方案2】:

你实际上可以让它工作。您需要以特权运行容器并使用这样的 hostPath:

  containers:
  - name: acm
    securityContext:
      privileged: true
    volumeMounts:
    - mountPath: /dev/ttyACM0
      name: ttyacm
  volumes:
  - name: ttyacm
    hostPath:
      path: /dev/ttyACM0

【讨论】:

非常感谢。我现在正在尝试。有没有机会你也知道 docker 服务的任何技巧? :) 问候。 人们可能希望在带有hostPath 的卷上指定type: CharDevicetype: BlockDevice,以便您可以进行一些最小的配置检查并明确说明开发人员的意图。

以上是关于Kubernetes节点设备端口(USB)映射到POD?或者 Swarm 服务——设备映射的主要内容,如果未能解决你的问题,请参考以下文章

Linux 系统下USB端口映射

Docker&Kubernetes ❀ Docker网络模式与端口映射使用方法与相关解释

如何解决Linux下USB设备节点名不固定问题

供应虚拟机没有usb端口和无法识别映射usb解决方案

通过ssh连接到越狱iPhone

串口USB单一映射及重命名