1、字节跳动云原生开源:资源管理与成本优化唐鹏程 火山引擎 云原生架构师唐鹏程云原生架构师“曾就职于容器创业公司才云科技,现就职于火山引擎云原生 PaaS 团队,有多年 ToB 云原生落地经验。主要关注多云、调度、在离线混部等基于 Kubernetes 的能力构建”讲师简介 背景介绍 云原生资源管理 云原生成本优化 云原生开源目录背景介绍业务体系微服务主要是支撑应用的业务逻辑,产品特性驱动,业务迭代效率高,单一服务链路简单,整体链路复杂,重 cpu 和 rpc 延迟推广搜服务为 Feed、搜索提供内容列表的后端服务,实时在线推理服务,追求极致性能。服务数量少,链路简单,服务间数据交互量大,单一服务
2、资源消耗量大,算力要求高机器学习和大数据为推广搜离线训练、数据报表提供支撑的数据处理服务,分布式训练,流式、批式计算场景,超高数据吞吐量,对算力要求高,重内存和吞吐存储服务为应用提供数据存储服务,包括通用存储、数据库、NoSQL 等,通常为有状态应用,故障影响大同,对资源稳定性要求高云原生历程现有500+生产集群,基础设施深度云原生化TCE 启动建设生产集群,基础设施深度云原生化2016微服务架构完成核心业务微服务迁移,并在 TCE 之上构建服务框架、Mesh、监控告警等基础设施2017“推广搜”云原生把“推广搜”的物理机服务与在线服务进行全面融合,实现统一容器化调度2019在离线调度融合、存
3、储云原生融合资源管理形态,简化供应链选型;优化运维效率,开启数据库、缓存等存储系统的云原生化改造2020云原生联邦演进资源多云到应用多云,实现全场景应用编排和资源管理的标准化和统一化2021节点数900,000+最大集群节点数上万实现大规模集群落地拥有100,000+在线微服务,敏捷化构建能力持续增强平均每日变更数高达30,000云原生为前线业务提供稳定性保障离线任务数140 M+通过云原生混部大规模节省企业资源成本次统一云原生资源池K8s+KatalystK8s+KatalystK8s+KatalystKubeAdmiralGlobal QuotaWorkload DispatchGloba
4、l SchedulervKubernetesYarn on GdelKubeZooDeploymentSolarNGN*tML PlatformBigData PlatformFunction as a ServiceStorage ServicesService PlatformClusterPooled ResourceResource AccessApplication ModelPlatform T云原生资源管理复杂的资源管理需求业务云原生化对基础设施的资源管理和调度能力提出了更高的要求更多样化的资源管理能力GPU/FPGA/RDMA更精细化的资源分配策略NUMA 绑定/独占NUMA
5、级别的 pod 亲和及反亲和资源微拓扑亲和Source:NVIDIA 原生拓扑管理机制的局限 K8s 原生调度器不感知节点的微拓扑,可能导致大量非预期的 Admit 失败 K8s 原生的拓扑亲和策略只考虑了 NUMA 拓扑,难以满足大模型训练等业务对性能的要求拓扑感知调度K8s Topology M整体方案QoS Resource Manager提供插件化的资源管理能力对接原生的 Topology Manager,实现 NUMA 亲和Katalyst Agent通过插件的方式定制对容器的资源分配策略采集并上报拓扑信息Katalyst Scheduler扩展调度器插件,根据节点上的微拓扑信息进行
6、资源准入和打分Case 1:GPU-RDMA 拓扑亲和在分布式训练场景下GPU 和 RDMA 在同一个 Root Complex 下,可以使用 GPUDirect RDMA 加速通信GPU 和 RDMA 公共的 PCIe Switch 层级越低,Pod 间通信的带宽越大在分布式训练场景下,RDMA 连接的交换机越近,Pod 间通信的带宽越大Case 2:RDMA-RDMA 拓扑亲和Case 3:NUMA 级别的 Pod 亲和与反亲和错误摆放错误摆放正确摆放正确摆放对于采用 PS-Worker 框架的训练作业PS 对性能要求较高,不可跨 NUMA Node 分配资源Worker 对内存带宽消耗较