在指定集群下添加已有的云服务器(ECS)实例。
调用该接口前,请确保已创建节点池(默认节点池或自定义节点池)且节点池状态必须处于 {Running, [*]}
,否则无法调用该接口添加已有节点。
注意
容量
≥ (目标节点池配置的镜像大小
+ 10 GiB
)。调用该接口前,请先调用 ListSupportedResourceTypes 接口,确认创建节点时需要用到的资源是否在指定的地域和可用区中支持。
此接口为异步接口,当此接口返回成功时,会返回节点的 ID 信息,此时节点将进入{Creating, [Progressing]}
状态,直到创建执行成功{Running, [Ok]}
。请调用 ListNodes 接口获取该节点当前的状态,查看节点是否创建成功。
添加 弹性裸金属型 节点后,下线此类节点时,ECS 侧会根据运行状态优先正常关机,如无法正常关机,将执行强制关机。更多信息,请参见 StopInstance。
调用该 API 时的请求参数如下,除此之外还需传入公共请求参数。公共请求参数说明,请参见 公共参数。
参数 | 类型 | 是否必选 | 示例值 | 描述 |
---|---|---|---|---|
Action | String | 是 | CreateNodes | 接口名称。当前 API 的名称为 CreateNodes 。 |
Version | String | 是 | 2022-05-12 | 接口版本。当前 API 的版本为 2022-05-12 。 |
ClientToken | String | 否 | ed6b1190-dc17-11ec-9519-eb58a7****** | 用于保证请求幂等性的字符串。该字符串由调用方传入,需保证不同请求之间唯一。ClientToken 对大小写敏感,且最大值不超过 64 个 ASCII 字符。 |
ClusterId | String | 是 | cc5silum**** | 集群的 ID。 注意 集群必须处于 |
NodePoolId | String | 否 | pjkljk**** | 节点池 ID。
注意 若此处填写 自定义节点池 ID,则待添加的节点将应用自定义节点池上的 Kubernetes 配置和节点配置(包括 ECS 实例标签、标签、污点、封锁节点配置、项目、节点名称前缀等),因此 AdditionalContainerStorageEnabled、ContainerStoragePath、InitializeScript、KubernetesConfig、ImageId 参数配置将无效,上述参数仅在默认节点池中添加已有节点时有效。 |
InstanceIds | Array of String | 是 | ["i-ybo9229pdf****"] | 要添加到集群的 ECS 实例 ID。
注意 ECS 实例作为节点添加进集群实例的过程中,VKE 会重置 ECS 实例的操作系统,该实例系统盘的历史数据会被清除。 |
KeepInstanceName | Boolean | 否 | false | 是否保留原 ECS 实例名称,取值:
|
AdditionalContainerStorageEnabled | Boolean | 否 | false | 选择配置节点的数据盘并格式化挂载作为容器镜像和日志的存储目录,取值:
|
ContainerStoragePath | String | 否 | /dev/vdb | 使用该数据盘设备挂载容器和镜像存储目录
注意
|
ImageId | String | 否 | image-kd**** | 节点对应的 ECS 实例使用的镜像 ID。 注意 若不传该参数,容器服务将根据您所选的 ECS 实例规格,默认分配与该规格对应的 veLinux-VKE 镜像 ID。 |
InitializeScript | String | 否 | ZWNobyAiV**** | 创建 ECS 节点并完成 Kubernetes 组件部署后执行的脚本。支持 Shell 格式,Base64 编码后长度不超过 1 KB。
|
KubernetesConfig | Object of KubernetesConfigRequest | 否 | - | 节点 Kubernetes 相关配置。
|
参数 | 类型 | 是否必选 | 示例值 | 描述 |
---|---|---|---|---|
Labels | Array of Label | 否 | - | 节点池/节点的 Kubernetes 标签(Labels)信息。最多可传入 20 个标签。 说明 节点池会统一管理节点的标签配置信息,因此标签信息会同步到节点池内的所有节点上。当标签发生变更时,会覆盖原有的标签配置信息。 |
Taints | Array of Taint | 否 | - | 节点池/节点的 Kubernetes 污点(Taints)信息。最多可传入 20 个污点。 说明 节点池会统一管理节点的污点配置信息,因此污点信息会同步到节点池内的所有节点上。当污点发生变更时,会覆盖原有的污点配置信息。 |
Cordon | Boolean | 否 | false | 封锁节点配置,取值:
说明 更新节点池(UpdateNodePoolConfig)时,若不传入参数值,则保持原有参数配置。 |
参数 | 类型 | 是否必选 | 示例值 | 描述 |
---|---|---|---|---|
Key | String | 是 | label-key | 标签键,要求如下,更多规则,请参见 Kubernetes 标签规则。
|
Value | String | 否 | label-value | 标签值,要求如下,更多规则,请参见 Kubernetes 标签规则。
|
参数 | 类型 | 是否必选 | 示例值 | 描述 |
---|---|---|---|---|
Effect | String | 否 | NoSchedule | 污点效果,取值:
|
Key | String | 是 | taint-key | 污点键,要求如下,更多规则,请参见 Kubernetes 标签规则。
|
Value | String | 否 | taint-value | 污点值,要求如下,更多规则,请参见 Kubernetes 标签规则。
|
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******" }
本接口返回参数如下表所示,公共返回参数请参见 返回结果。
参数 | 类型 | 示例值 | 描述 |
---|---|---|---|
Ids | Array 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 状态码 | 错误码 | 错误信息 | 说明 |
---|---|---|---|
400 | QuotaExceeded.Node | The number of nodes in the cluster has reached the limit. | 您当前集群所要创建的节点数量超出系统限额。您可以选择其他地域,也可以 提交工单 申请提高配额。 |
400 | OperationDenied.ClusterStatus | The action has been denied due to wrong cluster status {{statusPhase}} and [{{statusConditions}}]. | 指定集群的当前状态不支持该操作。请确认该接口依赖的集群状态后重试。 |
400 | OperationDenied.NodePoolStatus | The action has been forbidden due to wrong node pool status {{statusPhase}} and [{{statusConditions}}]. | 指定节点池的当前状态不支持该操作。请确认该接口依赖的节点池状态后重试。 |
400 | ClusterVpcMismatch.{{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 容器网络类型下,节点池设置的期望节点数超出了集群支持的最大节点数。容器服务各资源限制,请参见 使用限制。 |
400 | AlreadyInUse.{{parameter}} | The specified {{resourceType}} {{resourceId}} has already been used in another cluster. | 指定的云服务器实例已加入其他集群,请更换其他实例,或者从其他集群中移除该实例后重试。 |
400 | OperationDenied.InstanceStatus | The operation has been denied due to the wrong status of the specified ECS instance {{instanceId}}. | 云服务器实例当前状态不支持该操作。请确认调用该接口时的云服务器实例状态要求后重试。 |
400 | ZoneMismatch.Instance | The specified ECS instance {{instanceId}} is not in the cluster defined zones. | 云服务器实例不在集群支持的可用区内。当前不支持修改集群可用区配置,请使用匹配集群可用区的云服务器实例。 |
400 | NotSupported.{{parameter}} | The specified {{resourceType}} {{resourceContent}} is not supported. | 指定参数不支持,如 InstanceType、ImageId 等。请确认参数后重试。 |
400 | ClusterVersionMismatch.ImageId | The specified ImageId {{ImageId}} and KubernetesVersion {{kubernetesVersion}} are mismatched. | 指定的镜像 ID(ImageId)与 集群 Kubernetes 版本不匹配。请根据参数说明,配置准确的参数值后重试。 |
400 | ImageIdMismatch.InstanceId | The 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 数量后重试。 |
400 | AlreadyInScalingGroup.{{parameter}} | The specified InstanceId {{instanceId}} has already been used in another scaling group. | 指定的实例已被其他伸缩组使用,无法添加到节点池。 |
400 | NodePoolConfigMismatch.InstanceId | The specified InstanceId {{instanceId}} and nodePool Config {{content}} are mismatched. | 指定的 ECS 实例(InstanceIds)与目标节点池(NodePoolId)的配置不匹配。包括节点池对应的系统盘、数据盘、节点池所属项目等。请确认待添加的 ECS 实例与目标节点池的配置信息后重试。 |
400 | OperationDenied.NodePoolAutoScalingEnabled | The operation has been denied because nodePool AutoScaling is enabled. | 目标节点池已开启弹性伸缩功能,不支持添加已有 ECS 实例到该节点池。请关闭节点池的弹性伸缩功能或更换节点池后重试。 |
400 | OperationDenied.InstanceEniNumber | The operation has been denied because the InstanceId {{instanceId}} has more than one eni. | 指定的 ECS 实例有一张以上网卡(即有辅助网卡),因此不支持添加该实例到节点池。请解绑节点池的辅助网卡或更换 ECS 实例后重试。 |
400 | ImageSizeMismatch.SystemVolumeSize | The specified system volume size and image size are mismatched. | 指定的系统盘大小和镜像大小不匹配,系统盘需要比镜像大 10 GiB 以上。 |
404 | NotFound.DefaultNodePool | The default node pool is not found. | 默认节点池不存在,请先在控制台创建默认节点池。 |
409 | AlreadyExists.{{parameter}} | The specified {{resourceType}} {{resourceId}} has already been included. | 指定的云服务器实例已加入默认节点池。 |