You need to enable JavaScript to run this app.
导航
CreateNodes
最近更新时间:2024.09.23 14:30:51首次发布时间:2022.06.27 21:21:44

在指定集群下添加已有的云服务器(ECS)实例。

使用说明

  • 调用该接口前,请确保已创建节点池(默认节点池或自定义节点池)且节点池状态必须处于 {Running, [*]},否则无法调用该接口添加已有节点。

    • 默认节点池:调用 CreateDefaultNodePool 接口创建默认节点池(vke-default-nodepool),或者通过控制台在 添加已有节点 时创建默认节点池。
    • 自定义节点池:调用 CreateNodePool 接口创建自定义节点池,或者通过控制台 创建节点池

      注意

      • 仅满足如下条件的自定义节点池,支持添加 ECS 实例:
        • 节点池未开启 弹性伸缩 开关。
        • 当前节点池计费模式为 按量计费 或 包年包月
      • 仅满足如下条件的 ECS 实例,支持被添加到自定义节点池:
        • 属于当前集群相同的私有网络(VPC)。
        • 与目标节点池所属的项目(Project)一致。
        • 实例未加入任何集群或弹性伸缩(Auto Scaling)服务的伸缩组。
        • 实例仅有一张网卡,已绑定多张网卡的 ECS 实例不支持被添加。
        • 实例系统盘需满足:容量 ≥ (目标节点池配置的镜像大小10 GiB)。
        • 实例数据盘必须包含目标节点池指定了挂载的数据盘,且盘类型和大小完全一致。
  • 调用该接口前,请先调用 ListSupportedResourceTypes 接口,确认创建节点时需要用到的资源是否在指定的地域和可用区中支持。

  • 此接口为异步接口,当此接口返回成功时,会返回节点的 ID 信息,此时节点将进入{Creating, [Progressing]}状态,直到创建执行成功{Running, [Ok]}。请调用 ListNodes 接口获取该节点当前的状态,查看节点是否创建成功。

  • 添加 弹性裸金属型 节点后,下线此类节点时,ECS 侧会根据运行状态优先正常关机,如无法正常关机,将执行强制关机。更多信息,请参见 StopInstance

请求说明

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

调试

请求参数

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

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

ClusterId

String

cc5silum****

集群的 ID。
可以调用 ListClusters 接口,获取集群 ID。

注意

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

NodePoolId

String

pjkljk****

节点池 ID。

  • 不传入参数值:表示将已有 ECS 实例添加到默认节点池。
  • 传入参数值:表示将已有 ECS 实例添加到自定义节点池。可调用 ListNodePools 接口,获取目标自定义节点池 ID。

注意

若此处填写 自定义节点池 ID,则待添加的节点将应用自定义节点池上的 Kubernetes 配置和节点配置(包括 ECS 实例标签、标签、污点、封锁节点配置、项目、节点名称前缀等),因此 AdditionalContainerStorageEnabledContainerStoragePathInitializeScriptKubernetesConfigImageId 参数配置将无效,上述参数仅在默认节点池中添加已有节点时有效。

InstanceIds

Array of String

["i-ybo9229pdf****"]

要添加到集群的 ECS 实例 ID。
调用 DescribeInstances 接口,获取 ECS 实例 ID。该 ECS 实例须满足以下条件:

  • 与集群在同一个私有网络内。
  • 未被其他集群使用。
  • 实例状态必须处于 运行中Running)。
  • 添加的节点数量不能超过集群所支持的最大节点数上限。
  • 请勿重复添加同一个 ECS 实例。

注意

ECS 实例作为节点添加进集群实例的过程中,VKE 会重置 ECS 实例的操作系统,该实例系统盘的历史数据会被清除。

KeepInstanceName

Boolean

false

是否保留原 ECS 实例名称,取值:

  • false:(默认值)不保留原 ECS 实例名称,由容器服务自动为其命名。
  • true:保留原 ECS 实例名称。

AdditionalContainerStorageEnabled

Boolean

false

选择配置节点的数据盘并格式化挂载作为容器镜像和日志的存储目录,取值:

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

ContainerStoragePath

String

/dev/vdb

使用该数据盘设备挂载容器和镜像存储目录/var/lib/containerd
仅当AdditionalContainerStorageEnabled=true时有效,且不能为空。
须满足以下条件,否则将初始化失败:

  • 仅支持已挂载数据盘的 ECS 实例。
  • 指定数据盘设备名时,请确保该数据盘设备存在,否则会初始化失败。
  • 指定数据盘分区或逻辑卷名时,请确保该分区或逻辑卷存在,且为 ext4 文件系统。

注意

  • 指定数据盘设备时,将自动格式化后直接挂载,请注意提前备份数据。
  • 指定数据盘分区或逻辑卷名时,不需要格式化。

ImageId

String

image-kd****

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

注意

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

InitializeScript

String

ZWNobyAiV****

创建 ECS 节点并完成 Kubernetes 组件部署后执行的脚本。支持 Shell 格式,Base64 编码后长度不超过 1 KB。

  • 为空时,节点继承使用默认节点池配置的初始化脚本NodeConfig.InitializeScript
  • 自定义填写脚本内容后,使用自定义的脚本,忽略默认节点池配置的初始化脚本。

KubernetesConfig

Object of KubernetesConfigRequest

-

节点 Kubernetes 相关配置。

  • 为空时,节点继承使用默认节点池的 Kubernetes 配置KubernetesConfig.Labels/Taints/Cordon
  • 自定义填写配置后,使用自定义配置内容,忽略默认节点池的 Kubernetes 配置。

KubernetesConfigRequest

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

Labels

Array of Label

-

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

说明

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

Taints

Array of Taint

-

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

说明

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

Cordon

Boolean

false

封锁节点配置,取值:

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

说明

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

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 个字符(可以为空)。
  • 支持以英文大小写字母、数字开头和结尾。
  • 支持特殊字符:短划线(-)、下划线(_)、英文句号(.)。

请求示例

POST https://open.volcengineapi.com/?Action=CreateNodes&Version=2022-05-12 HTTP/1.1
Content-Type:application/json
{
    "ClusterId": "cc5sil****",
    "InstanceIds": [
        "i-ybo9229pdf****"
    ],
    "KeepInstanceName": false,
    "AdditionalContainerStorageEnabled": false,
    "ClientToken": "ed6b1190-dc17-11ec-9519-eb58a7******"
}

返回参数

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

参数类型示例值描述
IdsArray of String["nc5t5epmrsf****"]节点 ID 列表。

返回示例

HTTP/1.1 200 OK
Content-Type:application/json
{
    "ResponseMetadata": {
        "RequestId": "0216353****",
        "Action": "CreateNodes",
        "Version": "2022-05-12",
        "Service": "vke",
        "Region": "cn-beijing"
    },
    "Result": {
        "Ids": [
            "nc5t5epmrsf****"
        ]
    }
}

错误码

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

HTTP 状态码错误码错误信息说明
400QuotaExceeded.NodeThe number of nodes in the cluster has reached the limit.您当前集群所要创建的节点数量超出系统限额。您可以选择其他地域,也可以 提交工单 申请提高配额。
400OperationDenied.ClusterStatusThe action has been denied due to wrong cluster status {{statusPhase}} and [{{statusConditions}}].指定集群的当前状态不支持该操作。请确认该接口依赖的集群状态后重试。
400OperationDenied.NodePoolStatusThe action has been forbidden due to wrong node pool status {{statusPhase}} and [{{statusConditions}}].指定节点池的当前状态不支持该操作。请确认该接口依赖的节点池状态后重试。
400ClusterVpcMismatch.{{parameter}}The specified {{resourceType}} {{resourceId}} is not in the VPC of cluster.指定的子网、安全组、高性能计算集群与集群属于不同私有网络,请确保其与集群处于同一个私有网络内。

400

LimitExceeded.NodeInCluster

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

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

400AlreadyInUse.{{parameter}}The specified {{resourceType}} {{resourceId}} has already been used in another cluster.指定的云服务器实例已加入其他集群,请更换其他实例,或者从其他集群中移除该实例后重试。
400OperationDenied.InstanceStatusThe operation has been denied due to the wrong status of the specified ECS instance {{instanceId}}.云服务器实例当前状态不支持该操作。请确认调用该接口时的云服务器实例状态要求后重试。
400ZoneMismatch.InstanceThe specified ECS instance {{instanceId}} is not in the cluster defined zones.云服务器实例不在集群支持的可用区内。当前不支持修改集群可用区配置,请使用匹配集群可用区的云服务器实例。
400NotSupported.{{parameter}}The specified {{resourceType}} {{resourceContent}} is not supported.指定参数不支持,如 InstanceType、ImageId 等。请确认参数后重试。
400ClusterVersionMismatch.ImageIdThe specified ImageId {{ImageId}} and KubernetesVersion {{kubernetesVersion}} are mismatched.指定的镜像 ID(ImageId)与 集群 Kubernetes 版本不匹配。请根据参数说明,配置准确的参数值后重试。
400ImageIdMismatch.InstanceIdThe specified InstanceId {{instanceId}} and ImageId {{imageId}} are mismatched.指定的 ECS 实例 ID(InstanceIds)与镜像 ID(ImageId)不匹配。请根据参数说明,配置准确的参数值后重试。

400

OperationDenied.NodePoolReplicas

The operation has been denied due to the node pool replicas limit.

添加节点超过了节点池最大节点数上限。请减少要添加的云服务器实例 ID 数量后重试。
若目标节点池已开启弹性伸缩功能,可更新目标节点池最大节点数上限(MaxReplicas)后,重新调用本接口添加已有节点。调用 UpdateNodePoolConfig 接口更新节点池。

400AlreadyInScalingGroup.{{parameter}}The specified InstanceId {{instanceId}} has already been used in another scaling group.指定的实例已被其他伸缩组使用,无法添加到节点池。
400NodePoolConfigMismatch.InstanceIdThe specified InstanceId {{instanceId}} and nodePool Config {{content}} are mismatched.指定的 ECS 实例(InstanceIds)与目标节点池(NodePoolId)的配置不匹配。包括节点池对应的系统盘、数据盘、节点池所属项目等。请确认待添加的 ECS 实例与目标节点池的配置信息后重试。
400OperationDenied.NodePoolAutoScalingEnabledThe operation has been denied because nodePool AutoScaling is enabled.目标节点池已开启弹性伸缩功能,不支持添加已有 ECS 实例到该节点池。请关闭节点池的弹性伸缩功能或更换节点池后重试。
400OperationDenied.InstanceEniNumberThe operation has been denied because the InstanceId {{instanceId}} has more than one eni.指定的 ECS 实例有一张以上网卡(即有辅助网卡),因此不支持添加该实例到节点池。请解绑节点池的辅助网卡或更换 ECS 实例后重试。
400ImageSizeMismatch.SystemVolumeSizeThe specified system volume size and image size are mismatched.指定的系统盘大小和镜像大小不匹配,系统盘需要比镜像大 10 GiB 以上。

404

NotFound.DefaultNodePool

The default node pool is not found.

默认节点池不存在,请先在控制台创建默认节点池。
创建默认节点池的方法,请参见 添加已有节点

409AlreadyExists.{{parameter}}The specified {{resourceType}} {{resourceId}} has already been included.指定的云服务器实例已加入默认节点池。