1、B站容器平台混部和容量管理实践B站资深开发/许龙大纲各类混部场景的实践方案CPU在离线混部:在线+转码、在线+大数据CPU潮汐混部:推搜+大数据GPU常态混部:推理+转码GPU潮汐混部:推理+训练容量管理的实践方案弹性伸缩:VPA和HPA合池:quota管理、算力标准化容量运营与可视化服务器网络存储自建IDC云主机云专线云存储公有云容器运行时镜像仓库k8s组件CNI/CSI资源调度混部框架集群管理容量管理发布平台机器学习平台边缘计算平台批处理平台主站在线业务直播广告电商视频转码离线业务AI训练大数据容器引擎层业务层平台层基础设施层CPU核数:百万级除部分大数据、中间件外全部容器化B站容器平台架
2、构CPU在离线混部在线+视频转码在线+大数据CPU潮汐混部推搜+大数据GPU混部推理+编解码推理+训练混部实践方案CPU在离线混部的难点调度QoS保障 混部任务尽量不占用在线任务的可用配额(cpu/memory request)调度器需要动态感知节点的可混部资源量 满足离线任务的E2E调度性能 在线任务的性能不被离线任务干扰:精细化隔离措施(cpu/内存/磁盘/网络)离线任务也需要一定的性能保障:区分混部资源质量任务下发模块 在线任务通过容器发布平台下发 离线任务通过批处理任务平台下发调度模块 在线任务采用原生调度器 离线任务采用volcano调度器 离线任务基于k8s扩展资源进行调度混部ag
3、ent模块 混部算力的动态计算和上报 资源隔离 监控数据上报配置管理模块 不同节点组的混部策略管控CPU在离线混部的架构kube-apiserverwebhookkube-schedulervolcanocolocation-agentk8s node批任务处理平台colocation config managerk8s nodek8s nodeprometheusoffline podonline podK8s nodeclustermasteroffline colocation pod在线发布平台online podextended resource混部资源上报基于在线负载,动态计算可混
4、部资源采用k8s device-plugin机制,上报混部扩展资源、通过本机指标采集计算,去除外部监控链路依赖资源分级,结合资源池画像,区分高低优混部资源 高优资源:资源比较稳定,离线任务可较长期稳定运行 低优资源:资源比较波动,离线任务容易受到压制或驱逐CPU在离线混部-资源上报Device ManagerDevice PluginkubeletColocation agentapi-serverNodeAllocatable:caster.io/colocation-stable-cpu:10 caster.io/colocation-free-cpu:5 register resourc
5、ek8s nodeUpdate node infocompute resource在线离线视频转码场景的挑战计算规模庞大:日均千万级任务计算资源异构:CPU/GPU/混部/混合云系统压力大:并发高,E2E拉起速度要求高批任务调度模块对混部业务方提供统一的openAPI多集群调度:支持资源余量、优先级等策略单集群调度:采用volcano调度器+自定义plugin高可用:无单点可扩展、支持限流支持多租户单集群调度性能优化etcd:分离event、使用nvme等apiserver/controller调大限速镜像p2p下载Volcano深度优化:例如job到pod的创建延迟优化CPU在离线混部-调度
6、方案视频转码业务方Job-manager服务网关Job-managerJob-managerScheduler(slave)Scheduler(master)Scheduler(slave)apiservervolcanoagent批任务调度模块apiservervolcanoagentOther clusters上报资源预留、任务状态等信息cluster1cluster2混部大框根据在线负载动态计算可混部资源量根据可混部资源量调整大框cgroupCPU在离线混部-资源隔离kubepods/sys/fs/cgroupburstablePodxxx(guaranteed)podxxxbestef