【发布时间】:2021-07-27 18:34:08
【问题描述】:
我想从 pod 开始 RAID integrity check。为此,我需要在 /sys/block/mdX/md/sync_action 文件中写入一些数据。我不想使用特权容器。所以,到目前为止,我已经尝试过以下事情。
-
为用户设置访问控制并设置在securityContext下面
securityContext: runAsUser: some-user-id runAsGroup: some-user-gid但是,setfacl 不适用于此文件(相同的命令适用于我系统中的其他文件)
[root@hpe ~]# setfacl -m 'u:some-user:rw' /sys/class/block/md0/md/sync_action setfacl: /sys/class/block/md0/md/sync_action: Invalid argument -
更改文件的所有权并使用上述 securityContext 运行 pod
[root@hpe]# ls -l /sys/class/block/md0/md/sync_action -rw-r--r-- 1 some-user root 4096 Jul 26 12:16 /sys/class/block/md0/md/sync_action但是,这也行不通
[root@hpe ~]# kubectl exec -it centos -- bash bash-4.2$ ls -l /sys/class/block/md0/md/sync_action -rw-r--r-- 1 997 root 4096 Jul 27 03:28 /sys/class/block/md0/md/sync_action bash-4.2$ echo "check" > /sys/class/block/md0/md/sync_action bash: /sys/class/block/md0/md/sync_action: Read-only file system
【问题讨论】:
-
这看起来不像是通常在 Kubernetes 中运行的工作负载;通常容器化进程无法直接访问主机硬件设备。 (如果您可以直接访问主机硬盘,那么您可以绕过几乎所有其他关于您的进程可以做什么的限制。)直接在主机系统上而不是在容器中运行它是否更有意义?