You can call the CreateClusterNodePool operation to create a node pool for a Container Service for Kubernetes (ACK) cluster.
Debugging
Request syntax
POST /clusters/ClusterId/nodepools HTTP/1.1
Content-Type:application/json
{
"auto_scaling" : {
"enable" : Boolean,
"max_instances" : Long,
"min_instances" : Long,
"type" : "String",
"is_bond_eip" : Boolean,
"eip_internet_charge_type" : "String",
"eip_bandwidth" : Long
},
"kubernetes_config" : {
"cms_enabled" : Boolean,
"cpu_policy" : "String",
"labels" : [ {
"key" : "String",
"value" : "String"
} ],
"runtime" : "String",
"runtime_version" : "String",
"taints" : [ {
"key" : "String",
"value" : "String",
"effect" : "String"
} ],
"user_data" : "String"
},
"nodepool_info" : {
"name" : "String",
"resource_group_id" : "String"
},
"scaling_group" : {
"auto_renew" : Boolean,
"auto_renew_period" : Long,
"data_disks" : [ {
"category" : "String",
"size" : Long,
"encrypted" : "String",
"auto_snapshot_policy_id" : "String"
} ],
"image_id" : "String",
"instance_charge_type" : "String",
"instance_types" : [ "String" ],
"key_pair" : "String",
"login_password" : "String",
"period" : Long,
"period_unit" : "String",
"platform" : "String",
"rds_instances" : [ "String" ],
"spot_strategy" : "String",
"spot_price_limit" : [ {
"instance_type" : "String",
"price_limit" : "String"
} ],
"scaling_policy" : "String",
"security_group_id" : "String",
"security_group_ids" : [ "String" ],
"system_disk_category" : "String",
"system_disk_size" : Long,
"tags" : [ {
"key" : "String",
"value" : "String"
} ],
"vswitch_ids" : [ "String" ],
"multi_az_policy" : "String",
"on_demand_base_capacity" : Long,
"on_demand_percentage_above_base_capacity" : Long,
"spot_instance_pools" : Long,
"spot_instance_remedy" : Boolean,
"compensate_with_on_demand" : Boolean,
"internet_charge_type" : "String",
"internet_max_bandwidth_out" : Long
},
"tee_config" : {
"tee_enable" : Boolean
},
"management" : {
"enable" : Boolean,
"auto_repair" : Boolean,
"upgrade_config" : {
"auto_upgrade" : Boolean,
"surge" : Long,
"surge_percentage" : Long,
"max_unavailable" : Long
}
},
"count" : Long
}
Request parameters
Parameter | Type | Required | Example | Description |
---|---|---|---|---|
ClusterId | String | Yes | c61da77e8bfbc4c4c999af2b51b65**** |
The ID of the cluster for which you want to create a node pool. |
Parameter | Type | Required | Example | Description |
---|---|---|---|---|
auto_scaling | Object | No |
The configurations of auto scaling. |
|
enable | Boolean | Yes | true |
Specifies whether to enable auto scaling. Valid values:
Default value: |
max_instances | Long | Yes | 10 |
The maximum number of Elastic Compute Service (ECS) instances that are supported in the scaling group. |
min_instances | Long | Yes | 1 |
The minimum number of ECS instances that must be kept in the scaling group. |
type | String | No | cpu |
The instance types that can be used for the auto scaling of the node pool. Valid values:
Default value: |
is_bond_eip | Boolean | No | true |
Specifies whether to associate an elastic IP address (EIP) with the node pool. Valid values:
Default value: |
eip_internet_charge_type | String | No | PayByBandwidth |
The billing method of the EIP. Valid values:
Default value: |
eip_bandwidth | Long | No | 5 |
The peak bandwidth of the EIP. |
kubernetes_config | Object | No |
The configurations of the cluster. |
|
cms_enabled | Boolean | No | true |
Specifies whether to install the CloudMonitor agent on ECS nodes. After the CloudMonitor agent is installed on ECS nodes, you can view monitoring information about the instances in the CloudMonitor console. We recommend that you install the CloudMonitor agent. Valid values:
Default value: |
cpu_policy | String | No | none |
The CPU management policy. The following policies are supported if the Kubernetes version of the cluster is 1.12.6 or later.
Default value: |
labels | Array of tag | No |
The labels that you want to add to the nodes in the cluster. |
|
runtime | String | Yes | docker |
The name of the container runtime. |
runtime_version | String | Yes | 19.03.5 |
The version of the container runtime. |
taints | Array of taint | No |
The taints that you want to add to the nodes. |
|
user_data | String | No | dGhpcyBpcyBhIGV4YW1wbGU= |
The user-defined data. |
nodepool_info | Object | No |
The configurations of the node pool. |
|
name | String | Yes | cluster-demo |
The name of the node pool. |
resource_group_id | String | No | rg-acfmyvw3wjmb**** |
The ID of the resource group to which the node pool belongs. |
scaling_group | Object | No |
The configurations of the scaling group used by the node pool. |
|
auto_renew | Boolean | No | true |
Specifies whether to enable auto-renewal for nodes in the node pool. This parameter
takes effect only when
Default value: |
auto_renew_period | Long | No | 1 |
The auto-renewal period for nodes in the node pool. This parameter takes effect and
is required only when instance_charge_type is set to PrePaid and auto_renew is set
to true. If Default value: 1 |
data_disks | Array of data_disk | No |
The configurations of data disks. |
|
image_id | String | No | aliyun_2_1903_x64_20G_alibase_20200529.vhd |
The ID of a custom image. By default, the image provided by ACK is used. |
instance_charge_type | String | Yes | PrePaid |
The billing method of nodes in the node pool. Valid values:
Default value: |
instance_types | Array of String | Yes | ecs.d1ne.2xlarge |
The instance types. |
key_pair | String | No | np-key-name |
The name of the key pair used to log on to the nodes. You must set this parameter
or Note Note: If you want to create a managed node pool, you must set
key_pair .
|
login_password | String | No | Hello1234 |
The password for SSH logon. You must set this parameter or |
period | Long | No | 1 |
The subscription duration of nodes in the node pool. This parameter takes effect and
is required only when Default value: 1 |
period_unit | String | No | Month |
The unit of the subscription period of nodes in the node pool. This parameter is required
if you set instance_charge_type to |
platform | String | Yes | Linux |
The release version of the operating system. Valid values:
Default value: |
rds_instances | Array of String | No | rds-**** |
The IDs of the ApsaraDB RDS instances. |
spot_strategy | String | No | NoSpot |
The type of preemptible instance. Valid values:
For more information, see Preemptible instances. |
spot_price_limit | Array | No |
The instance type for preemptible instances and the price limit of the instance type. |
|
instance_type | String | No | ecs.c6.large |
The instance type for preemptible instances. |
price_limit | String | No | 0.39 |
The price limit of a preemptible instance. Unit: USD/hour. |
scaling_policy | String | No | release |
The scaling mode of the scaling group. Valid values:
Default value: |
security_group_id | String | No | sg-wz9a8g2mt6x5llu0**** |
Specifies the ID of the security group to which you want to add the node pool. You
must set this parameter or |
security_group_ids | Array of String | No | sg-wz9a8g2mt6x5llu0**** |
Specifies the IDs of security groups to which you want to add the node pool. You must
set this parameter or |
system_disk_category | String | Yes | cloud_efficiency |
The type of system disk. Valid values:
Default value: |
system_disk_size | Long | Yes | 120 |
The system disk size of a node. Unit: GiB. Valid values: 40 to 500 |
tags | Array | No |
Adds labels only to ECS instances. A key must be unique and cannot exceed 128 characters in length. Neither keys nor values can start with aliyun or acs:. Neither keys nor values can contain https:// or http://. |
|
key | String | No | node-k-1 |
The name of the label. |
value | String | No | node-v-1 |
The value of the label. |
vswitch_ids | Array of String | Yes | vsw-wz9mfnhmssud6eicu**** |
The IDs of vSwitches. |
multi_az_policy | String | No | COST_OPTIMIZED |
The ECS instance scaling policy for a multi-zone scaling group. Valid values:
Default value: |
on_demand_base_capacity | Long | No | 0 |
The minimum number of pay-as-you-go instances that must be kept in the scaling group. Valid values: 0 to 1000. When the number of pay-as-you-go instances is lower than this value, pay-as-you-go instances are preferentially created to meet the required number. |
on_demand_percentage_above_base_capacity | Long | No | 20 |
The percentage of pay-as-you-go instances among the extra instances that exceed the
number specified by |
spot_instance_pools | Long | No | 5 |
The number of available instance types. The scaling group creates preemptible instances of multiple instance types at the lowest cost. Valid values: 1 to 10 |
spot_instance_remedy | Boolean | No | false |
Specifies whether to supplement instances when the number of preemptible instances drops below the specified minimum number. If this parameter is set to true, when the scaling group receives a system message that a preemptible instance is to be reclaimed, the scaling group attempts to create a new instance to replace this instance. Valid values:
|
compensate_with_on_demand | Boolean | No | true |
Specifies whether to automatically create pay-as-you-go instances to meet the required
number of ECS instances if preemptible instances cannot be created due to reasons
such as the cost or insufficient inventory. This parameter takes effect when
|
internet_charge_type | String | No | PayByTraffic |
The billing method of the public IP address. |
internet_max_bandwidth_out | Long | No | 5 |
The bandwidth of the public IP address. |
tee_config | Object | No |
The configurations of confidential computing. |
|
tee_enable | Boolean | Yes | true |
Specifies whether to enable confidential computing for the cluster. |
management | Object | No |
The configurations of managed node pools. |
|
enable | Boolean | Yes | false |
Specifies whether to enable managed node pools. Valid values:
|
auto_repair | Boolean | No | false |
Specifies whether to enable auto repair. This parameter takes effect only when
|
upgrade_config | Object | No |
The configurations of auto upgrade. The configurations take effect only when |
|
auto_upgrade | Boolean | No | false |
Specifies whether to enable auto upgrade. Valid values:
|
surge | Long | No | 0 |
The number of nodes that are temporarily added to the node pool during an auto upgrade. |
surge_percentage | Long | No | 0 |
The percentage of temporary nodes to the nodes in the node pool. You must set this
parameter or |
max_unavailable | Long | Yes | 0 |
The maximum number of nodes that can be in the unschedulable state. Valid values: 1 to 1000 Default value: 1 |
count | Long | No | 1 |
The number of nodes in the node pool. |
Response syntax
HTTP/1.1 200
Content-Type:application/json
{
"nodepool_id" : "String"
}
Response parameters
Parameter | Type | Example | Description |
---|---|---|---|
nodepool_id | String | np31da1b38983f4511b490fc62108a**** |
The ID of the created node pool. |
Examples
Sample requests
POST /clusters/c61da77e8bfbc4c4c999af2b51b65****/nodepools HTTP/1.1
Host:cs.aliyuncs.com
Content-Type:application/json
{
"auto_scaling" : {
"enable" : true,
"max_instances" : 10,
"min_instances" : 1,
"type" : "cpu",
"is_bond_eip" : true,
"eip_internet_charge_type" : "PayByBandwidth",
"eip_bandwidth" : 5
},
"kubernetes_config" : {
"cms_enabled" : true,
"cpu_policy" : "none",
"labels" : [ {
"key" : "env",
"value" : "prod"
} ],
"runtime" : "docker",
"runtime_version" : "19.03.5",
"taints" : [ {
"key" : "key",
"value" : "value",
"effect" : "NoSchedule"
} ],
"user_data" : "dGhpcyBpcyBhIGV4YW1wbGU="
},
"nodepool_info" : {
"name" : "cluster-demo",
"resource_group_id" : "rg-acfmyvw3wjmb****"
},
"scaling_group" : {
"auto_renew" : true,
"auto_renew_period" : 1,
"data_disks" : [ {
"category" : "cloud_ssd",
"size" : 40,
"encrypted" : "true",
"auto_snapshot_policy_id" : "sp-2zej1nogjvovnz4z****"
} ],
"image_id" : "aliyun_2_1903_x64_20G_alibase_20200529.vhd",
"instance_charge_type" : "PrePaid",
"instance_types" : [ "ecs.d1ne.2xlarge" ],
"key_pair" : "np-key-name",
"login_password" : "Hello1234",
"period" : 1,
"period_unit" : "Month",
"platform" : "Linux",
"rds_instances" : [ "rds-****" ],
"spot_strategy" : "NoSpot",
"spot_price_limit" : [ {
"instance_type" : "ecs.c6.large",
"price_limit" : "0.39"
} ],
"scaling_policy" : "release",
"security_group_id" : "sg-wz9a8g2mt6x5llu0****",
"security_group_ids" : [ "sg-wz9a8g2mt6x5llu0****" ],
"system_disk_category" : "cloud_efficiency",
"system_disk_size" : 120,
"tags" : [ {
"key" : "node-k-1",
"value" : "node-v-1"
} ],
"vswitch_ids" : [ "vsw-wz9mfnhmssud6eicu****" ],
"multi_az_policy" : "COST_OPTIMIZED",
"on_demand_base_capacity" : 0,
"on_demand_percentage_above_base_capacity" : 20,
"spot_instance_pools" : 5,
"spot_instance_remedy" : false,
"compensate_with_on_demand" : true
},
"tee_config" : {
"tee_enable" : true
},
"management" : {
"enable" : false,
"auto_repair" : false,
"upgrade_config" : {
"auto_upgrade" : false,
"surge" : 0,
"surge_percentage" : 0,
"max_unavailable" : 0
}
},
"count" : 1
}
Description of the sample request
Create a node pool that has auto scaling enabled:
{
"ClusterId":"c61da77e8bfbc4c4c999af2b51b65****",
"nodepool_info":{
"name":"autoScale-demo",
"resource_group_id":"rg-acfmyvw3wjm****"
},
"scaling_group":{
"vswitch_ids":[
"vsw-wz9mfnhmssud6eic****"
],
"system_disk_category":"cloud_efficiency",
"system_disk_size":120,
"data_disks":[
],
"instance_types":[
"ecs.t6-c1m2.large"
],
"vpc_id":"vpc-wz984yvbd6lck22z3****",
"tags":[
],
"instance_charge_type":"PostPaid",
"login_password":"****",
"platform":"AliyunLinux",
"image_id":"aliyun_2_1903_x64_20G_alibase_20200529.vhd",
"rds_instances":[
],
"scaling_policy":"release"
},
"kubernetes_config":{
"cpu_policy":"none",
"cms_enabled":false,
"labels":[
{
"key":"workload_type",
"value":"cpu"
}
],
"taints":[
],
"user_data":"",
"runtime":"docker",
"runtime_version":"19.03.5"
},
"tee_config":{
"tee_enable":true
},
"auto_scaling":{
"enable":true,
"max_instances":10,
"min_instances":1,
"type":"cpu"
}
}
Sample success responses
XML
format
HTTP/1.1 200 OK
Content-Type:application/xml
<nodepool_id>np31da1b38983f4511b490fc62108a****</nodepool_id>
JSON
format
HTTP/1.1 200 OK
Content-Type:application/json
{
"nodepool_id" : "np31da1b38983f4511b490fc62108a****"
}
Error codes
For a list of error codes, visit the API Error Center.