CCE provides auto scaling through the autoscaler add-on. Nodes with different specifications can be automatically added across AZs on demand.
If a node scaling policy and the configuration in the autoscaler add-on take effect at the same time, for example, there are pods that cannot be scheduled and the value of a metric reaches the threshold at the same time, scale-out is performed first for the unschedulable pods.
Before using the node scaling function, you must install the autoscaler add-on of v1.13.8 or later.
If the add-ons have been installed, after you click Create Node Scaling Policy, you will directly land on the second step to configure the policy. The first step (checking the add-ons) has been completed almost instantly.
Priority is now supported for node pools. CCE will select a node pool for auto scaling based on the following policies:
For details about the node pool priority, see Autoscaler.
Name: Enter a rule name.
Type: You can select Metric-based or Periodic. The differences between the two types are as follows:
If rules based on the CPU allocation rate and memory allocation rate are configured and two or more rules meet the scale-out conditions, the rule that will add the most nodes will be executed.
If a rule based on the CPU allocation rate and a periodic rule are configured and they both meet the scale-out conditions, one of them will be executed randomly. The rule executed first (rule A) changes the node pool to the scaling state. As a result, the other rule (rule B) cannot be executed. After rule A is executed and the node pool status becomes normal, rule B will not be executed.
You can click Add Rule again to add more node scaling policies. You can add a maximum of one CPU usage-based rule and one memory usage-based rule. The total number of rules cannot exceed 10.
CCE cannot trigger scale-in by using node scaling policies. You can set a scale-in policy when installing the autoscaler add-on.
Node scale-in can be triggered only by the resource allocation rate. When CPU and memory allocation rates in a cluster are lower than the specified thresholds (set when the autoscaler add-on is installed or modified), scale-in is triggered for nodes in the node pool (this function can be disabled).
The following is a YAML example of a node scaling policy:
apiVersion: autoscaling.cce.io/v1alpha1 kind: HorizontalNodeAutoscaler metadata: creationTimestamp: "2020-02-13T12:47:49Z" generation: 1 name: xxxx namespace: kube-system resourceVersion: "11433270" selfLink: /apis/autoscaling.cce.io/v1alpha1/namespaces/kube-system/horizontalnodeautoscalers/xxxx uid: c2bd1e1d-60aa-47b5-938c-6bf3fadbe91f spec: disable: false rules: - action: type: ScaleUp unit: Node value: 1 cronTrigger: schedule: 47 20 * * * disable: false ruleName: cronrule type: Cron - action: type: ScaleUp unit: Node value: 2 disable: false metricTrigger: metricName: Cpu metricOperation: '>' metricValue: "40" unit: Percent ruleName: metricrule type: Metric targetNodepoolIds: - 7d48eca7-3419-11ea-bc29-0255ac1001a8
Parameter |
Type |
Description |
---|---|---|
spec.disable |
Bool |
Whether to enable the scaling policy. This parameter takes effect for all rules in the policy. |
spec.rules |
Array |
All rules in a scaling policy. |
spec.rules[x].ruleName |
String |
Rule name. |
spec.rules[x].type |
String |
Rule type. Currently, Cron and Metric are supported. |
spec.rules[x].disable |
Bool |
Rule switch. Currently, only false is supported. |
spec.rules[x].action.type |
String |
Rule action type. Currently, only ScaleUp is supported. |
spec.rules[x].action.unit |
String |
Rule action unit. Currently, only Node is supported. |
spec.rules[x].action.value |
Integer |
Rule action value. |
spec.rules[x].cronTrigger |
/ |
Optional. This parameter is valid only in periodic rules. |
spec.rules[x].cronTrigger.schedule |
String |
Cron expression of a periodic rule. |
spec.rules[x].metricTrigger |
/ |
Optional. This parameter is valid only in metric-based rules. |
spec.rules[x].metricTrigger.metricName |
String |
Metric of a metric-based rule. Currently, Cpu and Memory are supported. |
spec.rules[x].metricTrigger.metricOperation |
String |
Comparison operator of a metric-based rule. Currently, only > is supported. |
spec.rules[x].metricTrigger.metricValue |
String |
Metric threshold of a metric-based rule. The value can be any integer from 1 to 100 and must be a character string. |
spec.rules[x].metricTrigger.Unit |
String |
Unit of the metric-based rule threshold. Currently, only % is supported. |
spec.targetNodepoolIds |
Array |
All node pools associated with the scaling policy. |
spec.targetNodepoolIds[x] |
String |
ID of the node pool associated with the scaling policy. |