# 集群弹性伸缩配置
#### 弹性扩容配置
CCE集群弹性引擎将综合判断整集群的资源情况，当微服务负载高（CPU/内存使用率过高）时水平扩容，增加Pod的数量以降低负载。
**节点扩容条件**
- 负载无法调度时自动扩容：集群中存在负载实例无法调度时，尝试自动扩容已开启弹性伸缩的节点池。若Pod已经设置亲和某个节点，则不会自动扩容节点。 该功能可以和HPA策略配合使用，具体请参见[使用HPA+CA实现工作负载和节点联动弹性伸缩](https://support.huaweicloud.com/usermanual-cce/cce_10_0300.html)。
  
- 自定义节点弹性策略开关：根据[节点弹性策略](https://support.huaweicloud.com/usermanual-cce/cce_10_0209.html)自动扩容节点池，默认开启。
![](https://support.huaweicloud.com/usermanual-cce/public_sys-resources/note_3.0-zh-cn.png)
当**负载无法调度时自动扩容** 的配置和**[节点弹性策略中的指标规则](https://support.huaweicloud.com/usermanual-cce/cce_10_0209.html)** 同时生效时，如果同时出现负载无法调度时自动扩容和弹性策略指标规则同时满足的情况，将优先执行负载无法调度自动扩容的逻辑。
- 若负载无法调度时自动扩容执行成功，则会跳过指标规则逻辑，进入下一次判定周期。
- 若负载无法调度时自动扩容执行失败，将执行指标规则逻辑。
 
**节点扩容资源上限**
- 节点数量：扩容时，集群下所有节点数量的上限，超过该值时将不再扩容。默认为集群管理规模的节点上限。
- CPU核数：扩容时，集群下所有节点CPU核数之和的上限，超过该值时将不再扩容。默认不限。
- 内存（GiB）：扩容时，集群下所有节点内存之和的上限，超过该值时将不再扩容。默认不限。
![](https://support.huaweicloud.com/usermanual-cce/public_sys-resources/note_3.0-zh-cn.png)
统计节点、CPU和内存总数时，包含集群中的不可用节点。但如果使用*kubectl delete node* 命令删除**默认节点池** 中的节点而导致节点不可用，统计节点、CPU和内存总数时**不会将该节点计入**。
该删除动作并非CCE支持的标准化操作，如果您需要删除节点请参考[删除/退订节点](https://support.huaweicloud.com/usermanual-cce/cce_10_0186.html)。
**节点池扩容优先级**
节点池列表可通过拖拽调整扩容优先级，包年包月计费的节点池不支持弹性扩容。
#### 弹性缩容配置
CCE集群弹性引擎将综合判断整集群的资源情况，在满足负载迁移后能够正常调度运行的前提下，自动筛选节点来进行缩容。弹性缩容开关默认为关闭，如果卸载插件后重新安装，需要重新开启弹性缩容开关。
**节点缩容条件**
集群下的节点默认遵循默认缩容条件，当节点池自定义缩容条件后，该节点池下的节点优先遵循自定义缩容条件。
表1节点缩容条件配置 
| 参数            | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
|:---|:---|
| 默认缩容条件        | 当节点的CPU和内存分配率（CPU和内存需同时满足）连续一段时间（默认10分钟）低于一定百分比（默认50%）时，或节点处于不可用状态下超过一定时间（默认20分钟）会触发集群缩容操作。 **分配率 = 所有Pod资源申请量之和 / 节点可用资源量 (Node Allocatable)** 如果勾选"忽略DaemonSet类容器预分配的CPU与内存"，在计算节点资源是否超过缩容阈值时，不会计算DaemonSet类容器的资源请求值。由于DaemonSet会在每个节点上预占一部分资源，如果未勾选该配置，对于某些小规格节点，即使节点上没有运行其他应用的Pod，DaemonSet类容器的资源请求值就已经超过缩容阈值，节点可能永远不被缩容。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| 自定义缩容条件（可选） | 支持为每个节点池配置缩容条件，当节点池中节点的CPU和内存分配率（CPU和内存需同时满足）连续一段时间（默认10分钟）低于一定百分比（默认50%）时，会触发该节点池缩容。 自定义缩容条件在CCE集群弹性引擎插件版本为1.25.181、1.27.152、1.28.120、1.29.81、1.30.48、1.31.10及以上支持。当节点池中的所有规格均未开启自动伸缩功能时，为节点池配置自定义缩容条件将不会生效，节点池开启自动伸缩功能请参见[配置节点池弹性伸缩策略](https://support.huaweicloud.com/usermanual-cce/cce_10_0209.html#cce_10_0209__section4444195220142)。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| 缩容例外场景        | 节点满足以下例外场景时，即使节点资源或状态满足缩容条件，不会被CCE集群弹性引擎自动缩容。 - 集群其它节点资源不足时将不会触发非完全空闲节点缩容。  - 节点开启缩容保护时将不会触发节点缩容。如需开启或关闭节点缩容保护，请前往"节点管理 \> 节点"页面，单击节点操作列的"更多 \> 开启/关闭节点缩容保护"按钮操作。  - 节点上存在指定不缩容标记的Pod时，该节点将不会被缩容。  - 节点上的部分容器存在可靠性等配置策略时，将有可能不会自动缩容。  - 节点上存在kube-system命名空间下的非DaemonSet类容器时，该节点将不会被缩容。  - （可选）节点上如果存在已运行的容器由第三方Pod Controller进行管理，则该节点不会被缩容。第三方Pod Controller是指除Kubernetes原生的工作负载（如Deployment、StatefulSet等）外的自定义工作负载，可通过[自定义资源CRD](https://kubernetes.io/zh-cn/docs/concepts/extend-kubernetes/api-extension/custom-resources/#customresourcedefinitions)进行创建。   |
   
**节点缩容策略**
表2节点缩容策略配置 
| 名称                                                                    | 说明                                                                                                                                                                                                                             | 默认值    |
|:---|:---|:---|
| 缩容并发数                                                                   | 最多支持多少个空闲节点同时缩容。实际缩容并发数还受节点删除接口的流控值影响。 缩容并发数只针对完全空闲节点，完全空闲节点可实现并发缩容。非完全空闲节点则只能逐个缩容。 说明： 节点在缩容的时候，若节点上的所有Pod都不需要驱逐（DaemonSet的Pod认为不需要驱逐），则认为该节点为完全空闲节点，否则认为该节点为非完全空闲。 | 10     |
| 检查周期                                                                    | 节点被判定不可缩容后能再次启动检查的时间间隔。                                                                                                                                                                                                      | 5min   |
| 冷却时间 （如果集群中同时触发多个冷却时间，所有冷却完成后才会再次启动缩容评估） | 集群触发弹性缩容后，再次启动缩容评估的冷却时间。                                                                                                                                                                                                      | 10min   |
| 冷却时间 （如果集群中同时触发多个冷却时间，所有冷却完成后才会再次启动缩容评估） | 集群触发弹性扩容后，再次启动缩容评估的冷却时间。 说明： 集群中如果同时存在自动扩容和自动缩容的场景，建议配置该参数为0min，避免由于部分节点池持续扩容或者扩容失败重试而阻塞整体缩容节点行为，导致非预期的节点资源浪费。                                                                                   | 10min |
| 冷却时间 （如果集群中同时触发多个冷却时间，所有冷却完成后才会再次启动缩容评估） | 集群触发弹性缩容失败后，再次启动缩容评估的冷却时间。                                                                                                                                                                                                     | 3min    |
   
