云舰全场景混部技术实践 周光资深架构师 请替换您的照片 周光 京东科技资深架构师 负责京东容器平台研发,通过技术不断的提升资源利用率,降本增效。在大规模容器集群构建和保障、集群联邦、异构资源统一调度、离在线混部等方面有丰富的经验,多次支持618大促和春晚红包项目的资源调度与稳定性保障。 01春晚红包挑战 目02京东混部架构 contents 录03混部核心技术点 04混部技术落地经验 PART01 春晚红包挑战 2024春晚红包挑战 552亿次 16天备战 史上最短备战周期全球华人参与京东App红包互动量 近300万容器 60% 超1000万核算力资源超高弹性伸缩全场景混部cpu利用率 春晚红包资源调度 •将所有可供调配资源,聚合在统一资源池内,对x86和国产化计算资源进行管理和统一调度 •不增加服务器,高效腾挪资源,超1000万核算力资源,应对春晚红包活动流量洪峰 •通过规模化混部技术,将容器化资源部署密度提升3倍,CPU整体利用率在60%~70% •云舰自研调度类算法,将干扰率由5%降低到1%,更迅速抢占资源,确保高优先级红包业务的用户体验 PART02 京东混部架构 什么是混部 •什么是混部 •将高优先级业务和低优先级业务混合部署在一个节点上 •混部目标 •不断提升数据中心资源使用率 •根据统计目前全球数据中心资源利用率仅为10%~20% •混部效果评价: •资源使用率提升明显 在线业务有规律的波峰波谷 整体利用率较低 任务比较充沛 离线集群整体利用率较高 •混部场景下在线业务TP99、QPS受干扰小 混部没有明显波峰波谷 。 整体利用率常态运行在较高水平 GOPS全球运维大会2024·深圳站 混部利用率常态化维持在70%左右,可极大节约机器成本。 故障处理平台,减轻运维负担,节约人力成本。 成本 集群管理,快速上下线集群、添加/删除节点,机器&资源流转效率高。 混部配置,统一管理,提升管控效率 效率 整机使用率在70%的情况下,离线对在线QPS和TP99影响在1%以内。 资源归一化策略,node按性能打分,保证任务性能统一。 快速实现故障识别与处理,减少利旧故障影响。 性能 GOPS全球运维大会2024·深圳站 资源隔离 干扰检测 内存QoS 网络IO 磁盘IO CPU 统一调度 负载感知调度 vGPU调度 重调度 服务画像 服务Quota 资源预测 拓扑感知调度 资源超卖 Gang调度 服务QoS 可观测性 负载监控 节点监控 集群监控 日志 干扰监控 调度监控 硬件故障探测 软件故障探测 故障探测与恢复 产品架构 全场景应用混部 中间件 数据库 AI 离线大数据 在线业务 混合资源池 GOPS全球运维大会2024·深圳站 技术架构 在线任务 离线任务 实时计算 数据库 •Master Kube-apiserver Archimedes-scheduler ArchimedesScheduler ArchimedesDescheduler •ArchimedesScheduler: Colocation-manager ColocationWebhook Reservecontroller 提供gang调度、负载平衡等调度增强 •ColocationWebhook:在annotation标记colocation资源 •Reservecontroller:控制资源保留 •Descheduler:提供灵活可扩展的重调度能力 •Node Colocation-agent 干扰检测应用画像 全方位资源隔离 调度控制 QoS管理 CRIHook metric管理 驱逐 •ColocationAgent: •离线资源上报 •在离线pod管控 •干扰检测 •CNI:网络限速、IP保留 •OS:内核级隔离能力增强 PART03 混部核心技术 混部功能特点 负载分 级 监控指 标 容器调 度 资源隔离 动态压制 稳定兼容可扩展 架构特点 •资源隔离&性能多维度资源隔离能力增强,增强业务抗干扰能力,提升业务性能 •故障检测与故障处理:基于NDX系统,实现故障自动检测、自动处理与恢复 •资源调度&资源画像:archimedes-scheduler提升调度质量与调度速度,增强型调度策略应对更多场景 •兼容性:兼容原生CSI、CNI、NPD等组件 •集群管理:白屏化多集群管理能力,创建/纳管集群,添加/删除节点 •可观测性:支持100+监控指标可视化,除了CPU、磁盘、内存、网络等常规指标外,还支持底层指标CPI、PSI、CPUL3、CPU饱和度、业务干扰、节点干扰、页缓存等,支持集群、节点、namespace、工作负载、pod、container等多种维度,支持etcd、apiserver、调度器等控制面指标可视化,支持多维度日志查询(node、pod、时间、关键字等) •Openapi&CRD:提供openapi和CRD的方式,供各方平台与混部集群对接 业务分类和分级 在线类型(延时敏感,中高优先级) 零售核心交易系统如库存、商品等 中间件如redis,kafka等 数据库mysql,es等 搜索、推荐、广告等 AI推理 大数据类型(延时不敏感,低优先级) 实时计算,比如:flink,sparkstreaming等 离线大数据,比如hive,spark等 AI训练 在线级别 名称 定义 SLA要求 QoS 例子 P0 核心系统 黄金交易流程相关系统及其强依赖的基础服务和中间件,需7*24不间断运行 99.995% Exclusive/reserved 商品系统 P1 次核心系统 系统降级或不可用,会间接影响用户使用核心功能及用户体验 99.95% Reserved/shared XX开放平台 P2 支撑系统 发生不可用只影响该基础服务自身功能,不影响0级和1级系统相关业务的连续性 99.9% shared 心愿单 应用QoS分级 offline •整体分级 •延迟敏感型的在线服务 shared reserved reserved exclusive •资源消耗型的离线任务 •在线分类 •exclusive,reserved和share三种类型 •分类作用 Pod4、pod5 Pod3 Pod2 Pod1 •影响Pod在单机的运行质量,主要表现为使用的隔离程度不同,单机资源紧张时会优先满足高等级pod的资源需求 Pod6、pod7、pod8 应用QOS分级 描述 KubernetesQoS exclusive 最高优在线服务,延迟极度敏感,独占CPU,不接受任何其他pod共享CPU。比如redis服务 Guaranteed reserved 次优在线服务,延迟比较敏感,不接受任何在线pod共享CPU,但接受离线pod共享CPU Guaranteed share 一般在线服务,弹性较好,与其他在线服务和离线服务共享cpu,有一定突发资源需求 Burstable/BestEffort offline 延迟敏感程度较低的资源消耗型业务,可接受压制、驱逐,以免干扰在线 BestEffort 多维度调度策略 避免单应用聚集 应用单节点最大实例数策略 避免热点机器 节点负载均衡调度策略;节点禁止调度水位线策略 场景 服务质量保证 资源预留;应用画像;任务分级策略、低优任务驱逐策略,高优抢占中优任务策略;CPU精细化调度策略;按优先级任务迁移 大数据批量调度 Gang调度策略 应用保障 多维度驱逐约束策略;资源删除保护 离线可用资源计算 •离线可用资源计算 •通过计算在线实际使用量来 •可用离线资源=调度水位线*(整机资源量-exclusive资源)-reserved实际使用资源-shared实际使用资源 •离线可用资源影响 •通过调整调度水位线 •离线任务调度到该节点 •调度水位线不变,在线业务使用率发生变化 #nodeinfoAnnotations: jdos.jd.com/node-water-cpu:"0.7" jdos.jd.com/node-water-mem:"0.7”Capacity: jdos.jd.com/colocation-cpu:28 jdos.jd.com/colocation-memory:96GiAllocatable: 离线可用资源 jdos.jd.com/colocation-cpu:28 jdos.jd.com/colocation-memory:96Gi exclusive reserved shared 负载均衡调度 •利用率均衡影响离在线混部质量 •机器热点,导致离在线任务冲突严重 •利用率不均衡导致资源无法充分利用 •如何做到均衡调度 •基于实时使用率,避免调度到热点机器 •基于资源预测,把控集群整体使用率 •支持按照CPU/内存维度平衡 cpu使用率 10060 8050 40 60 30 40 20 2010 00 阿基米德调度器 nodewatermarkalgorithm Usagebalancingalgorithm nodeusage Watchevents Metricspredictioncomponent Prometheus Predictionapi Kube-apiserver LoadWatcher cpu使用率 规格(request)优化推荐 •场景 •用户高估或低估pod资源规格导致资源浪费或系统稳定性风险 •应用数量多,评估成本高 9 8 7 6 5 4 3 2 1 0 123456789 申请资源实际使用资源 9 7 8推荐 6reques 5t 4 3 2 1 0 123456789 申请资源实际使用资源 •SMT超线程避让 当在线任务占用同一个物理核的某个超线程(HT)时、离线任务无法使用另一个HT,减小离线任务对在线 任务的干扰 GOPS全球运维大会2024·深圳站 资源隔离:CPUQoS •CPUBurst 支持按容器设置Burst量,测试长尾延时可减少18% •离线压制 在线动态预测,调整离线的CPU带宽总量,保障整机水位线 资源隔离:内存QoS •OOM优先级 优先杀掉离线任务,支持离线任务间设置优先级 •GroupOOM 保障同一个容器内的进程一并杀掉,减少无效占用 •异步内存回收 容器内存用量超过水位线,启动异步回收,减少内 存分配延时 •内存水位线保护 优先回收离线,保护在线内存不被回收 资源隔离:网络QoS •网络限速 支持容器级别单方向(Ingress、Egress)、双方向 (Ingress+Egress)的限速 •优先级 支持设置容器优先级,设置IP报文DSCP,结合底层网络实现全局QOS控制 资源隔离:磁盘QoS •离在线分盘管理 可通过配置文件设置离线、在线的物理盘, 减少互相干扰 •磁盘限速 通过注解设置容器的(r/w)BPS、IOPS,支持BufferIO和DirectIO限速 •磁盘IO优先级 调整优先级,尽量优先保障在线IO CPU 调度时延、饱和度、L3缓存命中率、使用率、CPI、限流次数 磁盘 IOPS(R/W)、BPS(R/W)、队列长度 内存 页缓存命中率、饱和度、带宽监控、使用率 网络 BPS、PPS、重传数、丢包数 业务干扰 次数,百分比,排行 节点干扰 次数,百分比 可观测性 维度 计算节点 工作负载 调度器 队列长度、QPS、时延、机器负载 日志 调度、压制、销毁 APIServer QPS、成功率、时延、webhookQPS、机器负载 ETCD QPS、请求数、时延、EventQPS、机器负载 维度 集群 实例 集群 Namespace 资源使用量 配额、申请量