
# CCE集群弹性引擎
#### 插件介绍
CCE集群弹性引擎（autoscaler）提供节点池弹性伸缩能力。
#### 字段说明
表1参数描述 
| 参数     | 是否必选 | 参数类型                                            | 描述             |
|:---|:---|:---|:---|
| basic  | 否    | object                                          | 插件基础配置参数，无需指定。 |
| flavor | 是    | [表2] object      | 插件规格参数。        |
| custom | 是    | [表3] object | 插件自定义参数。       |
   
 表2flavor 
| 参数        | 是否必选 | 参数类型                                                         | 描述              |
|:---|:---|:---|:---|
| replicas  | 是    | String                                                       | 实例数，默认为：2。      |
| resources | 是    | Array of [resources] object | 容器资源（CPU、内存）配额。 |
   
 表3custom 
| 参数                                | 是否必选 | 参数类型                                             | 描述                                                                                                                                                                       |
|:---|:---|:---|:---|
| cluster_id                        | 是    | string                                           | 当前集群ID。                                                                                                                                                                  |
| tenant_id                         | 是    | string                                           | 当前集群所在的项目ID。                                                                                                                                                             |
| scaleDownEnabled                  | 否    | bool                                             | 是否开启弹性缩容，默认值：false。                                                                                                                                                      |
| scaleDownDelayAfterAdd            | 否    | int                                              | 集群触发弹性扩容后，再次启动缩容评估的冷却时间,单位分钟，默认值：10。                                                                                                                                     |
| scaleDownDelayAfterDelete         | 否    | int                                              | 集群触发弹性缩容后，再次启动缩容评估的冷却时间，单位分钟，默认值：10。                                                                                                                                     |
| scaleDownDelayAfterFailure        | 否    | int                                              | 集群触发弹性缩容失败后，再次启动缩容评估的冷却时间，单位分钟，默认值：10。                                                                                                                                   |
| maxEmptyBulkDeleteFlag            | 否    | int                                              | 空闲节点缩容并发数，默认值：10。                                                                                                                                                        |
| unremovableNodeRecheckTimeout     | 否    | int                                              | 节点被判定不可缩容后能再次启动检查的时间间隔，单位分钟，默认值：5。                                                                                                                                       |
| scaleDownUtilizationThreshold     | 否    | double                                           | 判断节点可缩容的cpu和内存资源使用率门限，默认0.5。                                                                                                                                             |
| maxNodesTotal                     | 否    | int                                              | 集群扩容的节点数量上限，默认1000。                                                                                                                                                      |
| coresTotal                        | 否    | int                                              | 集群扩容的CPU核数上限，默认32000。                                                                                                                                                    |
| memoryTotal                       | 否    | int                                              | 集群扩容的内存上限，单位Gi，默认128000。                                                                                                                                                 |
| scaleUpUtilizationEnabled         | 否    | bool                                             | 是否开启自定义弹性，默认true。                                                                                                                                                        |
| scaleUpUnscheduledPodEnabled      | 否    | bool                                             | 是否开启未调度pod触发自动扩容，默认true。                                                                                                                                                 |
| ignoreDaemonSetsUtilization       | 否    | bool                                             | 缩容门限判断时是否忽略daemonset型应用资源占用，默认false。                                                                                                                                     |
| skipNodesWithCustomControllerPods | 否    | bool                                             | 节点上存在第三方controller创建容器时不进行缩容，默认true。                                                                                                                                     |
| logLevel                          | 否    | int                                              | 日志级别，默认4。                                                                                                                                                                |
| multiAZEnable                     | 否    | bool                                             | 插件中deployment组件多可用部署是否采用强制模式，默认：false。强制模式下插件Deployment实例强制调度到不同可用区的节点上，如集群下节点不满足多可用区，插件实例将无法全部运行。若multiAZEnable与multiAZBalance配置也同时为true，则以multiAZBalance为准使用多可用部署均分模式。 |
| multiAZBalance                    | 否    | bool                                             | 插件中deployment组件多可用部署是否采用均分模式，默认：false。插件Deployment实例均匀调度到当前集群下各可用区，增加新的可用区后建议扩容插件实例以实现跨可用区高可用部署；均分模式限制不同可用区间插件实例数相差不超过1，单个可用区资源不足会导致后续其他实例无法调度。                          |
| tolerations                       | 否    | Array of [表5]  | 污点容忍配置                                                                                                                                                                   |
| node_match_expressions            | 否    | Array of [表6] | 插件实例亲和性配置                                                                                                                                                                |
   
 表4resources字段数据结构说明 
| 参数          | 是否必选 | 参数类型   | 描述                   |
|:---|:---|:---|:---|
| limitsCpu   | 是    | String | CPU大小限制，单位：m。        |
| limitsMem   | 是    | String | 内存大小限制，单位：Mi。        |
| name        | 是    | String | 插件名称，固定为：autoscaler。 |
| requestsCpu | 是    | String | 申请的CPU大小，单位：m。       |
| requestsMem | 是    | String | 申请的内存大小，单位：Mi。       |
   
 表5tolerations污点 
| 参数                | 是否必选 | 参数类型   | 描述    |
|:---|:---|:---|:---|
| key               | 否    | String | 污点键   |
| effect            | 否    | String | 污点策略  |
| operator          | 否    | String | 操作符   |
| tolerationSeconds | 否    | Int    | 容忍时间窗 |
   
 表6nodeMatchExpression节点亲和配置 
| 参数       | 是否必选 | 参数类型           | 描述      |
|:---|:---|:---|:---|
| key      | 否    | String         | 污点键     |
| values   | 否    | List\<String\> | 节点亲和的名称 |
| operator | 否    | String         | 操作符     |
   
#### 请求示例
```
{
"kind": "Addon",
"apiVersion": "v3",
"metadata": {
"annotations": {
"addon.install/type": "install"
}
},
"spec": {
"clusterID": "2292498e-*******-0255ac1001ba",
"version": "1.23.116",
"addonTemplateName": "autoscaler",
"values": {
                        "basic": {
"basickey":"val"
},
"flavor": {
"replicas": 2,
"resources": [{
"limitsCpu": "1000m",
"limitsMem": "1000Mi",
"name": "autoscaler",
"requestsCpu": "1000m",
"requestsMem": "1000Mi"
}]
},
"custom": {
"cluster_id": "2292498e-*******-0255ac1001ba",
"coresTotal": 32000,
"ignoreDaemonSetsUtilization": false,
"logLevel": 4,
"maxEmptyBulkDeleteFlag": 10,
"maxNodeProvisionTime": 15,
"maxNodesTotal": 1000,
"memoryTotal": 128000,
"multiAZBalance": false,
"multiAZEnabled": false,
"node_match_expressions": [],
"scaleDownDelayAfterAdd": 10,
"scaleDownDelayAfterDelete": 10,
"scaleDownDelayAfterFailure": 3,
"scaleDownEnabled": false,
"scaleDownUnneededTime": 10,
"scaleDownUtilizationThreshold": 0.5,
"scaleUpUnscheduledPodEnabled": true,
"scaleUpUtilizationEnabled": true,
"skipNodesWithCustomControllerPods": true,
"tenant_id": "*****************",
"tolerations": [{
"key": "node.kubernetes.io/not-ready",
"operator": "Exists",
"effect": "NoExecute",
"tolerationSeconds": 60
},
{
"key": "node.kubernetes.io/unreachable",
"operator": "Exists",
"effect": "NoExecute",
"tolerationSeconds": 60
}],
"unremovableNodeRecheckTimeout": 5
}
}
}
}
```
