Kubernetes pod 中的 Veracrypt exFat

Kubernetes pod 中的 Veracrypt exFat

我有一个可行的解决方案,可以在 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、、和由智能设备管理器安装的设备以及注释。fuseloop-controlloop[0-7]mapper/controlcontainer.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容器中显示。/devprivileged: true

--filesystem Fat用而不是 的veracrypt 命令--filesystem exFat可以成功执行。

Kubernetes 节点内核版本为 4.4.0-190-generic
Veracrypt 版本为 1.24-Update4

容器需要哪些其他设备、功能或其他任何东西才能成功执行示例命令?

任何帮助都将非常感激。

相关内容