自研方案为何被放弃
Netflix把大部分批处理工作负载迁到了Kueue,一个开源的云原生批处理作业执行系统,逐步替换掉用了多年的内部方案。此前,Netflix为容器平台Titus做了一系列定制工具,其中Compute Managed Batch(CMB)负责在容器化计算之上管理和执行批处理作业。CMB通过租户机制分层管理容量,并借助Titus的控制平面API,跨多个Kubernetes集群联合调度工作负载。
但2018年CMB创建后,情况发生了变化。Netflix观察到,CMB的许多关键功能已经被Kubernetes生态里演进的开源项目吸收。与此同时,在CMB里开发新功能的难度越来越大,因为它和Kubernetes的集成不够紧密。工程师最终选择Kueue作为CMB的替代品,理由是Kueue功能广、灵活性高、采用率大、创新节奏快。
迁移怎么做到无缝切换
负责迁移的团队定了一个目标:让现有CMB用户完全无感。新方案必须从一开始就支持所需的容器启动速率和最大吞吐量。迁移过程还受到租户限制,并且出现问题时可以轻松回滚。
具体映射上,工程师把CMB的内部租户对应到Kueue的Cohorts,把叶子租户对应到一对ClusterQueue和LocalQueue资源。资源风格和名义配额用来配置从CMB导入的容量需求。Kueue本身是Kubernetes原生的批处理作业管理和执行方案,提供基于优先级的作业排队和不同策略、高级资源管理、多集群和拓扑感知调度、多种集成机制以及全面的可观测性。
先迁最复杂客户,生产迁移只用了4周
Netflix目前在生产环境用Kueue管理数百万个批处理工作负载,但迁移仍在进行中。最近,工程师通过基于抢占的公平共享,显著提高了平均资源利用率,同时保留预留语义,并把空闲容量借给其他租户。
团队强调了一个关键决策:不要等到最后才迁移最复杂的用例。他们早期就决定先迁移最大、最复杂的客户,这样能建立信心,后续把其他客户迁到Netflix Batch时不会出问题。结果生产迁移只持续了4周。
API兼容性降低风险,负载测试微调吞吐
工程师认为,在迁移底层组件的同时保持API兼容性,大大降低了项目风险,也给最终用户带来了无缝体验。他们还在非生产环境运行负载测试,用来微调与性能相关的配置选项,以满足平台的吞吐量要求。
从CMB到Kueue的迁移,本质上是一次把内部能力映射到开源生态的替换。Netflix没有重写用户侧的接口,而是让底层换掉,上层保持不变。这种做法让迁移窗口压缩到4周,同时生产环境已经承载数百万级批处理工作负载。
热门跟贴