单租户 Titus:在多云租户容器平台上的虚拟机级隔离
Netflix 利用基于 Kubernetes 的 Titus 平台,每周在多个 AWS 区域托管数百万个容器。Titus 提供托管式容器体验,负责主机、集群和内核的维护。该平台专为多租户设计,能够高效地在不同团队的众多容器间共享主机。然而,这种共享内核模型对于高要求的实时系统而言,因硬件资源争用而面临挑战。这些问题源于容器共享物理资源(如末级缓存和内存带宽),而 cgroups 无法对其进行完全隔离。噪声邻居可能耗尽这些共享资源,导致性能下降和尾部延迟增加。网络带宽与数据包处理、存储 IOPS 以及各种内核级操作也会造成干扰。有状态的高吞吐量流媒体作业尤其容易受到这些间歇性干扰的影响,可能导致显著的服务中断。为了解决这一问题,Netflix 探索了多种隔离策略,包括持续优化共享内核、使用微虚拟机(microVMs)、gVisor,以及直接在 EC2 上运行容器。共享内核优化虽能带来渐进式改进,但无法彻底解决共享硬件的结构性问题。微虚拟机和 gVisor 提供了更强的隔离性,但伴随着性能开销、运营复杂性以及硬件限制,使其吸引力下降。直接在 EC2 上运行容器则将运营负担转回应用团队,抵消了 Titus 的优势。最终,Netflix 选择将单租户 Titus 集成到现有的 Titus 平台中,为特定工作负载提供专用虚拟机。这种方法在提供完整虚拟机隔离的同时,保留了熟悉的 Titus API 和托管式体验。计算/平台团队仍负责底层 EC2 实例的运维与打补丁,确保了运营模型的一致性。该方案提供了必要的资源与性能隔离,同时避免了引入不必要的安全隔离功能或带来显著的运营开销。