该接口可用于创建独立部署集群、托管集群、Serverless集群,如果需要创建纳管集群,请使用接口CreateExternalCluster。
参数名称 | 类型 | 必填 | 描述 |
---|
Action | String | 是 | 公共参数,本接口取值:CreateCluster。 |
Version | String | 是 | 公共参数,本接口取值:2020-12-31。 |
ClusterName | String | 是 | 集群名称 |
ClusterType | String | 否 | 集群类型,默认值 VirtualMachine,该字段已无实际意义,可忽略
示例值:VirtualMachine |
ClusterManageMode | String | 否 | 集群管理模式,默认DedicatedCluster
|
ClusterDesc | String | 否 | 集群描述 |
VpcId | String | 是 | 集群所在的vpcid |
PodCidr | String | 是 | 集群pod的网段,如:10.0.0.0/16
|
ServiceCidr | String | 是 | 集群Service的网段,如10.254.0.0/16
|
NetworkType | String | 是 | 集群的网络模型
|
K8sVersion | String | 是 | 容器服务支持的k8s的集群版本号 |
ReserveSubnetId | String | 是 | 集群所在vpc终端子网id |
PublicApiServer | String | 否 | 是否将apiserver暴露到公网,仅针对独立部署集群生效。若不需要暴露,则不填写此选项;若选择暴露,则会创建公网SLB和EIP用于开启集群的Api Server公网访问。需要用户传递弹性EIP创建透传参数,json化字符串格,详见创建弹性IP。 示例值:{"ChargeType":"Daily","BandWidth":"5","LineId":"xx"} |
ExposePublicApiServer | Boolean | 否 | 托管集群或者Serverless集群是否将apiserver暴露到公网 |
MaxPodPerNode | String | 否 | 每个节点上运行的pod数量上限 |
MasterEtcdSeparate | Boolean | 否 | 该字段仅针对于独立部署集群生效,托管集群不生效。集群Master和Etcd组件部署方式,有效值: |
ManagedClusterMultiMaster.N | Object | 否 | 当集群类型为托管集群时生效,为托管集群控制面进行子网和安全组配置,支持配置多个 |
SubnetId | String | 否 | master.N所在子网的id |
SecurityGroupId | String | 否 | master.N的安全组id |
InstanceForNode.N | Object | 否 | 新建节点创建集群,定义节点角色和配置,支持云服务器机和专属云服务器。 |
NodeRole | String | 否 | 节点角色,有效值:
ClusterManageMode字段为DedicatedCluster时
示例值:Worker |
NodeConfig.N | Object | 否 | 定义节点的配置,支持普通云主机和专属云主机。 |
Para | String | 否 | 定义节点的配置,支持普通云主机和专属云主机。 示例值:{"SystemDisk.DiskSize":20,"InstanceNameSuffix":"1","SecurityGroupId":"eaa64c85-5dbd-49e2-85cd-5368954db241","ProjectId":0,"SriovNetSupport":false,"SubnetId":"2085daad-d9b6-4a8b-8c55-f24d14dbf7e5","MaxCount":3,"InstancePassword":"xxx","InstanceName":"sunjinfu","PurchaseTime":0,"ChargeType":"Daily","ImageId":"ebc3aafc-d649-47c4-9866-d7da8248aab3","DataDiskGb":0,"InstanceType":"S6.4B","SystemDisk.DiskType":"SSD3.0","MinCount":3,"DataDisk.1.Type":"SSD3.0","DataDisk.1.Size":50} |
AdvancedSetting | Object | 否 | 节点的高级配置设置 |
DataDisk | Object | 否 | 数据盘挂载设置,仅针对于第一块数据盘生效 |
AutoFormatAndMount | Boolean | 否 | 是否对数据盘格式化并挂载,默认值;true。若此字段填写false,则 FileSystem 和 MountTarget字段不生效 |
FileSystem | String | 否 | 数据盘的文件系统,可选值:ext3,ext4,xfs,默认值ext4。若磁盘已有文件系统,则不进行处理,若没有文件系统,则按照用户的定义进行格式化,仅对第一块磁盘生效 |
MountTarget | String | 否 | 数据盘挂载点,并挂载,仅对第一块盘生效。 |
ContainerRuntime | String | 否 | 容器运行时,根据集群版本和需求选择
|
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 |
ExistedInstanceForEpc.N | Object | 否 | 使用已有的云物理机创建集群,定义节点角色和配置 |
NodeRole | String | 否 | 节点角色,有效值:
ClusterManageMode字段为DedicatedCluster时
示例值:Worker |
EpcConfig.N | Object | 否 | 裸金属节点配置 |
Para | String | 否 | 支持移入的EPC实例id,Json形式 示例值:{"InstanceId":"xxx"} |
AdvancedSetting | Object | 否 | 节点的高级配置设置 |
ContainerRuntime | String | 否 | 容器运行时,根据集群版本和需求选择
|
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个 |
Taint.N | Object | 否 | 节点加入集群时预置污点,匹配污点容忍进行调度 |
Key | String | 否 | 污点名称,校验规则:不超过253个字符,只能包含字母、数字及分隔符("-"、"_"、"."、"/"),且必须以字母、数字开头和结尾 |
Value | String | 否 | 污点值,校验规则:不超过63个字符,只能包含字母、数字及分隔符("-"、"_"、"."、"/"),且必须以字母、数字开头和结尾 |
Effect | String | 否 | 污点效果,有效值为NoSchedule、PreferNoSchedule、NoExecute |
Component.N | Object | 否 | 不推荐使用接口进行安装,集群会安装默认的组件,如需安装其它增强组件,请在集群创建完成后,在控制台选择安装。 |
Name | String | 否 | 组件名称 |
Config | String | 否 | 组件相关参数 |
ControlPlaneLog | Object | 否 | 控制面日志采集,当用户选择的是独立部署集群时,此选项填写无效;当选择是托管时,可选 |
ClusterId | String | 否 | 集群ID |
Enable | Boolean | 否 | 控制面日志采集是否开启 |
ProjectName | String | 否 | 指定控制面日志所投递日志项目的名称,未配置但指定items时将自动创建名称为k8s-log-{clusterID}的日志项目 |
Items | String | 否 | 指定哪些控制面日志需要被采集,多个组件请采用英文逗号拼接,如apiserver,kcm,有效值
|
EnableDelProtection | Boolean | 否 | 开启删除保护 默认值: true |
参数名称 | 类型 | 描述 |
---|
RequestId | String | 请求id 示例值:c79283f6-49c5-4c18-ba74-xxxxxx |
ClusterId | String | 集群id 示例值:be502bb4-49e2-4572-ba63-xxxxxx |
JSON格式
以下仅列出了接口业务逻辑相关的错误码,其他错误码详见公共错误码
错误码 | 错误信息 | Http状态码 | 描述 |
---|
ClusterNameRequired | ClusterName is required | 400 | 集群名称不能为空 |
ClusterManageModeInvalid | the value only supports ManagedCluster,DedicatedCluster,ServerlessCluster | 400 | 集群模式不正确 |
ClusterNameLengthExceed | the length of ClusterName can't exceed 64 | 400 | 集群名称不能超过64个字符 |
NetworkTypeInvalid | the value only supports Flannel,Canal,Calico | 400 | 网络模型无效 |
ClusterDescLengthExceed | the length of ClusterDesc can't exceed 200 | 400 | 集群描述不能超过200个字符 |
VpcIdInvalid | VpcId 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 | VpcId必须满足`^[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}$` |
K8sVersionInvalid | the value only supports xx | 400 | k8s集群版本无效 |
MaxPodPerNodeInvalid | the value only supports 16,32,64,128,256 | 400 | MaxPodPerNode值无效 |
ServiceCidrInvalid | ServiceCidr must match `^(?:(?:[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}(?:[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\/([1-9]|[1-2]\d|3[0-2])$` | 400 | Service网段格式必须满足`^(?:(?:[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}(?:[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\/([1-9]|[1-2]\d|3[0-2])$` |
PodCidr | PodCidr must match `^(?:(?:[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}(?:[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\/([1-9]|[1-2]\d|3[0-2])$` | 400 | PodCidr网段格式必须满足`^(?:(?:[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}(?:[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\/([1-9]|[1-2]\d|3[0-2])$` |
InvalidRole | KsyunKCEDefaultRole is needed | 400 | KsyunKCEDefaultRole角色必须接受并授权 |
ClusterQuotaExceed | 集群总数配额(quota_kce_cluster)不足 | 400 | 集群总数配额(quota_kce_cluster)不足 |
ManagedClusterQuotaExceed | 托管集群配额(quota_kce_managedcluster)不足 | 400 | 托管集群配额(quota_kce_managedcluster)不足 |
SubnetNotFound | subnet xx is not found | 400 | 子网不存在 |
SubnetNotSupport | subnet xx is unsupported, only supports Normal subnet | 400 | 不支持的子网,仅支持普通云服务器子网 |
SecurityGroupNotFound | security group xx is not found | 400 | 安全组不存在 |
ClusterNodeQuotaExceed | 集群节点配额(quota_kce_node)不足 | 400 | 集群节点配额(quota_kce_node)不足 |
ClusterPodCidrConflict | PodCidr and ServiceCidr 冲突 | 400 | PodCidr and ServiceCidr 冲突 |
ClusterServiceCidrConflict | ServiceCidr and vpcCidr 冲突 | 400 | ServiceCidr and vpcCidr 冲突 |
MasterNodeNumInvalid | the number of Master must be 3 or 5 | 400 | master数量必须是3个或者5个 |
EtcdNodeNumInvalid | the number of Etcd must be 3 or 5 | 400 | Etcd节点数量必须是3个或者5个 |
NodeRoleInvalid | ManagedCluster or ServerlessCluster can't has Master_Etcd、Master and Etcd role | 400 | 托管或者Serverless集群不能包含Master、Master_Etcd、Etcd角色 |
CreateClusterError | failed to create cluster | 400 | 创建集群失败 |
CreateServerlessClusterError | create serverless cluster resource error | 400 | 创建serverless集群资源发生错误 |
ManagedClusterMasterSubnetRequired | ManagedClusterMasterSubnet config is required | 400 | 托管集群Master子网信息必须填写 |
ParamInvalid | InstanceForNode and ExistedInstanceForEpc config can't be existed at the same time | 400 | InstanceForNode与ExistedInstanceForEpc配置不能同时填写 |
KLogServiceNotActivated | KLog服务不可用,请开通KLog日志服务! | 400 | KLog服务不可用,请开通KLog日志服务! |
纯净模式