# 云原生混部概述
随着云原生技术迅速发展，海量应用正在走向云原生化。从2021年到2022年，Kubernetes集群中的云原生应用总数同比增长30%+，Kubernetes正在成为云时代的"操作系统"。但随着进一步调研发现，应用部署在Kubernetes集群后，大部分用户节点的CPU利用率不足15%。在调研不同类型客户，排除一些闲置资源、套餐活动等干扰因素后，发现造成资源利用率低的主要因素可归纳为如下几点：
1. 集群规划粒度过细，节点分布过散：集群规划粒度过细，节点分布在多个不同的集群中，使得计算资源无法共享，计算资源碎片数量增加。
2. 节点规格没有跟随应用迭代而变化，资源分配率低：初期节点规格与应用规格匹配度较好，资源分配率较高；随着应用版本迭代，应用申请资源发生变化，与节点规格比例差异较大，使节点分配率降低，计算资源碎片数量增加。
3. 业务"潮汐"特性明显，预留资源较多：在线业务具有明显日级别波峰、波谷特性，用户为保证服务的性能和稳定性按照波峰申请资源，集群的大部分资源处于闲置状态。
4. 在线和离线作业分布不同集群，资源无法分时复用：用户为在线和离线作业划分不同的K8s集群中，在线业务在波谷时，无法部署离线作业使用这部分资源。
这些都是云原生应用粗犷发展阶段的典型表现。在业务云原生化过程中，不同的业务架构有着不同的部署方案，不同架构的应用有着不同的演进节奏，不同的团队有着性能和服务质量的平衡点。面对这样复杂的场景，应该如何化繁为简，帮助用户有步骤的提升资源利用率和控制成本呢？
CCE通过多年在混合部署领域的探索和实践，围绕Volcano和Kubernetes生态，构建帮助用户提升资源利用率，实现降本增效的云原生混部解决方案。
![](https://support.huaweicloud.com/usermanual-cce/zh-cn_image_0000002275354625.png "点击放大")
如上图所示，混部不是简单将多个不同的业务部署在同一个集群中那么简单，而需要确保用户的应用能够部署到合适的位置，并能保障其需要的资源。这也是云原生混部解决方案中的核心设计：资源分级管控。
#### 资源分级管控
应用被调度到合适的运行环境后，如何来保障其所需要的资源呢？
基于Huawei Cloud EulerOS 2.0操作系统，从CPU、L3缓存、内存、网络等全方位提供资源隔离能力，并以内核态为主，用户态为辅，通过快速抢占（毫秒）和快速驱逐（秒级），保障在线业务的服务质量。
- 资源隔离的措施，如：CPU的绑核、NUMA亲和性、潮汐亲和特性，网络带宽控制等，有效地保障资源敏感型业务的SLO。
- 资源优先级控制的措施，如：CPU分级控制、内存分级控制、网络优先级控制等，在提升资源分配率的同时，又少影响或不影响优先级高的业务SLO。
资源分级管控为业务潮汐明显的在线业务间混部、在线和离线业务混部奠定了基础。解决了应用预留资源较多、资源无法分时复用的问题。
#### 在线作业与离线作业
从业务是否一直在线的角度看，其类型可分为在线作业和离线作业。
- **在线作业**：一般运行时间长，服务流量呈周期性，资源存在潮汐现象，但对服务SLA要求较高，如广告业务、电商业务等。
- **离线作业**：往往运行时间短，计算需求大，可容忍较高的时延，如AI/大数据业务。
 
#### 功能介绍
| 功能              | 描述                                                                                                                                                                                                                                         | 参考文档                                                                              |
|:---|:---|:---|
| 动态资源超卖         | 根据在线作业和离线作业类型，通过Volcano调度将集群中申请而未使用的资源（即申请量与使用量的差值）利用起来，实现资源超卖和混合部署，提升集群资源利用率。                                                                                                                                                            | [动态资源超卖](https://support.huaweicloud.com/usermanual-cce/cce_10_0384.html)        |
| 基于Pod实例画像的资源超卖 | 提供一种超卖算法，能够持续采集节点上Pod的CPU和内存利用率，统计资源使用的概率分布，并在一定置信度下评估节点资源占用。算法综合考虑资源使用的整体水平及波动，能够计算出稳定的超卖量，从而减少资源竞争，避免业务波动引起的Pod频繁驱逐。 相比直接基于节点实时CPU和内存利用率的算法，该算法能有效减少超卖量波动，提升对突发资源尖峰的覆盖能力，从而在保障业务性能相对稳定的同时实现资源超卖。 | [基于Pod实例画像的资源超卖](https://support.huaweicloud.com/usermanual-cce/cce_10_0942.html) |
| CPU Burst弹性限流   | 提供一种可以短暂突破CPU Limit值的弹性限流机制，以降低业务长尾响应时间，可以有效提升时延敏感型业务的服务质量。                                                                                                                                                                              | [CPU Burst弹性限流](https://support.huaweicloud.com/usermanual-cce/cce_10_0700.html)  |
| 出口网络带宽保障         | 平衡在线业务与离线业务对出口网络带宽的使用，保证在线业务有足够的网络带宽。                                                                                                                                                                                                    | [出口网络带宽保障](https://support.huaweicloud.com/usermanual-cce/cce_10_0701.html)        |
   
