Netflix 如何借助 Kueue 简化批处理计算
Netflix 正将其计算基础设施向 Kubernetes 原生模型过渡,并将 Kueue 等组件集成到其 Titus 平台中。作为一款云原生任务队列系统,Kueue 已基本取代了其自研批处理解决方案 Compute Managed Batch(CMB)中的自定义逻辑。 此次迁移的动因包括 CMB 系统已使用多年、Kubernetes 的不断演进,以及在现有系统中添加预抢占等功能日益困难。最终选择 Kueue 而非其他替代方案,是因为它与现有的 Titus 调度配置文件兼容,采用势头强劲,并且原生支持预抢占等功能。此次迁移项目名为“Netflix Batch”,旨在实现对用户零影响且不降低吞吐量。该过程涉及将作业提交重定向至已启用 Kueue 的 Titus 单元,并由 Titus 联合机制负责作业分发。 运维调整非常有限,主要涉及一个简单的 UI 开关,用于将租户注册到 Kueue 中。此注册过程将 CMB 现有的租户层次结构和容量配置转换为 Kueue 中的“Cohorts”、“ClusterQueues”和“LocalQueues”概念。关键经验教训包括:保持与旧系统的 API 兼容性以确保用户体验顺畅,以及尽早迁移复杂用例以建立信心。对 Kueue 进行负载测试以确保其能够满足 Netflix 的高吞吐量要求也至关重要,这需要对默认配置进行调整。 目前,Kueue 已全面投入运行,管理着数百万个批处理工作负载,并实现了增强的公平共享和抢占功能。这些改进有助于更好地利用预留容量、减少作业饥饿现象,并加快关键工作负载的周转速度,从而显著提高了平均资源利用率。