【问题标题】:Kubernetes Pod serial communication ProblemKubernetes Pod 串口通信问题
【发布时间】:2020-01-09 03:36:47
【问题描述】:

当一个串口被创建在一个映射到一个操作系统为 Linux 的主机上的 docker 容器中时,这是通过 ‘—device’ 标志来完成的;

例如docker run -dit --device=/dev/ttyUSB0 --name SerialTest <docker image>

我们想知道如何在 Kubernetes 中映射 POD 的串行端口。下图展示了在 Rancher 2.x 中部署应用的 Pod 配置。

(https://i.imgur.com/RHhlD4S.png)

在节点调度中,我们已经将 pod 配置为通过串口分配到特定节点。此外,当然不可能将串行端口映射到卷挂载。所以,我想提出一个问题,因为我在我的 Rancher 2.x 配置中找不到与 docker 的 ‘—device’ 标志相关的任何内容。

(https://imgur.com/wRe7Eds.png) "Rancher 2.x 中的应用配置"

(https://imgur.com/Lwil7cz.png) "串口设备连接主机"

(https://imgur.com/oWeW0LZ.png) "已部署 Pod 中容器的卷挂载状态"

(https://imgur.com/GKahqY0.png) "运行使用串行端口的 .NET 应用程序时的错误日志"

【问题讨论】:

  • 你能提供你的 pod 的 yaml 吗?

标签: kubernetes rancher


【解决方案1】:

基于first diagram 的目标:Kubernetes 抽象涵盖 pod 与外部世界(就此而言,在节点外部)之间的通信,旨在处理至少第 2 层通信(veth,就像在节点间/pod 间通信中一样)。

没有详细说明为什么无法在pod中映射设备卷,所以我想知道您是否尝试过使用特权容器like in this reference

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

Rancher 可以start containers in privileged mode

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-20
    • 1970-01-01
    • 2019-04-02
    • 2020-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-26
    相关资源
    最近更新 更多