该接口用于将已存在的云服务器实例添加到k8s集群中,云服务器必须跟集群在同一个vpc网络中。
参数名称 | 类型 | 必填 | 描述 |
---|
Action | String | 是 | 公共参数,本接口取值:AddExistedInstances。 |
Version | String | 是 | 公共参数,本接口取值:2019-08-06。 |
ClusterId | String | 是 | 集群id |
ExistedInstanceKecSet.N | Object | 是 | 选择已有的虚拟机(包含专属云主机)作为集群的Worker节点,其中NodeRole只能是Worker。 |
NodeRole | String | 是 | 节点角色,有效值:Worker |
KecPara.N | String | 是 | 云服务器产品重新安装实例操作系统的透传参数,json化字符串格式,详见主机更换或者重新安装实例操作接口ModifyInstanceImage。 示例值:{"InstanceId":"c31b63de-a880-47c4-9c76-7a06358a20da","ImageId":"ebc3aafc-d649-47c4-9866-d7da8248aab3","InstancePassword":"Root123456"} |
AdvancedSetting | Object | 否 | 节点高级设置 |
DataDisk | Object | 否 | 数据盘挂载设置,仅针对于第一块数据盘生效 |
AutoFormatAndMount | Boolean | 否 | 是否对数据盘格式化并挂载,默认值;true。若此字段填写false,则 FileSystem 和 MountTarget字段不生效 |
FileSystem | String | 否 | 数据盘的文件系统,可选值:ext3,ext4,xfs,默认值ext4。若磁盘已有文件系统,则不进行处理,若没有文件系统,则按照用户的定义进行格式化,仅对第一块磁盘生效 |
MountTarget | String | 否 | 数据盘挂载点,并挂载,仅对第一块盘生效。 |
ContainerRuntime | String | 否 | 容器运行时,根据集群版本和需求选择
Kubernetes版本≥1.24时,有效值:
|
ContainerPath | String | 否 | 容器的存储路径,不填写的话默认为/data/container |
UserScript | String | 否 | base64 编码的用户脚本, 此脚本会在 节点上k8s 组件运行后执行, 需要用户保证脚本的可重入及重试逻辑,脚本和生成的日志的文件可在录/usr/local/ksyun/kce/userscript路径查看 |
PreUserScript | String | 否 | base64 编码的用户脚本, 此脚本会在节点上 k8s 组件运行前执行, 需要用户保证脚本的可重入及重试逻辑,脚本和生成的日志的文件可在录/usr/local/ksyun/kce/pre_userscript路径查看 |
Schedulable | Boolean | 否 | 节点加入集群后是否可以正常调度,默认值:true |
Label.N | Object | 否 | 节点加入集群时预置的标签 |
Key | String | 否 | 标签键,校验规则:不超过63个字符,只能包含字母、数字及分隔符("-"、"_"、"."、"/"),且必须以字母、数字开头和结尾 |
Value | String | 否 | 标签值,校验规则:不超过63个字符,只能包含字母、数字及分隔符("-"、"_"、"."),且必须以字母、数字开头和结尾 |
ExtraArg | Object | 否 | 自定义节点上k8s组件的参数 |
Kubelet.N | Object | 否 | 用户自定义kubelet的参数 |
CustomArg | String | 否 | 用户自定义kubelet的参数,格式k1=v1,如: --feature-gates=EphemeralContainers=true |
ContainerLogMaxSize | Int | 否 | 自定义容器日志采集文件大小,超出此大小日志将滚动写入下一文件,默认值为100m |
ContainerLogMaxFiles | Int | 否 | 自定义容器日志采集文件最大数量,默认值为10个 |
Taints.N | Object | 否 | 节点加入集群时预置污点,匹配污点容忍进行调度 |
Key | String | 否 | 污点名称,校验规则:不超过253个字符,只能包含字母、数字及分隔符("-"、"_"、"."、"/"),且必须以字母、数字开头和结尾 |
Value | String | 否 | 污点值,校验规则:不超过63个字符,只能包含字母、数字及分隔符("-"、"_"、"."、"/"),且必须以字母、数字开头和结尾 |
Effect | String | 否 | 污点效果,有效值为NoSchedule、PreferNoSchedule、NoExecute |
参数名称 | 类型 | 描述 |
---|
InstanceSet | Object[] | |
InstanceId | String | 实例id 示例值:ee355b5d-79e4-4505-b0a5-xxxxxx |
Return | Boolean | 添加结果 示例值:true |
Reason | String | 添加成功,该字段返回为空;添加失败,返回失败的原因。 示例值:null |
RequestId | String | 请求id 示例值:cbc81dc4-e4ce-40f4-b12b-xxxxxx |
JSON格式
以下仅列出了接口业务逻辑相关的错误码,其他错误码详见公共错误码
错误码 | 错误信息 | Http状态码 | 描述 |
---|
ClusterIdRequired | ClusterId is required | 400 | 集群ID必须填写 |
ClusterIdInvalid | ClusterId must match `^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12}$` | 400 | 集群ID必须满足 `^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12}$` |
ExistedInstanceKecSetRequired | ExistedInstanceKecSet is required | 400 | ExistedInstanceKecSet必须填写 |
ExistedInstanceSizeExceed | the number of ExistedInstance can't exceed 99 | 400 | 单次可添加的实例数量不能超过99 |
InstanceIdInvalid | InstanceId contains repeat value | 400 | 实例ID不能重复 |
NodeRoleInvalid | NodeRole only can be Worker | 400 | 当前操作只允许添加Worker |
KecParaInvalid | KecPara is invalid, it must be json string | 400 | KecPara格式必须是正确的json字符串 |
ParseKecParaError | parse KecPara error | 400 | KecPara解析发生错误 |
UserScriptLengthExceed | the length of UserScript can't exceed 16*1024 | 400 | 用户脚本长度不能超过16*1024个字符 |
PreUserScriptLengthExceed | the length of PreUserScript can't exceed 16*1024 | 400 | 用户前置脚本字符长度不能超过16*1024 |
ContainerRuntimeInvalid | docker is unsupported when k8s version > 1.24 | 400 | 集群版本大于1.24时不支持docker运行时 |
FileSystemInvalid | FileSystem is invalid | 400 | 文件系统无效,仅支持ext3、ext4、xfs |
LabelKeyInvalid | abel key must match (^[a-z0-9A-Z]([-_./a-zA-Z0-9]){0,61}[a-z0-9A-Z]$)|(^[a-zA-Z0-9]$) | 400 | 标签key格式必须满足 (^[a-z0-9A-Z]([-_./a-zA-Z0-9]){0,61}[a-z0-9A-Z]$)|(^[a-zA-Z0-9]$) |
LabelValueInvalid | label value must match(^[a-z0-9A-Z]([-_.a-zA-Z0-9]){0,61}[a-z0-9A-Z]$)|([a-zA-Z0-9])? | 400 | 标签值格式必须满足 (^[a-z0-9A-Z]([-_.a-zA-Z0-9]){0,61}[a-z0-9A-Z]$)|([a-zA-Z0-9])? |
TaintInvalid | taint key must match ((^[A-Za-z0-9]([-_./A-Za-z0-9]){0,251}[A-Za-z0-9]$)|^[A-Za-z0-9]$) | 400 | 污点key格式必须满足 ((^[A-Za-z0-9]([-_./A-Za-z0-9]){0,251}[A-Za-z0-9]$)|^[A-Za-z0-9]$) |
ClusterNotFound | cluster xx is not found | 400 | 集群不存在 |
GetClusterError | failed to get cluster | 400 | 获取集群信息失败 |
UnsupportedOperation | ExternalCluster can't add nodes | 400 | 纳管集群不支持添加节点 |
ClusterNotReady | the status of cluster is not ready | 400 | 集群状态异常,不可进行添加节点操作 |
InvalidRole | KsyunKCEDefaultRole is needed | 400 | KsyunKCEDefaultRole角色必须接受并且授权 |
ClusterNodeQuotaExceed | 集群节点配额(quota_kce_node)不足 | 400 | 集群节点配额(quota_kce_node)不足 |
ClusterNodeExceedProductLimit | cluster node num has exceed product limit | 400 | 集群节点数量超过了售卖套餐最高上限 |
纯净模式