You need to enable JavaScript to run this app.
导航
CreateNodePool
最近更新时间:2024.06.21 16:12:56首次发布时间:2022.06.27 21:21:37

在指定集群下创建节点池。

使用说明

  • 调用该接口前,请调用 ListSupportedResourceTypes 接口,确认创建节点池时需要用到的资源是否在指定的地域和可用区中支持。
  • 此接口为异步接口,当此接口返回成功时,会返回节点池的 ID 信息,此时节点池将进入{Creating, [Progressing]}状态,直到创建执行成功。请调用 ListNodePools 接口获取该节点池当前的状态,查看节点池是否创建成功。

请求说明

  • 请求方式:POST
  • 请求地址:https://open.volcengineapi.com/?Action=CreateNodePool&Version=2022-05-12

请求参数

调用该 API 时的请求参数如下,除此之外还需传入公共请求参数。公共请求参数说明,请参见 公共参数

参数名称类型是否必选示例值说明
ActionStringCreateNodePool公共参数,本接口值:CreateNodePool。
VersionString2022-05-12公共参数,本接口值:2022-05-12。
ClientTokenStringBC028527-33B9-4990-A633-84E9F9******用于保证请求幂等性的字符串。该字符串由调用方传入,需保证不同请求之间唯一。ClientToken 对大小写敏感,且最大值不超过 64 个 ASCII 字符。

ClusterId

String

cc5silumrsfeq****

节点池所在集群的 ID。
可以调用 ListClusters 接口,获取集群 ID。

注意

集群必须处于{Running,[Ok]}{Updating,[Progressing]}状态。可调用 ListClusters 接口获取集群当前的状态。

Name

String

test-nodepool

节点池名称。

  • 同一个集群下,节点池名称必须唯一。
  • 支持大小写英文字母、汉字、数字、短划线(-),长度限制为 2~64 个字符。

注意

不能使用默认节点池保留名:vke-default-nodepool

KubernetesConfigObject KubernetesConfigRequest节点池 Kubernetes 相关配置。
NodeConfigObject NodePoolNodeConfigRequest节点池中云服务器(ECS)实例配置。
AutoScalingObject NodePoolAutoScaling节点池伸缩策略配置。

Tags

Array of Tag

自定义的资源标签,用于从不同维度对具有相同特征的节点池进行分类、搜索和聚合,能够灵活管理节点池。

  • Tags 中各个 Key 不可重复。
  • 资源已有相同 Tags.Key 的情况下,重复绑定 Tags.Key 不会报错,会更新为最新的 Tags.Value
  • 单个资源最多支持绑定 50 个 Tags
  • Tags 中的 KeyValue 不允许在最前或最后输入空格。

NodePoolNodeConfigRequest

参数名参数类型是否必选示例值说明

InstanceTypeIds

Array of String

["ecs.g1.large"]

节点对应的 ECS 实例规格 ID 列表。

调用 ListSupportedResourceTypes 接口查询集群实例所支持的资源类型和范围。

说明

当前仅支持传入一个数组元素。

SubnetIds

Array of String

["subnet-3rf6vwbgkg****"]

节点网络所属的子网 ID 列表。

可以调用 私有网络 API 获取子网 ID。

注意

  • 必须与集群处于同一个私有网络内。
  • 单个节点池最多支持关联 8 个子网 ID。

ImageId

String

image-kdvapv****

节点对应的 ECS 实例使用的镜像 ID。
不同的镜像类型对应的镜像 ID 也不同,详细说明,请参见 容器服务支持的公共镜像

注意

若不传该参数,容器服务将根据您所选的 ECS 实例规格,默认分配与该规格对应的 veLinux-VKE 镜像 ID。

SystemVolumeObject SystemVolume节点的系统盘配置。

调用 ECS 的 DescribeInstanceTypes 接口获取 ECS 实例规格族与云盘规格的匹配关系。

DataVolumesArray of DataVolume节点的数据盘配置。

调用云服务的 DescribeInstanceTypes 接口获取 ECS 实例规格族与云盘规格的匹配关系。

InitializeScriptStringZWNobyAidG******创建并初始化节点后执行的自定义脚本。

支持 Shell 格式,Base64 编码后长度不超过 1 KB。

SecurityObject NodeSecurityRequest节点安全配置。

AdditionalContainerStorageEnabled

Boolean

false

配置节点的第一块数据盘并格式化挂载容器和镜像存储目录/var/lib/containerd,取值:

  • false:(默认值)关闭
  • true:开启

注意

  • 至少配置一块数据盘,否则将导致节点池创建失败。
  • 该方式将自动格式化第一块数据盘并创建文件系统。

InstanceChargeType

String

PostPaid

ECS 实例计费类型,取值:

  • PostPaid:(默认值)按量计费
  • PrePaid:包年包月

Period

Integer

12

ECS 实例购买时长。取值如下,单位为月:
123456789122436
仅当InstanceChargeType=PrePaid时才需要填写且为必选参数。

AutoRenew

Boolean

true

ECS 实例到期是否自动续费,取值范围:

  • true:(默认值)自动续费
  • false:不自动续费
    仅当InstanceChargeType=PrePaid时才需要填写,否则忽略。

AutoRenewPeriod

Integer

1

ECS 实例每次自动续费时长。取值如下,单位为月:
1(默认值)、23612
仅当AutoRenew=true时才需要填写,否则忽略。

NamePrefix

String

name-prefix

节点名称前缀。取值为空字符串时表示不启用节点命名前缀,默认不启用。前缀校验规则如下:

  • 支持英文大小写字母、数字和中划线(-)。
  • 只能以英文字母开头,英文字母或数字结尾。
  • 不能连续使用中划线(-)。
  • 长度限制为 2~51 个字符。

Tags

Array of Tag

节点对应 ECS 实例绑定的标签信息,用于搜索、管理 ECS 实例。

  • Tags 中各个 Key 不可重复。
  • 资源已有相同 Tags.Key 的情况下,重复绑定 Tags.Key 不会报错,会更新为最新的 Tags.Value
  • 单个资源最多支持绑定 20 个 ECS 实例标签。
  • Tags 中的 KeyValue 不允许在最前或最后输入空格。

HpcClusterIds

Array of String

["hpcCluster-yc2jlqcg7kb5oy******"]

高性能计算集群 ID。
当创建 高性能计算 GPU 型 规格的节点池时,需要指定高性能计算集群 ID。在 云服务器控制台实例与镜像 > 高性能计算集群 页面获取 ID。

注意

  • 当前仅支持传入一个高性能计算集群 ID。更多介绍,请参见 高性能计算集群概述
  • 请确保指定的高性能计算集群与 SubnetIds 中指定的子网同属一个可用区。

NodeSecurityRequest

参数名参数类型是否必选示例值说明

SecurityGroupIds

Array of String

["sg-2byy13cnsczy****"]

节点网络所在的安全组 ID 列表。

调用私有网络的 DescribeSecurityGroups 接口,获取安全组 ID。

注意

  • 必须与集群处于同一个私有网络内。
  • 取值为空时,默认使用 集群节点默认安全组(命名格式为<集群ID>-common)。默认安全组相关说明,请参见 安全组设置
  • 单个节点池最多支持关联 5 个安全组(含集群节点默认安全组)。

SecurityStrategies

Array of String

["Hids"]

节点的安全策略,取值:

  • 取值为空:表示节点不开启安全加固。
  • Hids:主机安全加固。
LoginObject NodeLogin节点的访问方式配置。

支持密码方式或密钥对方式。同时传入时,优先使用密钥对。

请求示例

POST /?Action=CreateNodePool&Version=2022-05-12 HTTP/1.1
Content-Type:application/json
{
    "ClusterId": "cc5silumrsfeq****",
    "Name": "test-nodepool",
    "KubernetesConfig": {
        "Labels": [
            {
                "Key": "label-key",
                "Value": "label-value"
            }
        ],
        "Taints": [
            {
                "Key": "taint-key",
                "Value": "taint-value",
                "Effect": "NoSchedule"
            }
        ],
        "Cordon": false
    },
    "NodeConfig": {
        "InstanceTypeIds": ["ecs.g1.xlarge"],
        "SubnetIds": ["subnet-3rf6vwbgkg****"],
        "SystemVolume": {
            "Size": 40,
            "Type": "ESSD_PL0"
        },
        "DataVolumes": [
            {
                "Size": 20,
                "Type": "ESSD_PL0"
            }
        ],
        "AdditionalContainerStorageEnabled": true,
        "InitializeScript": "ZWNobyAidG******",
        "Security": {
            "SecurityGroupIds": ["sg-2byy13cnsczy****"],
            "SecurityStrategies": ["Hids"],
            "Login": {
                "Password": "UHdkMTIz***"
            }
        },
        "NamePrefix": "name-prefix",
        "Tags":[
            {
                "Key":"key",
                "Value":"value"
            }
        ]
    },
    "AutoScaling": {
        "Enabled": true,
        "DesiredReplicas": 0,
        "MinReplicas": 0,
        "MaxReplicas": 10,
        "Priority": 10,
        "SubnetPolicy": "ZoneBalance"
    },
    "Tags":[
        {
            "Key":"key",
            "Value":"value"
        }
    ],
    "ClientToken": "BC028527-33B9-4990-A633-84E9F9******",
}

返回参数

本接口返回参数如下表所示,公共返回参数请参见 返回结果

参数名称类型示例值说明
IdStringpc51i0m6rsfen****节点池 ID。

返回示例

HTTP/1.1 200 OK
Content-Type:application/json
{
    "ResponseMetadata": {
        "RequestId": "021635330810134****",
        "Action": "CreateNodePool",
        "Version": "2022-05-12",
        "Service": "vke",
        "Region": "cn-beijing"
    },
    "Result": {
        "Id": "pc51i0m6rsfen****"
    }
}

错误码

本接口错误码如下表所示,公共错误码请参见 公共错误码

HTTP状态码错误码错误信息描述
400NotSupported.{{parameter}}The specified {{resourceType}} {{resourceContent}} is not supported.指定参数不支持,如 InstanceType、ImageId 等。请确认参数后重试。
400QuotaExceeded.NodePoolThe number of node pools in the cluster has reached the limit.您当前集群所要创建的节点池数量超出系统配额。您可以选择其他地域,也可以 提交工单 申请提高配额。
400LimitExceeded.MaximumVolumesYou have reached the limit of the number of volumes that you can create.云盘数量超过了单台 ECS 实例所能挂载的云盘数量。ECS 使用限制,请参见 约束限制
400LimitExceeded.DataVolumeSizeYou have reached the limit of the size of data volume that you can create.数据盘容量超过上限。ECS 使用限制,请参见 约束限制
400LimitExceeded.SystemVolumeSizeYou have reached the limit of the size of system volume that you can create.系统盘容量超过上限。ECS 使用限制,请参见 约束限制
400ClusterVpcMismatch.{{parameter}}The specified {{resourceType}} {{resourceId}} is not in the VPC of cluster.指定的子网、安全组、高性能计算集群与集群属于不同私有网络,请确保其与集群处于同一个私有网络内。
400Mismatch.ReplicasThe specified DesiredReplicas, MinReplicas and MaxReplicas are mismatched.指定节点池的最小节点数、最大节点数、期望节点数逻辑不匹配。请确认参数后重试。
400OperationDenied.ClusterStatusThe action has been denied due to wrong cluster status {{statusPhase}} and [{{statusConditions}}].指定集群的当前状态不支持该操作。请确认该接口依赖的集群状态后重试。
400QuotaExceeded.NodeThe number of nodes in the cluster has reached the limit.您当前集群所要创建的节点数量超出系统限额。您可以选择其他地域,也可以 提交工单 申请提高配额。

400

LimitExceeded.NodeInCluster

The number of nodes exceeds the cluster defined pods config limit.

Flannel 容器网络类型下,节点池设置的期望节点数超出了集群支持的最大节点数。容器服务各资源限制,请参见 使用限制
支持的最大节点数取决于 PodsConfig.FlannelConfig.PodCidrsMaxPodsPerNode。集群创建完成后不支持修改,请合理规划集群设置。

400InstanceTypeMismatch.VolumeTypeThe specified VolumeType {{volumeType}} and InstanceType {{instanceType}} are mismatched.指定的实例规格族和云盘规格不匹配。请调用云服务的 DescribeInstanceTypes 接口获取 ECS 实例规格与云盘规格的匹配关系,然后更新参数并重试。
400ZoneMismatch.InstanceTypeThe specified InstanceType {{instanceType}} and subnet zones are mismatched.子网所在的可用区不支持该实例规格。请调用云服务的 DescribeAvailableResource 接口获取各可用区支持的实例规格情况,然后更新参数并重试。
400OutOfRange.DataVolumesThere is no data volume for additional container storage enabling.启用了配置节点的第一块数据盘作为容器镜像和日志的存储目录(即AdditionalContainerStorageEnabled=true),但是 DataVolume 参数中并没有指定任何数据盘。请指定参数值后重试。
400ZoneMismatch.SubnetThe specified Subnet {{subnetId}} is not in the cluster defined zones.指定的子网所属的可用区不在集群支持的可用区内。请使用匹配集群可用区的子网。
400QuotaExceeded.{{ResourceType}}The quota of {{ResourceType}} has reached the limit.指定资源的配额达到上限,如 EIP、ECS、Tag、ECS Tag、EBS 等。请提升相关资源配额,或删除无用资源,预留出配额后重试。
400ZoneMismatch.HpcClusterThe specified HpcCluster {{hpcClusterID}} and subnet zones are mismatched.指定的高性能计算集群可用区与节点子网可用区不匹配。请确保两者可用区一致后重试。
400Insufficient.BalanceYour account has run out of balance.当前火山引擎账户余额不足。请充值账户后重试。
400InstanceTypeMismatch.ImageIdThe specified ImageId {{imageId}} and InstanceType {{instanceType}} are mismatched.指定的镜像 ID(ImageId)与 ECS 实例规格(InstanceTypeIds)不匹配。请根据参数说明,配置准确的参数值后重试。
400ClusterVersionMismatch.ImageIdThe specified ImageId {{imageId}} and KubernetesVersion {{kubernetesVersion}} are mismatched.指定的镜像 ID(ImageId)与 集群 Kubernetes 版本不匹配。请根据参数说明,配置准确的参数值后重试。
409Conflict.NameThe specified name conflicts with existing {{resourceType}}.指定地域存在同名节点池,请更新节点池名称后重试。