调用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",
    "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
  },
  "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带宽峰值。

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=

节点自定义数据。

nodepool_info Object

节点池配置。

name String cluster-demo

节点池名称。

resource_group_id String rg-acfmyvw3wjmb****

节点池所在资源ID。

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

时才生效且为必选值,取值范围:

PeriodUnit=Month时,

Period

取值:{ 1, 2, 3,6,12}。 默认值:1。
period_unit String Month

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

platform String Linux

操作系统发行版。取值:

  • 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。

system_disk_category String cloud_efficiency

节点系统盘类型,取值:

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

默认值:cloud_efficiency

system_disk_size Long 120

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

取值范围:[40,500]。

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 RebalanceInstance平衡资源。

默认值: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实例数量要求。
tee_config Object

加密计算集群配置。

tee_enable Boolean true

是否开启加密计算集群。

management Object

托管节点池配置。

enable Boolean false

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

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

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

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

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

auto_upgrade Boolean false

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

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

额外节点数量。

surge_percentage Long 0

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

max_unavailable Long 0

最大不可用节点数量。

取值范围:[1,1000]

默认值:1。

count Long 1

节点池节点数量。

响应体语法

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 
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****",
    "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
}

请求示例补充说明

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

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

JSON格式

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

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

错误码

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