docker的privileged 与 k8s的privileged的区别
k8s privileged 起的容器里
mount|grep sys sysfs on /sys type sysfs (ro,nosuid,nodev,noexec,relatime,seclabel)
/sys是ro只读的
docker privileged 起的容器里
mount|grep sys sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime,seclabel)
/sys是rw可读可写
具体原因:sysfs is mounted as readonly for privileged container · Issue #24000 · moby/moby
k8s 需要先启动网络沙盒,sandbox 容器不是 privileged 的,主容器共用了 sandbox 的部分命名空间,所以没有将 sys 挂载成 rw,简单的做法是在 k8s yaml 里单独再挂载一下 sys
- name: sys
mountPath: /sys
/sys Sysfs文件系统是一个类似于proc文件系统的特殊文件系统,用于将系统中的设备组织成层次结构,并向用户模式程序提供详细的内核数据结构信息。其实,就是在用户态可以通过对sys文件系统的访问,来看内核态的一些驱动或者设备等。
所以/sys是用于对外设以及驱动访问的。所以如果在k8s中,挂载的设备虽然可见,但是不可写,会表现为可以看到挂载设备如npu,但是npu不可用。即/dev下可以看到设备,但是使用设备时会报错。
联系方式:emhhbmdfbGlhbmcxOTkxQDEyNi5jb20=