RSS Kubernetes 博客 关注 Kubernetes v1.36:Kubernetes 中的用户命名空间现已正式通用(GA)。 Kubernetes v1.36 正式推出了用户命名空间(User Namespaces)的通用可用性支持。用户命名空间是 Linux 专属的一项功能,可为容器化工作负载提供增强的安全隔离。这一备受期待的里程碑使 Kubernetes 应用能够实现“无 root"级别的安全隔离。关键能力在于:通过将 hostUsers 设置为 false,可以在用户命名空间内运行具有特权的负载,同时将其限制在该命名空间中。这使得某些能力(如 CAP_NET_ADMIN)被限制在用户命名空间内,仅赋予对本地容器资源的行政管理权限。此前,容器内的进程 root 同时也是宿主机上的 root,在容器逃逸场景下构成重大安全风险。实现该功能的关键是 ID 映射挂载(ID-mapped mounts),它能在挂载时透明地重新映射 UID 和 GID,而无需更改磁盘所有权。此举解决了早期开发阶段因卷所有权更新而导致的性能问题。实施用户命名空间非常简单:只需在 Pod 规范中将 hostUsers 设为 false,无需修改容器镜像或进行复杂的配置。该功能复用了 Alpha 阶段引入的相同接口。这一进展代表了 Kubernetes SIG Node、容器运行时与 Linux 内核之间多年跨项目协作的成果。 Kubernetes v1.36: User Namespaces in Kubernetes are finally GA kubernetes.io
hostUsers设置为false,可以在用户命名空间内运行具有特权的负载,同时将其限制在该命名空间中。这使得某些能力(如CAP_NET_ADMIN)被限制在用户命名空间内,仅赋予对本地容器资源的行政管理权限。此前,容器内的进程 root 同时也是宿主机上的 root,在容器逃逸场景下构成重大安全风险。实现该功能的关键是 ID 映射挂载(ID-mapped mounts),它能在挂载时透明地重新映射 UID 和 GID,而无需更改磁盘所有权。此举解决了早期开发阶段因卷所有权更新而导致的性能问题。实施用户命名空间非常简单:只需在 Pod 规范中将hostUsers设为false,无需修改容器镜像或进行复杂的配置。该功能复用了 Alpha 阶段引入的相同接口。这一进展代表了 Kubernetes SIG Node、容器运行时与 Linux 内核之间多年跨项目协作的成果。