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),前提是文件系统路径对容器可见(例如,通过卷挂载暴露宿主机路径)。
posted @ 2025-06-13 23:24  wanghongwei-dev  阅读(29)  评论(0)    收藏  举报