You need to enable JavaScript to run this app.
导航
CreateNodePool
最近更新时间:2024.09.14 18:01:01首次发布时间:2022.06.27 21:21:37

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

使用说明

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

请求说明

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

调试

请求参数

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

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

ClusterId

String

cc5silum****

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

注意

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

Name

String

test-nodepool

节点池名称。

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

注意

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

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

Tags

Array of Tag

-

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

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

NodePoolKubernetesConfigRequest

参数类型是否必选示例值描述

Labels

Array of Label

-

节点池/节点的 Kubernetes 标签(Labels)信息。最多可传入 20 个标签。

说明

节点池会统一管理节点的标签配置信息,因此标签信息会同步到节点池内的所有节点上。当标签发生变更时,会覆盖原有的标签配置信息。

Taints

Array of Taint

-

节点池/节点的 Kubernetes 污点(Taints)信息。最多可传入 20 个污点。

说明

节点池会统一管理节点的污点配置信息,因此污点信息会同步到节点池内的所有节点上。当污点发生变更时,会覆盖原有的污点配置信息。

Cordon

Boolean

false

封锁节点配置,取值:

  • false:(默认值)不封锁
  • true:封锁

说明

更新节点池(UpdateNodePoolConfig)时,若不传入参数值,则保持原有参数配置。

NamePrefix

String

name-prefix

Kubernetes 中节点对象的元数据名称前缀。默认不启用,若设置表示启用,并将影响 Kubernetes Node Manifest 文件中展示的metadata.name前缀信息。前缀校验规则如下:

  • 支持英文小写字母、数字、中划线(-)和半角句号(.)。
  • 只能以英文小写字母或者数字开头。
  • 长度限制为 1~48 个字符。

Label

参数类型是否必选示例值描述

Key

String

label-key

标签键,要求如下,更多规则,请参见 Kubernetes 标签规则

有效的标签键有两个段:<前缀>和<名称>,用斜杠(/)分隔。

  • <名称>是必须的,支持英文大小写字母、数字、短划线(-)、下划线(_)、英文句号( .),以字母或数字开头和结尾,长度不超过 63 个字符。
  • <前缀>是可选的。如果指定<前缀>,则必须是 DNS 子域:由英文句号(.)分隔的一系列 DNS 标签,长度不超过 253 个字符。
  • <前缀>和<名称>总长度不超过 82 个字符。

Value

String

label-value

标签值,要求如下,更多规则,请参见 Kubernetes 标签规则

  • 长度不超过 63 个字符(可以为空)。
  • 支持以英文大小写字母、数字开头和结尾。
  • 支持特殊字符:短划线(-)、下划线(_)、英文句号(.)。

Taint

参数类型是否必选示例值描述

Effect

String

NoSchedule

污点效果,取值:

  • NoSchedule:(默认值)不调度。
  • NoExecute:驱逐没有容忍污点的 Pod。
  • PreferNoSchedule:尽量避免调度。

Key

String

taint-key

污点键,要求如下,更多规则,请参见 Kubernetes 标签规则

有效的污点键有两个段:<前缀>和<名称>,用斜杠(/)分隔。

  • <名称>是必须的,支持英文大小写字母、数字、短划线(-)、下划线(_)、英文句号( .),以字母或数字开头和结尾,长度不超过 63 个字符。
  • <前缀>是可选的。如果指定<前缀>,则必须是 DNS 子域:由英文句号(.)分隔的一系列 DNS 标签,长度不超过 253 个字符。
  • <前缀>和<名称>总长度不超过 82 个字符。

Value

String

taint-value

污点值,要求如下,更多规则,请参见 Kubernetes 标签规则

  • 长度不超过 63 个字符(可以为空)。
  • 支持以英文大小写字母、数字开头和结尾。
  • 支持特殊字符:短划线(-)、下划线(_)、英文句号(.)。

NodePoolNodeConfigRequest

参数类型是否必选示例值描述

InstanceTypeIds

Array of String

["ecs.g1ie.large"]

节点对应的 ECS 实例规格 ID 列表。
调用 ListSupportedResourceTypes 接口查询集群实例所支持的资源类型和范围。

说明

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

SubnetIds

Array of String

["subnet-3rf6vwb******"]

节点网络所属的子网 ID 列表。
可以调用 私有网络 API 获取子网 ID。

注意

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

ImageId

String

image-****

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

注意

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

SystemVolume

Object of SystemVolume

-

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

DataVolumes

Array of DataVolume

-

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

InitializeScript

String

ZWNobyAid******

创建并初始化节点后执行的自定义脚本。
支持 Shell 格式,Base64 编码后长度不超过 1 KB。

SecurityObject of 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

prefix-name

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

  • 支持英文大小写字母、数字和中划线(-)。
  • 只能以英文字母开头,英文字母或数字结尾。
  • 不能连续使用中划线(-)。
  • 长度限制为 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-1"]

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

注意

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

SystemVolume

参数类型是否必选示例值描述

Type

String

ESSD_PL0

云盘类型:

  • ESSD_PL0:(默认值)性能级别为 PL0 的极速型 SSD 云盘。
  • ESSD_FlexPL:性能级别为 PL1 的极速型 SSD 云盘。

注意

更新节点池时,该参数为必填参数,无默认值。

Size

Integer

40

云盘容量,单位 GiB,取值说明:

  • 默认值:40
  • 极速型 SSD(ESSD_PL0,ESSD_FlexPL): 40~2048

注意

更新节点池时,该参数为必填参数,无默认值。

DataVolume

参数类型是否必选示例值描述

Type

String

ESSD_PL0

磁盘类型:

  • ESSD_PL0:(默认值)性能级别为 PL0 的极速型 SSD 云盘。
  • ESSD_FlexPL:性能级别为 PL1 的极速型 SSD 云盘。

注意

更新节点池时,该参数为必填参数,无默认值。

Size

Integer

20

磁盘容量,单位 GiB,数据云盘数值范围:

  • 默认值:20
  • 极速型 SSD(ESSD_PL0,ESSD_FlexPL):20~32768

注意

更新节点池时,该参数为必填参数,无默认值。

MountPoint

String

/vke

磁盘格式化后的目标挂载目录,取值要求如下:

  • 必须以/开头。
  • 长度限制为 1~255 个字符。
  • 不同数据盘的挂载目录不允许重复。

NodeSecurityRequest

参数类型是否必选示例值描述

SecurityGroupIds

Array of String

["sg-2byy13cnsc******"]

节点网络所在的安全组 ID 列表。
调用私有网络的 DescribeSecurityGroups 接口,获取安全组 ID。

注意

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

SecurityStrategies

Array of String

["Hids"]

节点的安全策略,取值:

  • 取值为空:表示节点不开启安全加固。
  • Hids:主机安全加固。

Login

Object of NodeLoginRequest

-

节点的访问方式配置。
支持密码方式或密钥对方式。同时传入时,优先使用密钥对。

NodeLoginRequest

参数类型是否必选示例值描述

Password

String

UHdkMT******

Root 用户登录密码,使用 Base64 编码格式。
请遵循云服务器对于实例密码的要求规范:

  • 长度为 8~30 个字符
  • 不能以/$6$开头
  • 支持以下几项字符,且至少包含三项
    • 小写字母a~z
    • 大写字母A~Z
    • 数字0~9
    • 特殊字符( ) ` ~ ! @ # $ % ^ & * _ - + = | { } [ ] : ; ' < > , . ? / |
SshKeyPairNameStringtest-keySSH 密钥对名称。请确保该密钥对已在云服务器中创建或托管。

Tag

参数类型是否必选示例值描述

Key

String

key

标签键。

  • 不能以任何大小写形式的volc:开头。
  • 只能包含语言字符、数字、空格和特殊符号_.:/=+-@
  • 长度限制为 1~128 个字符。

Value

String

value

标签值,可以为空。

  • 只能包含语言字符、数字、空格和特殊符号_.:/=+-@
  • 长度不超过 256 个字符。

NodePoolAutoScalingRequest

参数类型是否必选示例值描述

Enabled

Boolean

false

配置节点池弹性伸缩功能开关,取值:

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

MaxReplicas

Integer

10

配置节点池的最大节点数,取值说明:

  • 默认值:10
  • 取值范围:1~2000

注意

仅在节点池开启弹性伸缩功能后,对该节点池生效。

MinReplicas

Integer

0

配置节点池的最小节点数,取值说明:

  • 默认值:0
  • 最小值:0
  • 最大值:小于 MaxReplicas 参数的值

注意

仅在节点池开启弹性伸缩功能后,对该节点池生效。

DesiredReplicas

Integer

0

配置节点池的期望节点数,取值说明:

  • 默认值:0
  • 取值范围:0~2000

注意

节点池开启弹性伸缩功能时,DesiredReplicas 需大于等于 MinReplicas 参数的值,小于等于 MaxReplicas 参数的值。

Priority

Integer

10

优先级,取值说明:

  • 默认值:10
  • 取值范围:0~100

注意

仅针对节点池开启弹性伸缩功能且扩容算法为priority时生效。

SubnetPolicy

String

ZoneBalance

节点池的多子网调度策略,用于在 Worker 节点扩容时按照子网优先级顺序进行调度。取值:

  • ZoneBalance:(默认值)可用区均衡策略,节点扩容时,新增的节点会分散到多个可用区的子网下,且保证各个可用区中的节点数相对均衡。
  • Priority:子网优先级策略,按照子网列表的先后顺序调度。如果优先级最高的子网可以创建成功,则总在该子网下新增节点。

请求示例

POST https://open.volcengineapi.com/?Action=CreateNodePool&Version=2022-05-12
Content-Type: application/json
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******",
}

返回参数

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

参数类型示例值描述
IdStringpc51i0m6****节点池 ID。

返回示例

{
    "ResponseMetadata": {
        "RequestId": "20230604110420****",
        "Action": "CreateNodePool",
        "Version": "2022-05-12",
        "Service": "vke",
        "Region": "cn-beijing"
    },
    "Result": {
        "Id": "pc51i0m6****"
    }
}

错误码

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

HTTP 状态码错误码错误信息说明
409Conflict.NameThe specified name conflicts with existing {{resourceType}}.指定地域存在同名资源,请更新资源名称后重试。
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.PodCidrs 和 MaxPodsPerNode。集群创建完成后不支持修改,请合理规划集群设置。

400InstanceTypeMismatch.VolumeTypeThe specified VolumeType {{volumeType}} and InstanceType {{instanceType}} are mismatched.指定的实例规格和云盘规格不匹配。请调用云服务的 DescribeInstanceTypes 接口获取云服务器实例规格与云盘规格的匹配关系,然后更新参数并重试。
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.指定的高性能计算集群可用区与节点子网可用区不匹配。请确保两者可用区一致后重试。
400ClusterVersionMismatch.ImageIdThe specified ImageId {{ImageId}} and KubernetesVersion {{kubernetesVersion}} are mismatched.指定的镜像 ID(ImageId)与 集群 Kubernetes 版本不匹配。请根据参数说明,配置准确的参数值后重试。
400Insufficient.BalanceYour account has run out of balance.当前火山引擎账户余额不足。请充值账户后重试。
400InstanceTypeMismatch.ImageIdThe specified ImageId {{imageId}} and InstanceType {{instanceType}} are mismatched.指定的镜像 ID(ImageId)与 ECS 实例规格(InstanceTypeIds)不匹配。请根据参数说明,配置准确的参数值后重试。
400InstanceChargeTypeMismatch.PublicAccessEnabledThe specified PublicAccessEnabled and InstanceChargeType {{instanceChargeType}} are mismatched.指定的节点公网访问开关和计费类型不匹配,包年包月节点池不支持开启节点公网访问。请根据参数说明,配置准确的参数值后重试。
400IpFamilyMismatch.{{parameter}}The specified {{resourceType}} {{resourceContent}} and IpFamily {{ipFamily}} are mismatched.指定的资源和网络协议栈不匹配。请确认资源支持的网络协议栈后重试。
400LimitExceeded.LocalVolumesYou have reached the limit of the number of local volumes that you can use.本地盘数量超过限制。请根据参数说明,配置准确的参数值后重试。
400KubernetesVersionMismatch.{{parameter}}The specified config and kubernetes version are mismatched.指定的配置项和 Kubernetes 版本不匹配。请确认配置项对应支持的 Kubernetes 版本后重试。
400ImageSizeMismatch.SystemVolumeSizeThe specified system volume size and image size are mismatched.指定的系统盘大小和镜像大小不匹配,系统盘需要比镜像大 10 GiB 以上。