调用CreateClusterNodePool为集群创建节点池。

调试

您可以在OpenAPI Explorer中直接运行该接口,免去您计算签名的困扰。运行成功后,OpenAPI Explorer可以自动生成SDK代码示例。

请求语法

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
}

请求参数

表 1. 请求Path参数
参数名称 类型 是否必选 示例 说明
ClusterId String c61da77e8bfbc4c4c999af2b51b65****

集群ID。

表 2. 请求Body参数
参数名称 类型 是否必选 示例 说明
auto_scaling Object

自动伸缩配置。

enable Boolean true

是否启用自动伸缩。取值:

  • true:开启节点池自动伸缩功能。
  • false:不开启自动伸缩,当取值为false时,其他auto_scaling配置参数将不生效。

默认值:false

max_instances Long 10

自动伸缩组最大实例数。

min_instances Long 1

自动伸缩组最小实例数。

type String cpu

自动伸缩类型,按照自动伸缩实例类型划分。取值:

  • cpu:普通实例型。
  • gpu:GPU实例型。
  • gpushare:GPU共享型。
  • spot:抢占式实例型。

默认值:cpu

is_bond_eip Boolean true

是否绑定EIP。取值:

  • true:绑定EIP。
  • false:不绑定EIP。

默认值:false

eip_internet_charge_type String PayByBandwidth

EIP计费类型。取值:

  • PayByBandwidth:按固定带宽计费。
  • PayByTraffic:按使用流量计费。

默认值:PayByBandwidth

eip_bandwidth Long 5

EIP带宽峰值。单位:Mbps。

kubernetes_config Object

集群相关配置。

cms_enabled Boolean true

是否在ECS节点上安装云监控,安装后可以在云监控控制台查看所创建ECS实例的监控信息,推荐开启。取值:

  • true:在ECS节点上安装云监控。
  • false:不在ECS节点上安装云监控。

默认值:false

cpu_policy String none

节点CPU管理策略。当集群版本在1.12.6及以上时支持以下两种策略:

  • static:允许为节点上具有某些资源特征Pod增强其CPU亲和性和独占性。
  • none:表示启用现有的默认CPU亲和性方案。

默认值:none

labels Array of tag

节点标签,为Kubernetes集群节点添加标签。

runtime String docker

容器运行时。

runtime_version String 19.03.5

容器运行时版本。

taints Array of taint

污点配置。

user_data String dGhpcyBpcyBhIGV4YW1wbGU=

节点自定义数据。

node_name_mode String customized,aliyun,ip,com

节点名称由三部分组成:前缀 + 节点 IP + 后缀:

  • 前缀和后缀均可由“.”分隔的一个或多个部分构成,每个部分可以使用小写字母、数字和“-”,节点名称首尾必须为小写字母和数字;
  • 节点 IP为完整的节点私网 IP 地址;

传参包含四个部分,由逗号分隔,例如:参数传入"customized,aliyun,ip,com"字符串(其中“customized”和"ip"为固定的字符串,aliyun为前缀,com为后缀),则节点的名称为:aliyun.192.168.xxx.xxx.com。

nodepool_info Object

节点池配置。

name String cluster-demo

节点池名称。

resource_group_id String rg-acfmyvw3wjmb****

节点池所在资源ID。

type String ess

节点池类型,取值范围:

  • ess:节点池。
  • edge:边缘节点池。
scaling_group Object

节点池扩容组配置。

auto_renew Boolean true

节点池节点是否开启自动续费,当instance_charge_type取值为PrePaid时才生效。取值:

  • true:自动续费。
  • false:不自动续费。

默认值:true

auto_renew_period Long 1

节点池节点自动续费周期,当选择预付费和自动续费时才生效,且为必选值。当PeriodUnit=Month时,取值范围:{1, 2, 3, 6, 12}。

默认值:1

data_disks Array of data_disk

节点池节点数据盘配置。

image_id String aliyun_2_1903_x64_20G_alibase_20200529.vhd

自定义镜像ID,默认使用系统提供的镜像。

instance_charge_type String PrePaid

节点池节点付费类型,取值:

  • PrePaid:预付费。
  • PostPaid:按量付费。

默认值:PostPaid

instance_types Array of String ecs.d1ne.2xlarge

实例规格。

key_pair String np-key-name

免密登录密钥对名称,和login_password二选一。

说明 如果创建托管节点池,则只支持key_pair
login_password String Hello1234

SSH登录密码,和key_pair 二选一。密码规则为8~30个字符,且至少同时包含三项(大小写字母、数字和特殊符号)。

period Long 1

节点池节点包年包月时长,当instance_charge_type取值为PrePaid时才生效且为必选值,取值范围:period_unit取值为Month时,period取值范围:{ 1, 2, 3,6,12}。

默认值:1。

period_unit String Month

节点池节点付费周期,当指定为PrePaid的时候需要指定周期。Month:以月为计时单位。

platform String AliyunLinux

操作系统发行版。取值:

  • CentOS
  • AliyunLinux
  • Windows
  • WindowsCore

默认值:AliyunLinux

rds_instances Array of String rds-****

RDS实例ID。

spot_strategy String NoSpot

抢占式实例类型。取值:

  • NoSpot:非抢占式实例。
  • SpotWithPriceLimit:设置抢占实例价格上限。
  • SpotAsPriceGo:系统自动出价,跟随当前市场实际价格。

更多信息,请参见抢占式实例

spot_price_limit Array

当前单台抢占式实例规格市场价格区间配置。

instance_type String ecs.c6.large

抢占式实例规格。

price_limit String 0.39

单台实例上限价格。

单位:美元/小时。

scaling_policy String release

伸缩组模式,取值:

  • release:标准模式,根据申请资源值的使用量,通过创建、释放ECS的方式进行伸缩。
  • recycle:极速模式,通过创建、停机、启动的方式进行伸缩,提高再次伸缩的速度(停机时计算资源不收费,只收取存储费用,本地盘机型除外)。

默认值:release

security_group_id String sg-wz9a8g2mt6x5llu0****

节点池安全组ID,与security_group_ids二选一,推荐使用security_group_ids

security_group_ids Array of String sg-wz9a8g2mt6x5llu0****

安全组ID列表,与security_group_id二选一,推荐使用security_group_ids,当同时指定security_group_idsecurity_group_ids将优先使用security_group_ids

system_disk_category String cloud_efficiency

节点系统盘类型,取值:

  • cloud_efficiency:高效云盘。
  • cloud_ssd:SSD云盘。
  • cloud_essd:ESSD云盘。

默认值:cloud_efficiency

system_disk_size Long 120

节点系统盘大小,单位:GiB。

取值范围:[40,500]。

system_disk_performance_level String PL1

节点系统盘磁盘性能,只对ESSD磁盘生效。

  • PL0:并发极限I/O性能中等,读写时延较为稳定。
  • PL1:并发极限I/O性能中等,读写时延较为稳定。
  • PL2:并发极限I/O性能较高,读写时延稳定。
  • PL3:并发极限I/O性能极高,读写时延极稳定。
tags Array

仅为ECS实例添加标签。

标签键不可以重复,最大长度为128个字符;标签键和标签值都不能以“aliyun”、“acs:”开头,或包含“https://”、“http://”。

key String node-k-1

标签的名称。

value String node-v-1

标签值。

vswitch_ids Array of String vsw-wz9mfnhmssud6eicu****

虚拟交换机ID。

multi_az_policy String COST_OPTIMIZED

多可用区伸缩组ECS实例扩缩容策略。取值:

  • PRIORITY:根据您定义的虚拟交换机(VSwitchIds.N)扩缩容。当优先级较高的虚拟交换机所在可用区无法创建ECS实例时,自动使用下一优先级的虚拟交换机创建ECS实例。
  • COST_OPTIMIZED:按vCPU单价从低到高进行尝试创建。当伸缩配置设置了抢占式计费方式的多实例规格时,优先创建对应抢占式实例。您可以继续通过CompensateWithOnDemand参数指定当抢占式实例由于库存等原因无法创建时,是否自动尝试以按量付费的方式创建。
    说明 COST_OPTIMIZED仅在伸缩配置设置了多实例规格或者选用了抢占式实例的情况下生效。
  • BALANCE:在伸缩组指定的多可用区之间均匀分配ECS实例。如果由于库存不足等原因可用区之间变得不平衡,您可以通过API RebalanceInstances平衡资源。

默认值:PRIORITY

on_demand_base_capacity Long 0

伸缩组所需要按量实例个数的最小值,取值范围:[0,1000]。当按量实例个数少于该值时,将优先创建按量实例。

on_demand_percentage_above_base_capacity Long 20

伸缩组满足最小按量实例数(on_demand_base_capacity)要求后,超出的实例中按量实例应占的比例。取值范围:[0,100]。

spot_instance_pools Long 5

指定可用实例规格的个数,伸缩组将按成本最低的多个规格均衡创建抢占式实例。取值范围:[1,10]。

spot_instance_remedy Boolean false

是否开启补齐抢占式实例。开启后,当收到抢占式实例将被回收的系统消息时,伸缩组将尝试创建新的实例,替换掉将被回收的抢占式实例。取值:

  • true:开启补齐抢占式实例。
  • false:不开启补齐抢占式实例。
compensate_with_on_demand Boolean true

multi_az_policy取值为COST_OPTIMIZED时,如果因价格、库存等原因无法创建足够的抢占式实例,是否允许自动尝试创建按量实例满足ECS实例数量要求。取值:

  • true:允许自动尝试创建按量实例满足ECS实例数量要求。
  • false:不允许自动尝试创建按量实例满足ECS实例数量要求。
internet_charge_type String PayByTraffic

公网IP收费类型。取值:

  • PayByBandwidth:按固定带宽计费。
  • PayByTraffic:按使用流量计费。
internet_max_bandwidth_out Long 5

节点公网IP出带宽最大值,单位为Mbps(Mega bit per second),取值范围:[1,100]

image_type String AliyunLinux

操作系统镜像类型,和platform参数二选一,取值范围:

  • AliyunLinux:Alinux2镜像。
  • AliyunLinux3:Alinux3镜像。
  • AliyunLinux3Arm64:Alinux3镜像ARM版。
  • AliyunLinuxUEFI:Alinux2镜像UEFI版。
  • CentOS:CentOS镜像。
  • Windows:Windows镜像。
  • WindowsCore:WindowsCore镜像。
  • ContainerOS:容器优化镜像。
deploymentset_id String ds-bp1d19mmbsv3jf6xxxxx

部署集ID。

desired_size Long 0

节点池期望节点数量。

private_pool_options Object

私有节点池配置。

id String eap-bp67acfmxazb4****

私有节点池ID。

match_criteria String Open

私有节点池类型,实例启动的私有池容量选项。弹性保障服务或容量预定服务在生效后会生成私有池容量,供实例启动时选择。取值:

  • Open:开放模式。将自动匹配开放类型的私有池容量。如果没有符合条件的私有池容量,则使用公共池资源启动。
  • Target:指定模式。使用指定的私有池容量启动实例,如果该私有池容量不可用,则实例会启动失败。
  • None:不使用模式。实例启动将不使用私有池容量。
tee_config Object

加密计算集群配置。

tee_enable Boolean true

是否开启加密计算集群。

management Object

托管节点池配置。

enable Boolean false

是否开启托管版节点池,取值:

  • true:开启托管节点池。
  • false:不开启托管节点池,只有当enable=true时,其他相关配置才生效。
auto_repair Boolean false

自动修复,仅当enable=true时生效。

  • true:自动修复。
  • false:不自动修复。
upgrade_config Object

自动升级配置,仅当enable=true时生效。

auto_upgrade Boolean false

是否启用自动升级,取值:

  • true:启用自动升级。
  • false:不启用自动升级。
surge Long 0

额外节点数量。

surge_percentage Long 0

额外节点比例, 和surge二选一。

max_unavailable Long 1

最大不可用节点数量。

取值范围:[1,1000]

默认值:1。

count Long 1

节点池节点数量。

interconnect_mode String basic

边缘节点池的网络类型,该值只对typeedge类型的节点池有意义,取值范围:

  • basic:基础型。
  • improved:增强型。
  • private: 专用型。1.22及以上版本支持。
interconnect_config Object

边缘节点池配置。

cen_id String cen-ey9k9nfhz0f*******

边缘增强型节点池绑定的云企业网实例ID(CENID)。

ccn_id String ccn-qm5i0i0q9yi*******

边缘增强型节点池绑定的云连接网实例ID(CCNID)。

ccn_region_id String cn-shanghai

边缘增强型节点池绑定的云连接网实例所属的地域。

bandwidth Long 10

边缘增强型节点池的网络带宽,单位:Mbps。

improved_period String 1

边缘增强型节点池的购买时长,单位:月。

max_nodes Long 10

边缘节点池允许容纳的最大节点数量.。该参数大于等于0。0表示无额外限制(仅受限于集群整体可以容纳的节点数,节点池本身无额外限制)。边缘节点池该参数值往往大于0;ess类型节点池和默认的edge类型节点池该参数值为0。

响应体语法

HTTP/1.1 200
Content-Type:application/json
{
  "nodepool_id" : "String"
}

响应参数

表 3. 响应Body参数
参数名称 类型 示例 说明
nodepool_id String np31da1b38983f4511b490fc62108a****

节点池ID。

创建节点池示例

请求示例

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=",
    "node_name_mode" : "aliyun.com00055test"
  },
  "nodepool_info" : {
    "name" : "cluster-demo",
    "resource_group_id" : "rg-acfmyvw3wjmb****",
    "type" : "ess"
  },
  "scaling_group" : {
    "auto_renew" : true,
    "auto_renew_period" : 1,
    "data_disks" : [ {
      "category" : "cloud_ssd",
      "size" : 40,
      "encrypted" : "true",
      "auto_snapshot_policy_id" : "sp-2zej1nogjvovnz4z****",
      "performance_level" : "PL1"
    } ],
    "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" : "AliyunLinux",
    "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,
    "system_disk_performance_level" : "PL1",
    "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,
    "internet_charge_type" : "PayByTraffic",
    "internet_max_bandwidth_out" : 5,
    "image_type" : "AliyunLinux",
    "deploymentset_id" : "ds-bp1d19mmbsv3jf6xxxxx",
    "desired_size" : 0
  },
  "tee_config" : {
    "tee_enable" : true
  },
  "management" : {
    "enable" : false,
    "auto_repair" : false,
    "upgrade_config" : {
      "auto_upgrade" : false,
      "surge" : 0,
      "surge_percentage" : 0,
      "max_unavailable" : 1
    }
  },
  "count" : 1,
  "interconnect_mode" : "basic",
  "interconnect_config" : {
    "cen_id" : "cen-ey9k9nfhz0f*******",
    "ccn_id" : "ccn-qm5i0i0q9yi*******",
    "ccn_region_id" : "cn-shanghai",
    "bandwidth" : 10,
    "improved_period" : "1"
  },
  "max_nodes" : 10
}

请求示例补充说明

自动伸缩示例:
{
    "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"
    }
}

正常返回示例

XML格式

HTTP/1.1 200 OK
Content-Type:application/xml

<CreateClusterNodePoolResponse>
    <nodepool_id>np31da1b38983f4511b490fc62108a****</nodepool_id>
</CreateClusterNodePoolResponse>

JSON格式

HTTP/1.1 200 OK
Content-Type:application/json

{
  "nodepool_id" : "np31da1b38983f4511b490fc62108a****"
}

错误码

访问错误中心查看更多错误码。