借助 Linux 用户命名空间来增强容器安全性
之前在 Netflix 技术博客里也介绍过,Titus[1] 是我们自研的一套容器编排系统。我们通过它来承载着公司各个部门的各种工作负载 —— 从 netflix.com 的前端 API,到机器学习训练工作负载,再到视频解码。在 Titus 里,实际运行这些工作负载的宿主机从用户的角度来看已经是被抽象了的。Titus 平台通过维护一定容量的同构节点的大池子来运行用户的工作负载,而 Titus 的调度器则会给这些工作负载做具体的分配调度。这样的抽象设计使得计算团队可以通过调度程序来调节整个舰队的可靠性、效能以及可操作性。运行工作负载的这些宿主机被称为 Titus 的 “agent”。在本文里,我们将会介绍 Titus agent 是如何利用 user namespace 来改善整个 Titus agent 舰队的整体安全性。 Titus 的多租户集群 在用户看来,一个 Titus agent 舰队即是一个同构的容量池,Titus 在内部采用的是一个蜂窝式的隔板架构,这样可以实现可扩展性,因此,整个舰队实际上是由多个单元组成。许多隔板架构基于多租户来划分单元,这里面的租户被定义成一个团队以及他们的一组应用集合。我们并没有采用这套方案,取而代之的是,我们“将这些单元划分成均衡的负载”。之所以这样做,主要是出于可靠性、可伸缩性和效率的原因。 Titus 是一套支持多租户的系统