6

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

 1 year ago
source link: https://blog.csdn.net/m0_46700908/article/details/127198877
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client
c93d5fe45232257b3691f3abc8f28487.gif

嘉宾 | 杨业飞

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

阿基米德调度

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

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

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

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

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


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK