京东杨业飞:京东云原生大规模实践之路

嘉宾 | 杨业飞

出品 | 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与混部的结合,降低部署成本,给大数据和业务提供了充足的资源。

阿基米德调度

在京东应用场景下,原生调度器存在资源使用率不均、任务分配不均以及调度速度较慢等问题,于是我们基于阿基米德调度,对诸多功能做了改造与升级。

京东杨业飞:京东云原生大规模实践之路_第1张图片

  • 基于预测的智能调度:依托京东大数据,利用机器学习、深度学习算法,对应用的资源使用情况进行画像统计,并能对应用的未来资源使用情况进行预测,将在线与离线应用合理地进行混合调度部署,保护节点负载。

  • 调度过程可视化及热点分析:调度过程可见,调度历史全程可追溯,热点机器形成原因实时分析,并出具分析报告。

  • 调度器仿真系统及回放功能:通过模拟器 + 线上数据回放,对调度请求进行仿真模拟,形成新的数据建模,并优化调度方案,为智能调度提供更优方案。

  • 应用维度均衡策略:应用密度控制、基于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家业界知名企业分享各企业云原生降本增效技术实践,为开发者带来更多样化场景业务下的技术干货。点击『此处』进入活动专题页,带你体验云原生降本增效实践案例、了解如何解决企业用云痛点、掌握降本增效关键技能……

你可能感兴趣的:(云原生)