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下可以看到设备,但是使用设备时会报错。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM