嘉宾 | 杨业飞
出品 | CSDN云原生
2022年9月22日,在中国信通院、腾讯云、FinOps产业标准工作组联合发起的《原动力x云原生正发声 降本增效大讲堂》系列直播活动第9讲上,京东云JDOS研发组架构师杨业飞分享了京东的云原生大规模实践。本文整理自杨业飞的分享。
【资料图】
阿基米德调度
京东JDOS技术演进
JDOS是京东的容器管理平台、统一的云原生技术底座,当前京东的内部业务均运行在JDOS平台上。
2014-2016年,JDOS 1.0容器化
针对物理机部署资源利用率低、应用资源无法隔离、应用无隔离等问题,JDOS 1.0阶段通过OpenStack + Docker胖容器部署的技术方案,增加部署密度,将宿主机平均使用率从10%提升到15%并增强隔离性,使应用资源更可控、应用迁移更便利。
2017-2018年,JDOS 2.0阿基米德调度
针对1.0时期服务器资源采购受限、资源利用率有待提升、资源使用不均衡等问题,JDOS 2.0阶段增加Kubernetes与阿基米德调度,实现宿主机平均使用率从15%提升至30%,并大幅减少服务器数量,节省采购成本。
2019至今,JDOS 3.0 Serverless+混部
针对2.0时期应用上下线成本高、在线集群非高峰段资源利用率不高等问题,JDOS 3.0阶段通过跨集群Serverless与混部的结合,降低部署成本,给大数据和业务提供了充足的资源。
阿基米德调度
在京东应用场景下,原生调度器存在资源使用率不均、任务分配不均以及调度速度较慢等问题,于是我们基于阿基米德调度,对诸多功能做了改造与升级。
基于预测的智能调度:依托京东大数据,利用机器学习、深度学习算法,对应用的资源使用情况进行画像统计,并能对应用的未来资源使用情况进行预测,将在线与离线应用合理地进行混合调度部署,保护节点负载。
调度过程可视化及热点分析:调度过程可见,调度历史全程可追溯,热点机器形成原因实时分析,并出具分析报告。
调度器仿真系统及回放功能:通过模拟器 + 线上数据回放,对调度请求进行仿真模拟,形成新的数据建模,并优化调度方案,为智能调度提供更优方案。
应用维度均衡策略:应用密度控制、基于SLA等级调度、基于监控数据的应用反亲和。
应用密度提升:充分利用申请与实际使用差距提升Pod部署密度。
调度速度优化:调度策略/过程调整/优化 + 调度策略Pod级别可配 + 调度预测/快速失败机制。
跨集群Serverless
业务方面存在跨集群甚至跨机房的容灾模式需求,同时平台管理员也希望能够打破各集群的资源孤岛状态,实现良好的资源调度分配。于是,我们基于以上需求推出了跨集群Serverless方案。
基于资源管理系统提前预测各集群可调度副本数,基于用户策略(集中/分散/跨集群/跨机房)决策各个集群副本数量。
支持定时、实时指标弹性扩缩策略、历史指标弹性扩缩策略,实时扩,延时缩。
通过P2P提升镜像下载速度,基于NPD + 故障探测脚本,解决启动、销毁过程中的阻塞点,启动销毁速度控制在秒级。
基于高性能DPDK支持权重动态调节,就近解析、就近转发。
自动挂载LB、JSF等流量,支持状态预热、IP白名单等前置资源自动处理能力。
可靠的故障探测恢复系统,若本集群一直达不到可用状态,会尝试跨集群重调度。
基于Node评分状态,进行缩容操作,如使用率、特征匹配程度等指标。
全局资源预测
及时弹性策略
实例启停速度优化
跨集群LB
应用流量挂载
故障自动恢复
智能缩容
离在线混部
离在线混部的核心在于调度与隔离,调度从全局维度保证资源的合理分配,隔离则能有效减少业务之间的相互干扰。
离线资源识别
离线资源通过识别空闲资源而获得,不抢占在线可用资源Quota;
空闲资源 = 未申请资源 + 申请未使用资源 + 系统预留资源 - (节点资源 * 全局预留水位);
未使用资源识别:通过过去7天数据预测未来五分钟95分位数获得。
资源隔离
CPU:超线程压制、LLC隔离、尽量NUMA绑定;
内存:在节点内存紧张时,优先OOM离线任务再OOM在线任务,离在线分别按优先级进行OOM;
磁盘:支持磁盘Direct IO/Buffer IO限速,支持按照权重、绝对值对磁盘吞吐/IOPS进行限制;
网络:网络带宽支持权重、绝对值限制,避免宿主机、交换机带宽打满,影响在线业务;
离线大框:离线资源统一大框管理,离线作业充分利用空闲资源,整体把控性强。
水位线压制
cpuUsageSafeRatio:全局资源使用的安全水位线,整机使用资源不可超过该水位线,若超过该水位线,优先对离线任务进行压制;
offlineTaskTotalQuota:离线任务总Quota,用来限制单机所有离线任务可以使用的CPU资源总量;
offlineTaskMinQuota:离线任务最低资源保障,offlineTaskTotalQuota不会低于该值,用来保障离线任务的正常运行。
驱逐
复杂的应用场景难以规避业务之间干扰的存在,当干扰出现时,可采用驱逐的手段保障机器正常作业以及任务正常运行。
任务干扰、机器热点、资源均衡场景下的驱逐,多基于任务优先级、任务计算进度等指标进行,在驱逐后进行调度冷却处理。
监控
仅对常规指标进行收集监控已无法满足应用场景的高复杂性,还需挖掘更深层次的监控维度。
常规指标:CPU、内存、磁盘、网络等。
干扰指标:压制频率/程度、CPI、PSI等。
相关性:相关性学习、分析指标等。
健康度分析:对节点进行健康度检查与分析,对于不正常的节点,出具健康度诊断报告。
京东云原生技术体系
综上所述,在提升集群资源利用率方面,京东云原生技术体系围绕四个方面展开:
阿基米德调度
通过全局与全时段的资源预测分配策略,全局把控服务质量。跨集群Serverless
降低用户使用成本,实现在线资源二次均衡,弥补一次调度时产生的偏差。离在线混部
通过多维度资源隔离、有效实时压制以及策略驱逐,保证离在线任务的同步部署,提高集群资源使用率。统一资源管理系统
资源预测,节点分类/打分/健康度分析。【原动力×云原生正发声降本增效大讲堂】第一期聚焦在优秀实践方法论、资源与弹性、架构设计;第二期聚焦全场景在离线混部、K8s GPU资源效率提升、K8s资源拓扑感知调度主题;第三期邀请4家业界知名企业分享各企业云原生降本增效技术实践,为开发者带来更多样化场景业务下的技术干货。点击『此处』进入活动专题页,带你体验云原生降本增效实践案例、了解如何解决企业用云痛点、掌握降本增效关键技能……