CCE Cluster Autoscaler¶
Add-on Overview¶
The CCE Cluster Autoscaler (autoscaler) add-on enables node pools to be scaled in or out.
Add-on Parameters¶
Parameter | Mandatory | Type | Description |
---|---|---|---|
basic | No | object | Basic configuration parameters, which do not need to be specified |
flavor | Yes | Table 2 object | Flavor parameters |
custom | Yes | Table 3 object | Custom parameters |
Parameter | Mandatory | Type | Description |
---|---|---|---|
replicas | Yes | String | Number of pods. The default value is 2. |
resources | Yes | Array of resources object | Container resource (CPU and memory) quotas |
Parameter | Mandatory | Type | Description |
---|---|---|---|
cluster_id | Yes | string | Cluster ID. |
tenant_id | Yes | string | ID of the project where the current cluster is in. |
scaleDownEnabled | No | bool | Whether to enable auto scale-in. The default value is false. |
scaleDownDelayAfterAdd | No | int | Cooldown period (in minutes) for starting scale-in evaluation again after auto scale-out was triggered in a cluster. The default value is 10. |
scaleDownDelayAfterDelete | No | int | Cooldown period (in minutes) for starting scale-in evaluation again after auto scale-in was triggered in a cluster. The default value is 10. |
scaleDownDelayAfterFailure | No | int | Cooldown period (in minutes) for starting scale-in evaluation again after auto scale-in triggered by a cluster failed. The default value is 10. |
maxEmptyBulkDeleteFlag | No | int | Number of idle nodes that can be concurrently scaled in. The default value is 10. |
unremovableNodeRecheckTimeout | No | int | Interval (in minutes) for starting the checks again after a node is determined not to be scaled in. The default value is 5. |
scaleDownUtilizationThreshold | No | double | CPU and memory usage thresholds for determining whether a node can be scaled in. The default value is 0.5. |
maxNodesTotal | No | int | Maximum number of nodes that can be added to a cluster. The default value is 1000. |
coresTotal | No | int | Maximum number of CPU cores that can be added to a cluster. The default value is 32000. |
memoryTotal | No | int | Memory upper limit (in Gi) for cluster scale-out. The default value is 128000. |
scaleUpUtilizationEnabled | No | bool | Whether to enable custom scaling. The default value is true. |
scaleUpUnscheduledPodEnabled | No | bool | Whether to enable automatic scale-out for unscheduled pods. The default value is true. |
ignoreDaemonSetsUtilization | No | bool | Whether to ignore DaemonSets' resource usage when thresholds determine if scale-in is performed. The default value is false. |
skipNodesWithCustomControllerPods | No | bool | Scale-in is not performed on the node which has containers created by a third-party controller running on it. The default value is true. |
logLevel | No | int | Log level. The default value is 4. |
multiAZEnable | No | bool | Whether to enable the forcible mode of multi-AZ deployment for the deployment component. The default value is false. Deployment pods of the add-on will be forcibly scheduled to nodes in different AZs. If there are fewer AZs than pods, the extra pods will fail to run. If both multiAZEnable and multiAZBalance are set to true, the settings of multiAZBalance take effect, which means, the equivalent mode of multi-AZ deployment is used. |
multiAZBalance | No | bool | Whether to enable the equivalent mode of multi-AZ deployment for the deployment component. The default value is false. Deployment pods of the add-on are evenly scheduled to the nodes in the cluster in each AZ. If a new AZ is added, it is recommended that you increase add-on pods for cross-AZ HA deployment. With the equivalent multi-AZ deployment, the difference between the number of add-on pods in different AZs will be less than or equal to 1. If resources in one of the AZs are insufficient, pods cannot be scheduled to that AZ. |
tolerations | No | Array of Table 5 | Toleration configuration |
node_match_expressions | No | Array of Table 6 | Add-on pod affinity configuration |
Parameter | Mandatory | Type | Description |
---|---|---|---|
limitsCpu | Yes | String | CPU size limit (unit: m) |
limitsMem | Yes | String | Memory size limit (unit: Mi) |
name | Yes | String | Add-on name. The value is fixed at autoscaler. |
requestsCpu | Yes | String | Requested CPU size (unit: m) |
requestsMem | Yes | String | Requested memory size (unit: Mi) |
Parameter | Mandatory | Type | Description |
---|---|---|---|
key | No | String | Taint key |
effect | No | String | Taint policy |
operator | No | String | Operator |
tolerationSeconds | No | Int | Toleration time window |
Parameter | Mandatory | Type | Description |
---|---|---|---|
key | No | String | Taint key |
values | No | List<String> | Node affinity name |
operator | No | String | Operator |
Example Request¶
{
"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
}
}
}
}