历经 7 年双 11 实战,阿里巴巴是如何定义云原生混部调度优先级及服务质量的?-阿里云开发者社区

开发者社区> 阿里巴巴云原生小助手> 正文

历经 7 年双 11 实战,阿里巴巴是如何定义云原生混部调度优先级及服务质量的?

简介: 本文将聚焦在 K8s 层的容器优先级和服务质量模型上,希望给业界提供一些可借鉴的思路。
+关注继续查看

作者:南异


引言


阿里巴巴在离线混部技术从 2014 年开始,经历了七年的双十一检验,内部已经大规模落地推广,每年为阿里集团节省数十亿的资源成本,整体资源利用率达到 70% 左右,达到业界领先。这两年,我们开始把集团内的混部技术通过产品化的方式输出给业界,通过插件化的方式无缝安装在标准原生的 K8s 集群上,配合混部管控和运维能力,提升集群的资源利用率和产品的综合用户体验。


由于混部是一个复杂的技术及运维体系,包括 K8s 调度、OS 隔离、可观测性等等各种技术,本文将聚焦在 K8s 层的容器优先级和服务质量模型上,希望给业界提供一些可借鉴的思路。


K8s 原生模型


在实际的生产实践中,即使是很多对云原生和 K8s 比较熟悉的技术人员,往往也会混淆调度优先级(Priority)和服务质量(QoS)。


所以,在谈混部的模型前,首先我们对 K8s 原生的概念做详细的介绍,详见下表:


1.png


从 API 层面详细描述的话,可以看下面这张表


2.png


混部需要解决的问题


混部主要解决的问题是,在保证部署应用的服务等级目标 SLO 的前提下,充分利用集群中的空闲资源,来提升集群整体的利用率。


当一个集群被在线服务部署分配部署完以后,由于在线应用的高保障的特性,会给容器一个 peak 的资源规格,这样有可能导致实际真实利用率很低。


3.png


我们希望将这部分空闲但是未使用的资源超卖出来提供给低 SLO 的离线作业使用,以此提高整体机器水位。这样就需要提供基于 SLO 的调度能力,以及考虑到机器真实资源水位进行调度,避免热点的产生。


另外,由于在线通常 SLO 比较高,离线 SLO 比较低,那么当机器水位整体提升过高的时候,可以通过抢占离线的作业方式,来保障在线应用的 SLO。以及需要利用率内核层面 cgroup 的隔离特性来保障高 SLO 和低 SLO 作业。


那么,在这些在线和离线的 Pod 之间,我们就需要用不同的调度优先级和服务质量等级,以满足在线和离线的实际运行需求。


云原生混部定义的应用等级模型


首先请看一下在混部中一个 Pod 的 yaml 是怎么定义的


apiVersion: v1
kind: Pod
metadata:
  annotations: 
    alibabacloud.com/qosClass: BE # {LSR,LS,BE}
  labels:
    alibabacloud.com/qos: BE  # {LSR,LS,BE} 
spec:
  containers:
  - resources:
      limits:
        alibabacloud.com/reclaimed-cpu: 1000  # 单位  milli core,1000表示1Core
        alibabacloud.com/reclaimed-memory: 2048  # 单位 字节,和普通内存一样。单位可以为 Gi Mi Ki GB MB KB
      requests:
        alibabacloud.com/reclaimed-cpu: 1000
        alibabacloud.com/reclaimed-memory: 2048


这是在混部里面我们引入的 Pod 的等级,和社区原生不同的地方在于,我们显式的在 anotation 和 label 里面申明了 3 种等级:LSR、LS、BE。这 3 种等级会同时和调度优先级(Priority)、服务质量(Qos)产生关联。


具体的每个容器的资源用量,LSR 和 LS 还是沿用原有的 cpu/memory 的配置方式,BE 类任务比较特殊,通过社区标准的 extended-resource 模式来申明资源。


那么,这 3 类等级具体代表的运行时含义又是什么呢?可以参考这个图,看下这三类应用在 CPU 上的运行时的情况


4.png


以及详细的对其他资源使用的影响:


5.png


可以看到,这个等级,不但和 Pod 在单机上运行的 CPU、内存有关,还和网络 Qos 的全链路优先级有关,避免低优的离线类任务抢占了所有的网络带宽。阿里在内核方面做的工作有效的保证了运行时的应用稳定性,2021 年双 11 期间,阿里成为全球首家将所有业务都放在自家公共云上的大型科技公司,这意味着阿里云有能力应对高难度复杂环境下的技术挑战,也带来了非常大的技术收益:阿里巴巴业务的研发效率提升了 20%、CPU 资源利用率提升 30%、应用 100% 云原生化、在线业务容器可达百万规模,同时计算效率大幅提升,双 11 整体计算成本三年下降 30%。在这个过程中,混合部署技术发挥了重要作用。内核团队及云原生团队工程师踩了无数的坑,沉淀了包括弹性 CPU 带宽、Group Identity、SMT expeller、memcg 异步回收、内存水线分级、memcg OOM 等多项高级特性,处于业界领先水平。这些工作都会在系列的文章里面后续一一介绍。


当这三种类型优先级任务实际在调度和运行时发生的行为,如下面这个表所示


6.png


也就是说,混部的优先级会同时作用于调度和运行时,最大程度的保证高 SLO 的高优、中优任务使用集群内的资源。


配额、水位线、多租隔离


本文仅聚焦讨论了 K8s 单 Pod 的调度优先级,在实际使用时,为了保证应用的 SLO,需要配合单机的水位线、租户的配额、以及 OS 隔离能力等等使用,我们会在后续文章里面详细探讨。


相关解决方案介绍


进入了 2021 年,混部在阿里内部已经成为了一个非常成熟的技术,为阿里每年节省数十亿的成本,是阿里数据中心的基本能力。而阿里云也把这些成熟的技术经过两年的时间,沉淀成为混部产品,开始服务于各行各业。


在阿里云的产品族里面,我们会把混部的能力通过 ACK 敏捷版,以及 CNStack(CloudNative Stack)产品家族,对外进行透出,并结合龙蜥操作系统(OpenAnolis),形成完整的云原生数据中心混部的一体化解决方案,输出给我们的客户。


参考文档


1)https://kubernetes.io/docs/concepts/scheduling-eviction/


2)https://kubernetes.io/docs/concepts/workloads/pods/disruptions/


3)https://kubernetes.io/docs/concepts/scheduling-eviction/node-pressure-eviction/


4)https://kubernetes.io/docs/concepts/extend-kubernetes/compute-storage-net/device-plugins/


5)https://kubernetes.io/docs/tasks/configure-pod-container/extended-resource/


6)https://my.oschina.net/HardySimpson/blog/1359276


文内详情链接


1)节点压力驱逐(Node-pressure Eviction):

https://kubernetes.io/docs/concepts/scheduling-eviction/node-pressure-eviction/


2)PriorityClass:

https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/#priorityclass


3)PodDisruptionBudget:

https://kubernetes.io/docs/tasks/run-application/configure-pdb/


4)Eviction:

https://kubernetes.io/docs/concepts/scheduling-eviction/api-eviction/


5)QosClass:

https://kubernetes.io/docs/tasks/configure-pod-container/quality-service-pod/


6)PriorityClass:

https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/#priorityclass


7)PodDisruptionBudget:

https://kubernetes.io/docs/tasks/run-application/configure-pdb/


8)Eviction:

https://kubernetes.io/docs/concepts/scheduling-eviction/api-eviction/


点击此处,即可查看阿里云专有云敏捷版云原生 Stack 相关介绍!



版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
9497 0
申通快递 双11 云原生应用实践
一年一度的 “双11” 大促中,交易额每年都在刷新,承接这些交易商品的快递包裹的数量也在成倍增长。这些快速的增长对物流系统带来了巨大的挑战,让物流管理更加敏捷来应对 “双11” 成为了必须解决的问题。
752 0
阿里云原生先锋技术实战分享 | 在线直播
本次活动邀请多名阿里巴巴专家,与您共同探讨这些技术的典型场景、详细架构、最佳实践和行业应用。
1490 0
重磅下载 | Java 开发者必备手册《Spring Cloud Alibaba 从入门到实战》,阿里双11同款!
Spring Cloud Alibaba 脱胎于阿里中间件团队内部,经受了阿里多年海量业务场景的考验,是目前最成熟、功能最丰富也最有前景的 Spring Cloud 实现。相信在未来 Spring Cloud Alibaba 获得更多开发者的亲睐与应用,这也将成为 Java 开发者必不可少的技能之一。
81795 0
订单峰值激增 230%,Serverless 如何为世纪联华降本超 40%?|双11 云原生实践
导读:2020 年 双11,世纪联华基于阿里云函数计算 (FC) 弹性扩容,应用于大促会场 SSR、线上商品秒杀、优惠券定点发放、行业导购、数据中台计算等多个场景,业务峰值 QPS 较去年提升 230%,研发效率交付提效超过 30%,弹性资源成本减少 40% 以上。当 双11 走过 11 个年头,传统企业正在凭借云原生技术悄然逆势崛起,参与到这场全球购物狂欢节中。
296 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
13186 0
申通快递 双11 云原生应用实践
一年一度的 “双11” 大促中,交易额每年都在刷新,承接这些交易商品的快递包裹的数量也在成倍增长。这些快速的增长对物流系统带来了巨大的挑战,让物流管理更加敏捷来应对 “双11” 成为了必须解决的问题。
4310 0
重磅发布 | 《不一样的 双11 技术,阿里巴巴经济体云原生实践》电子书开放下载
2019 双11,订单创新峰值达到 54.4 万笔/秒,单日数据处理量达到 970PB,面对世界级流量洪峰,今年的阿里巴巴交出了一份亮眼的云原生技术成绩单,并实现了100% 核心应用以云原生的方式上云: 双11 基础设施 100% 上云 支撑 双11 在线业务容器规模达到 200 万 采用神龙弹性裸金属服务器计算性价比提升 20%  这些数据背后是对一个个技术问题的反复尝试与实践。
28687 0
DataWorks调度配置最佳实战
DataWorks基于MaxCompute作为核心的计算、存储引擎,提供了海量数据的离线加工分析、数据挖掘的能力。通过DataWorks,可对数据进行数据传输、数据转换等相关操作,从不同的数据存储引入数据,对数据进行转化处理,最后将数据提取到其他数据系统。
3786 0
双11核心系统全面云原生化:效率提升一倍,成本下降80%
阿里云落地全球最大云原生实践:双11核心系统全面云原生化。
14243 0
1314
文章
0
问答
来源圈子
更多
阿里云 云原生应用平台 肩负阿里巴巴集团基础设施云化以及核心技术互联网化的重要职责,致力于打造稳定、标准、先进的云原生产品,成为云原生时代的引领者,推动行业全面想云原生的技术升级,成为阿里云新增长引擎。商业化产品包括容器、云原生中间件、函数计算等。
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载