【发布时间】:2020-02-28 06:51:12
【问题描述】:
我需要从 Kubernetes 中运行的 docker 容器访问 USB 设备。为了做到这一点,我需要有一个里面有驱动程序的图像。我还需要保证我安装了 OpenJDK 8 64 位来运行该应用程序。我正在使用 OpenJDK:alpine 基础映像这是我在主机上的安装方式:
sudo apt-get install pcscd
sudo apt-get install pcsc-tools // same as pcsc-lite
// For OMNIKEY for driver Then unpack the file and run the installer:
cd /home/cccam/ifdokccid_lnx_x64-3.7.0/
chmod 755 install
sudo ./install
在没有安装映像中的驱动程序并使用 hostPath 卷访问的情况下尝试过,但它不起作用。
【问题讨论】:
-
嗨,平均熊,欢迎来到 SO。您是否使用
securityContext: privileged: true运行容器,否则我不相信 docker 允许访问主机设备。您是否尝试过使用docker但在 kubernetes 之外访问该 USB 设备,以确保您尝试的操作是可能的?最后,“不起作用”是什么意思——错误?什么都没发生?挂起?火花从您的以太网端口飞出?什么? -
好问题。所以基本上它看不到读卡器。现在,除非使用 OpenJDK 8 64 位 JVM,否则这种行为也会发生在主机上。例如,如果我使用 Oracle 8 JVM 并在主机上独立运行,它也不会到达 OMNIKey 读卡器。原因是我使用 javax.cardio 进行访问,它因 JVM 而异,支持的 JVM 不同。
-
话虽如此,我从一些经验丰富的 kubernetes 人员那里听说,容器中必须有任何非内核驱动程序,而不仅仅是主机上。
-
我建议编辑您的问题,将 cmets 中的一些详细信息添加到问题本身中。如果问题是您看不到相应的字符设备,您是如何尝试使其对容器/pod 可见的?您能否包含您正在使用的
docker run命令或 Kubernetes 部署规范? SO 帮助中心的How to Ask 有更多关于编写好问题的建议。
标签: docker kubernetes jib