快手大规模在离线混部平台的容器实践之路
如果无法正常显示,请先停止浏览器的去广告插件。
1.
2. 快手大规模在离线混部平台的容器实践之路
张伟
系统运营部
2021-04-27
3. 个人介绍
张伟
•
•
快手系统运营部
2018年6月加入快手,目前主要负责容器云有状
态服务容器化、集群调度、在离线混部等项目的
研发
曾在百度基础架构、金山云从事云计算方向架构
研发
4. ontents
1 快手混部系统简介
2 整体架构与关键技术
3 近期重点与未来规划
5. 面临的挑战
快速发展的业务:给资源供给带来了挑战
应用数量众多
类型多种多样
升级变更频繁
IDC数量众多
主
机
服
务
资源潮汐化
峰值资源短缺
在离线分离
资源交付压力
快速增长的业务与资源成本控制间的矛盾日益突出
6. 如何解决资源困境?
混合计算 :解决在离线资源共享需求,提升整体资源利用率
离线+非实时作业
在线服务
资源利用率高
实时性要求较低 利用率指标 资源利用率较低
时延敏感
全天持续需求
大小块资源较可利用 资源需求点 “潮汐”特征明显
需要足够buffer
资源套餐固定
某在线业务三天使用率示意图
具备容错特性
允许重试
稳定性要求
时延、饱和度、错误率
重试成本高,用户侧有感
•
•
•
•
流量波峰波谷
SLO保障冗余
用户估计误差
突发增长需求
7. 明确建设目标
CRI+CSI+动态资源
IaaS资源
在线集群
IaaS资源
离线集群
目标
• 打破在离线资源隔阂
• 有效转化空闲算力给离线任务
IaaS资源
IaaS资源
在离线混部集群架构
关键点:
• 在线服务可用性下降0%
• 峰均值利用率提升5%
• 日均值利用率提升10%+
• 规模达到10W量级
• 离线挖掘量超百万核
8. 混部平台定位
长服务
批量计算
大数据
基于云原生支撑各业务
在线机房资源
离线机房资源
…
9. 快手在离线混部系统简介
基于容器+kubernetes管理在离线混部集群
提供多优先级离线算力,弹性支撑离线作业
• 预算分帐
• 需求梳理
• 关键技术预研
• 小规模落地
• 隔离能力建设 • 资源调度重点优化
• 覆盖数十集群 • 对接大数据放量
• 离线业务峰值百万核 • 隔离技术补强
• 大数据任务接入
2019
2020
2021
10. Part
Part
Two
整体架构与关键技术
11. 整体框架
离线应用与作业
通
用
业
务
短
任
务
转码类
高容错应用
辅助系统
资源贡献接入
离线资源监控
定时任务
Spark
MapReduce
在离线容器编排
离线作业编排
应用编排 Job编排 动态超售 服务画像 大数据引擎MR/SPark
跨集群调度 负载调度 弹性扩缩容 Operator定制 离线训练对接中
自动化运维
资源成本分帐
大
数
据
质检、报表等
统一资源层(容器+存储)
容器
增强隔离
容器网络
KATA
分布式
存储
rbd/nbd
cephfs
HDFS
机房带宽监测
帐单管理
集群管理层
在线容器集群
主机部署服务器纳管
基础服务混用集群 备机池及测试机
公有云主机 备机及测试机
资源审计
公司统一基础设施
业务存量物理机
容器集群物理机
12. 集群管理层框架
在离线跨集群编排
集群A masters
…
自动化接入
集群N masters
资源采集规则
预留资源
集
群
A
集
群
B
单节点
内结构
混部资源采集
低退避
离线资源 离线实例管理 外部引擎托管
在线资源 实例资源控制 退避事件汇聚
Metric采集
多容器集群
Falcon
• 资源模型
• …
多级资源上报
普通离
线资源
• 生效时段
Prometheus
离线质
量分析
13. 统一资源层: 在离线资源单机同存
预留
安全阈值1
空闲
在
线
申
请
Buffer
多优先级离线资源
在线
资源
占用
预测
• 低退避型
—— 高优、稳定性提升
• 普通型
—— 资源量大
上限 + 预测
在线
使用
单机资源面向在线和离线任务定义多级不同资源类型
资源抽取效率:
• 全时段生效
• 秒级发现空闲资源
• 百毫秒量级快速退避保障
在线业务
• 整机峰值利用率到50%
• CPU日均贡献可超10pp
适用范围
• 常时运行状态类业务
14. 统一资源层: 主机“在线”- “离线”转换
预留
整
机
独
占
类
场
景
空闲
Buffer
预留
空
闲
时
段
自
动
缩
容
离线
资源
峰
值
时
段
自
动
扩
容
预留
空闲
HPA
HPA
实时检测空闲
在线
使用
预留
Buffer
空闲
在线
实例
运行
离线作业退避
在线
实例
启动
资源抽取效率:
• 实时检测整机空闲状态
• 在离线业务时分复用主机
• CPU峰值值可达80%
• 大套餐离线作业
适用范围:
• 备机池、buffer池、核心
业务集群
15. 统一资源层:隔离能力建设
•
•
•
•
数十毫秒量级采集周期
动态调整Cgroup的
cfs_quota_us
独占核与共享核管理
敏感业务与离线任务运行于不
同CPU队列
压力状态离线任务按顺退避
•
•
•
•
•
无需采集,设置上限
设置单机离线进程限制
设置单容器实例进程限制
•
•
•
数十毫量级秒采集周期
非压缩资源
历史数据预测稳定值
用户态检测实时退避
提升离线任务oom_score,
冲突时OS优先干掉离线任务
•
•
•
•
数十毫秒采集周期
Sysload(1m/5m/10m)
结合可用cpu核数设置
比例约束
快速退避优化
帐户级FD整体约束
容器内外帐户映射
帐户权限、配额管理
网卡流量
•
•
•
整机系统负载
Pid及FD
•
•
•
离线帐户
内存
CPU
离线任务TC限速
流量上限监测
调度层优化分布
磁盘空间及Inode
•
•
•
•
•
•
数十秒级采集周期
实时监控容量及Inode使用
超阈值清理离线任务及数据
重IO接入分布式块存储(转换为网络IO)
XFS的目录限额(进行中)
内核 IO throttle限制(进行中)
16. 统一资源层:隔离能力建设
Kubelet+
混部单机组件
离线容器实例
离线容器实例
cpu
离线容器实例
mem
离线容器实例
io network
共享/独占核 cpi指标观测 L3 Cache隔离 Nbd卸载IO
&限速 进程网络限速
cpu throttoled 优先级退避 pagecache回收
策略定制 GC联动
提升超售比 专线带宽监测
17. 统一资源层:资源动态调整
在线容器
•
OOM Score调整
多优先级大框限制
实时软硬限调整
网络限速
账户级硬限
YarnNM接入
•
•
•
•
Kubelet组件
静态分配上限
离线容器
•
•
•
•
•
单节点资源视图
离线大框嵌套
实时可用与预测资源联动
Nbd块设备限速接入
存储压力透传
混部资源实时计算
离线作业
在线服务
高优离线
YarnRM
离线优先级
• normal
• stable
在线容器
在线优先级
• besteffort
• Burstable
• gurantee
高优离线
低优离线
Offline Cgroup
OnlineCgroup
Metric采集
资源动态调整
Metric采集
分布式存储集群
在线容器
在线容器
18. 统一资源层:兜底退避机制
状态机维护:
基于混部规则和在离线作业实时数据,生成控制状态
离线稳定运行
退避机制:
1. 轻压力:提供接口透传整机状态及预测数据,离线进程执
行GC、暂停子任务等策略
低优混部
压力状态
高优混部
压力状态
2. 重压力:按优先级KILL离线实例,强制释放资源
3. 惩罚系数:指数级退避等待,规避振荡
压力状态严控:
1. 毫秒级阻断新离线容器启动
2. 秒级更新混部资源上报,调度侧规避
3. 平台异步清理被快速阻断的离线实例记录
循环检测
19. 编排调度:跨集群调度
多集群+实时负载调度模块
调度决策
资源感知
集群1 集群2 集群3
8核16GB
可开100个 8核16GB
可开200个 8核16GB
可开300个
20. 离线任务发布:流程示例
启动服务
l 设置服务类型及元数据
l 选择混部资源套餐
运行中
弹性扩缩容设定
l 平台自动清理退避后实例 l 设置最大、最小实例数
l 跨集群探测可用空闲资源 l 设置扩缩容步长
l 设置驱动指标
21. 离线任务发布:如何设置资源
显式指定
资源类型
22. 离线任务发布:效果展示
可用资源量
单服务混部资源使用量汇聚展示
单物理机混部资源使用监控
实际使用资源量
23. Part
Three
近期重点与未来规划
24. 近期重点与未来规划
隔离能力增强
多生态兼容建设
场景拓展
l 轻量级虚拟化保障内核级隔离 l 更多计算平台API兼容建设 l GPU/ASIC场景支持
l 单机侧应用指标采集与预测 l 离线任务调度增强(提升任务 l 覆盖率提升
l 精细管控:干扰识别与避让
吞吐)
l 超大集群能力提升
25. 总结
l 系统发展简介 —— 为什么做、发展简史
l 整体框架与实现细节 —— 技术方案介绍、
如何实现、达到什么效果
l 近期重点与后续规划 —— 中长期规划
26.