在使用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)“已将串行端口设备连接到HOST PC”
(https://imgur.com/oWeW0LZ.png)“已部署的容器中容器的卷安装状态”
(https://imgur.com/GKahqY0.png)“运行使用串行端口的.NET应用程序时的错误日志”
答案 0 :(得分:0)
基于first diagram的目标:涵盖Pod与外界(就此而言,在节点外部)之间的通信的Kubernetes抽象旨在至少处理第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。