Kubernetes Q/A整理
Q:Pod 内容器默认共享的 Namespace 有哪些?
A:Pod 内容器默认共享:
- 网络(Network)Namespace ✅:共享 IP、端口等,支持 localhost 通信。
- UTS Namespace ✅:共享主机名(hostname)。
- IPC Namespace ✅:共享信号量、消息队列等 IPC 资源。
- ❌ PID Namespace 默认不共享:每个容器拥有独立的进程树(PID 隔离),不共享进程 ID 空间。除非通过 shareProcessNamespace: true 显式共享。
Q:Pod 与宿主机默认隔离的 Namespace 有哪些?
A:默认隔离的 Namespace 包括:
- Mount Namespace ✅:隔离文件系统挂载点。
- UTS Namespace ✅:隔离主机名。
- IPC Namespace ✅:隔离进程间通信。
- 网络(Network)Namespace ✅:隔离网络栈。
- PID Namespace ✅:隔离进程 ID 空间。
- ❌ 用户(User)Namespace:默认不启用隔离:容器内 UID 直接对应宿主机 UID(无映射)。需显式配置:启用 User Namespace 后,通过 UID 映射实现隔离。
Q:容器内 UID=0 与宿主机 root 权限的关系等同吗?
A:容器内 UID=0 不等同于宿主机 root 权限。
- 隔离机制:默认无 User Namespace 隔离,但通过 Capabilities 机制限制权限(如 CAP_SYS_ADMIN 默认被移除)。
- 安全策略:Seccomp、AppArmor 等进一步限制容器操作。
- 特权模式例外:仅当 privileged: true 时,容器获得近似宿主机 root 的权限。
Q:privileged 模式下非 root 用户的文件访问权限是什么?
A:当 Pod 设置 privileged: true 时,权限本质:
- 容器获得所有 Linux Capabilities(如 CAP_DAC_OVERRIDE 可忽略文件权限检查),解除设备访问限制(如直接访问 /dev 设备)。
- 在特权模式下,非 root 用户(如 UID=1000)拥有所有 Capabilities,因此可以忽略文件权限(DAC),直接访问任何文件(如宿主机上的 /etc/shadow),前提是文件系统路径对容器可见(例如,通过卷挂载暴露宿主机路径)。
作者:wanghongwei
版权声明:本作品遵循<CC BY-NC-ND 4.0>版权协议,商业转载请联系作者获得授权,非商业转载请附上原文出处链接及本声明。

浙公网安备 33010602011771号