我有一个可行的解决方案,可以在 pod 内运行这个 veracrypt 命令:
veracrypt --text --quick --non-interactive --create /media/vera --volume-type normal --size 200M --password 123456 --hash SHA-512 --encryption AES --filesystem exFat --force
部署yml中的相关设置:
spec:
containers:
- name: api
securityContext:
capabilities:
- SYS_ADMIN
privileged: true
volumeMounts:
- name: dev
mountPath: /dev
volumes:
- name: dev
hostPath:
path: /dev
我现在的目标是移除主机/dev
挂载和privileged: true
字段以提高安全性。
我找到了一个名为更智能的设备管理器通过在部署 yml 文件的资源请求/限制部分描述所需的设备,它提供了一种访问容器内主机设备的方法。
现在,该 pod 具有功能SYS_ADMIN
、、和由智能设备管理器安装的设备以及注释。fuse
loop-control
loop[0-7]
mapper/control
container.apparmor.security.beta.kubernetes.io/<container_name>: unconfined
上面的veracrypt命令的结果:
Done: 100.000% Speed: 5.2 MiB/s Left: 0s
Error: device-mapper: create ioctl on veracrypt1 failed: Device or resource busy
Command failed.
dmsetup ls
列出一个veracrypt1
设备,执行后dmsetup remove veracrypt1
它不再在列表中。
再次执行 veracrypt 命令会导致以下结果:
Done: 100.000% Speed: 5.2 MiB/s Left: 0s
Error: No such file or directory
/dev/mapper/veracrypt1
dmsetup ls
再次显示该veracrypt1
设备并再次执行 veracrypt 命令,结果与之前相同。(Error: device-mapper: create ioctl on veracrypt1 failed
)
ls /dev/mapper/
在这个容器中不显示设备,但是它在带有安装和 的veracrypt1
容器中显示。/dev
privileged: true
--filesystem Fat
用而不是 的veracrypt 命令--filesystem exFat
可以成功执行。
Kubernetes 节点内核版本为 4.4.0-190-generic
Veracrypt 版本为 1.24-Update4
容器需要哪些其他设备、功能或其他任何东西才能成功执行示例命令?
任何帮助都将非常感激。