Kubernetes Pod 串行通信问题

Kubernetes Pod serial communication Problem

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

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

我们想知道 PODs 如何在 Kubernetes 中映射串口。下图是要部署在Rancher中的应用的Pod配置 2.x.

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

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

(https://imgur.com/wRe7Eds.png) "Application configuration in Rancher 2.x"

(https://imgur.com/Lwil7cz.png) "Serial port device connected to the HOST PC"

(https://imgur.com/oWeW0LZ.png) "Volume Mount Status of Containers in Deployed Pods"

(https://imgur.com/GKahqY0.png) "Error log when running a .NET application that uses a serial port"

基于 first diagram 的目标:Kubernetes 抽象涵盖了 pod 与外部世界(就此而言,节点外部)之间的通信,旨在至少处理第 2 层通信(veth,如inter-node/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