全部文档
当前文档

暂无内容

如果没有找到您期望的内容,请尝试其他搜索词

文档中心

创建集群(新)

接口说明

该接口可用于创建独立部署集群、托管集群、Serverless集群,如果需要创建纳管集群,请使用接口CreateExternalCluster。

请求参数

以下请求参数列表仅列出了接口请求参数和部分公共参数,完整公共参数列表见公共请求参数
参数名称
类型
必填
描述
Action String
公共参数,本接口取值:CreateCluster。
Version String
公共参数,本接口取值:2020-12-31。
ClusterName String

集群名称
有效值:2-64个字符,支持中文,英文,数字,以及特殊字符-,.!$^*()%#&+/:;<=>[]_`{}~

ClusterType String

集群类型,默认值 VirtualMachine,该字段已无实际意义,可忽略

  • VirtualMachine 云服务器
  • BareMetal 裸金属
示例值:VirtualMachine
ClusterManageMode String

集群管理模式,默认DedicatedCluster

  • DedicatedCluster 独立部署集群
  • ManagedCluster 托管集群
  • ServerlessCluster serverless集群
ClusterDesc String

集群描述

VpcId String

集群所在的vpcid

PodCidr String

集群pod的网段,如:10.0.0.0/16

  • 不能与Service网段冲突
  • 不能与VPC网段冲突
  • 托管集群不支持33网段
ServiceCidr String

集群Service的网段,如10.254.0.0/16

  • 不能与Pod网段冲突
  • 不能与Vpc网段冲突
NetworkType String

集群的网络模型

  • Flannel
  • Canal
  • Calico
K8sVersion String

容器服务支持的k8s的集群版本号
有效值:v1.17.6、v1.19.3、v1.21.3

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数量上限
默认值:128
可选值:16,32,64,128,256

MasterEtcdSeparate Boolean

该字段仅针对于独立部署集群生效,托管集群不生效。集群Master和Etcd组件部署方式,有效值:
True:Master和Etcd组件独享节点部署
False:Master和Etcd组件共享节点部署
默认值:False

ManagedClusterMultiMaster.N Object

当集群类型为托管集群时生效,为托管集群控制面进行子网和安全组配置,支持配置多个

SubnetId String

master.N所在子网的id

SecurityGroupId String

master.N的安全组id

InstanceForNode.N Object

新建节点创建集群,定义节点角色和配置,支持云服务器机和专属云服务器。

NodeRole String

节点角色,有效值:

  • Worker
  • Master_Etcd
  • Master
  • Etcd

ClusterManageMode字段为DedicatedCluster时

  • MasterEtcdSeparate字段设置为False时,Worker和Master_Etcd需要同时指定
  • MasterEtcdSeparate字段设置为True时,Master、Etcd和Worker角色需要同时指定。
  • Master_Etcd、Master、Etcd目前只能是3个或者5个。
  • Master_Etcd、Master、Etcd建议配置4C8G起,数据盘建议SSD,50G起。
示例值:Worker
NodeConfig.N Object

定义节点的配置,支持普通云主机和专属云主机。

Para String

定义节点的配置,支持普通云主机和专属云主机。
节点配置信息使用云主机/专属云主机创建透传参数,json化字符串格式,详见云主机创建实例接口

示例值:{"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

容器运行时,根据集群版本和需求选择
Kubernetes版本<1.24时,有效值:

  • docker
  • containerd
    Kubernetes版本≥1.24时,有效值:
  • containerd
    默认值:docker
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

节点角色,有效值:

  • Worker
  • Master_Etcd
  • Master
  • Etcd

ClusterManageMode字段为DedicatedCluster时

  • MasterEtcdSeparate字段设置为False时,Worker和Master_Etcd需要同时指定
  • MasterEtcdSeparate字段设置为True时,Master、Etcd和Worker角色需要同时指定。
  • Master_Etcd、Master、Etcd目前只能是3个或者5个。
  • Master_Etcd、Master、Etcd建议配置4C8G起,数据盘建议SSD,50G起。
示例值:Worker
EpcConfig.N Object

裸金属节点配置

Para String

支持移入的EPC实例id,Json形式

示例值:{"InstanceId":"xxx"}
AdvancedSetting Object

节点的高级配置设置

ContainerRuntime String

容器运行时,根据集群版本和需求选择
Kubernetes版本<1.24时,有效值:

  • docker
  • containerd
    Kubernetes版本≥1.24时,有效值:
  • contained
    默认值:docker
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,有效值

  • apiserver
  • kcm
  • scheduler
  • auditing"
EnableDelProtection Boolean

开启删除保护
默认值:True

默认值: true

返回参数

参数名称
类型
描述
RequestId String

请求id

示例值:c79283f6-49c5-4c18-ba74-xxxxxx
ClusterId String

集群id

示例值:be502bb4-49e2-4572-ba63-xxxxxx

请求示例

curl -X POST
'http://kce.api.ksyun.com/?Action=CreateCluster&Version=2020-12-31'
-H 'authorization: xxx, SignedHeaders=content-type;host;x-amz-date, Signature=xxx'
-H 'cache-control: no-cache'
-H 'content-type: application/x-www-form-urlencoded'
-H 'host: kce.api.ksyun.com'
-H 'x-amz-date: 20170720T022802Z'
-d 'ClusterName=xxx&ClusterType=xxx&ClusterManageMode=xxx&ClusterDesc=xxx&VpcId=xxx&PodCidr=xxx&ServiceCidr=xxx&NetworkType=xxx&K8sVersion=xxx&ReserveSubnetId=xxx&PublicApiServer=xxx&ExposePublicApiServer=xxx&MaxPodPerNode=xxx&MasterEtcdSeparate=xxx&ManagedClusterMultiMaster.N.SubnetId=xxx&ManagedClusterMultiMaster.N.SecurityGroupId=xxx&InstanceForNode.N.NodeRole=xxx&InstanceForNode.N.NodeConfig.N.Para=xxx&InstanceForNode.N.NodeConfig.N.AdvancedSetting.DataDisk.AutoFormatAndMount=xxx&InstanceForNode.N.NodeConfig.N.AdvancedSetting.DataDisk.FileSystem=xxx&InstanceForNode.N.NodeConfig.N.AdvancedSetting.DataDisk.MountTarget=xxx&InstanceForNode.N.NodeConfig.N.AdvancedSetting.ContainerRuntime=xxx&InstanceForNode.N.NodeConfig.N.AdvancedSetting.ContainerPath=xxx&InstanceForNode.N.NodeConfig.N.AdvancedSetting.UserScript=xxx&InstanceForNode.N.NodeConfig.N.AdvancedSetting.PreUserScript=xxx&InstanceForNode.N.NodeConfig.N.AdvancedSetting.Schedulable=xxx&InstanceForNode.N.NodeConfig.N.AdvancedSetting.Label.N.Key=xxx&InstanceForNode.N.NodeConfig.N.AdvancedSetting.Label.N.Value=xxx&InstanceForNode.N.NodeConfig.N.AdvancedSetting.ExtraArg.Kubelet.N.CustomArg=xxx&InstanceForNode.N.NodeConfig.N.AdvancedSetting.ContainerLogMaxSize=xxx&InstanceForNode.N.NodeConfig.N.AdvancedSetting.ContainerLogMaxFiles=xxx&InstanceForNode.N.NodeConfig.N.AdvancedSetting.Taints.N.Key=xxx&InstanceForNode.N.NodeConfig.N.AdvancedSetting.Taints.N.Value=xxx&InstanceForNode.N.NodeConfig.N.AdvancedSetting.Taints.N.Effect=xxx&ExistedInstanceForEpc.N.NodeRole=xxx&ExistedInstanceForEpc.N.EpcConfig.N.Para=xxx&ExistedInstanceForEpc.N.EpcConfig.N.AdvancedSetting.ContainerRuntime=xxx&ExistedInstanceForEpc.N.EpcConfig.N.AdvancedSetting.ContainerPath=xxx&ExistedInstanceForEpc.N.EpcConfig.N.AdvancedSetting.UserScript=xxx&ExistedInstanceForEpc.N.EpcConfig.N.AdvancedSetting.PreUserScript=xxx&ExistedInstanceForEpc.N.EpcConfig.N.AdvancedSetting.Schedulable=xxx&ExistedInstanceForEpc.N.EpcConfig.N.AdvancedSetting.Label.N.Key=xxx&ExistedInstanceForEpc.N.EpcConfig.N.AdvancedSetting.Label.N.Value=xxx&ExistedInstanceForEpc.N.EpcConfig.N.AdvancedSetting.ExtraArg.Kubelet.N.CustomArg=xxx&ExistedInstanceForEpc.N.EpcConfig.N.AdvancedSetting.ContainerLogMaxSize=xxx&ExistedInstanceForEpc.N.EpcConfig.N.AdvancedSetting.ContainerLogMaxFiles=xxx&ExistedInstanceForEpc.N.EpcConfig.N.AdvancedSetting.Taint.N.Key=xxx&ExistedInstanceForEpc.N.EpcConfig.N.AdvancedSetting.Taint.N.Value=xxx&ExistedInstanceForEpc.N.EpcConfig.N.AdvancedSetting.Taint.N.Effect=xxx&Component.N.Name=xxx&Component.N.Config=xxx&ControlPlaneLog.ClusterId=xxx&ControlPlaneLog.Enable=xxx&ControlPlaneLog.ProjectName=xxx&ControlPlaneLog.Items=xxx&EnableDelProtection= true'

返回示例

JSON格式

{
"RequestId":"c79283f6-49c5-4c18-ba74-xxxxxx",
"ClusterId":"be502bb4-49e2-4572-ba63-xxxxxx"
}

错误码

以下仅列出了接口业务逻辑相关的错误码,其他错误码详见公共错误码

错误码
错误信息
Http状态码
描述
ClusterNameRequiredClusterName is required400集群名称不能为空
ClusterManageModeInvalidthe value only supports ManagedCluster,DedicatedCluster,ServerlessCluster400集群模式不正确
ClusterNameLengthExceedthe length of ClusterName can't exceed 64400集群名称不能超过64个字符
NetworkTypeInvalidthe value only supports Flannel,Canal,Calico400网络模型无效
ClusterDescLengthExceedthe length of ClusterDesc can't exceed 200400集群描述不能超过200个字符
VpcIdInvalidVpcId 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}$`400VpcId必须满足`^[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}$`
K8sVersionInvalidthe value only supports xx400k8s集群版本无效
MaxPodPerNodeInvalidthe value only supports 16,32,64,128,256400MaxPodPerNode值无效
ServiceCidrInvalidServiceCidr 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])$`400Service网段格式必须满足`^(?:(?:[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])$`
PodCidrPodCidr 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])$`400PodCidr网段格式必须满足`^(?:(?:[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])$`
InvalidRoleKsyunKCEDefaultRole is needed400KsyunKCEDefaultRole角色必须接受并授权
ClusterQuotaExceed集群总数配额(quota_kce_cluster)不足400集群总数配额(quota_kce_cluster)不足
ManagedClusterQuotaExceed托管集群配额(quota_kce_managedcluster)不足400托管集群配额(quota_kce_managedcluster)不足
SubnetNotFoundsubnet xx is not found400子网不存在
SubnetNotSupportsubnet xx is unsupported, only supports Normal subnet400不支持的子网,仅支持普通云服务器子网
SecurityGroupNotFoundsecurity group xx is not found400安全组不存在
ClusterNodeQuotaExceed集群节点配额(quota_kce_node)不足400集群节点配额(quota_kce_node)不足
ClusterPodCidrConflictPodCidr and ServiceCidr 冲突400PodCidr and ServiceCidr 冲突
ClusterServiceCidrConflictServiceCidr and vpcCidr 冲突400ServiceCidr and vpcCidr 冲突
MasterNodeNumInvalidthe number of Master must be 3 or 5400master数量必须是3个或者5个
EtcdNodeNumInvalidthe number of Etcd must be 3 or 5400Etcd节点数量必须是3个或者5个
NodeRoleInvalidManagedCluster or ServerlessCluster can't has Master_Etcd、Master and Etcd role400托管或者Serverless集群不能包含Master、Master_Etcd、Etcd角色
CreateClusterErrorfailed to create cluster400创建集群失败
CreateServerlessClusterErrorcreate serverless cluster resource error400创建serverless集群资源发生错误
ManagedClusterMasterSubnetRequiredManagedClusterMasterSubnet config is required400托管集群Master子网信息必须填写
ParamInvalidInstanceForNode and ExistedInstanceForEpc config can't be existed at the same time400InstanceForNode与ExistedInstanceForEpc配置不能同时填写
KLogServiceNotActivatedKLog服务不可用,请开通KLog日志服务!400KLog服务不可用,请开通KLog日志服务!
纯净模式常规模式

纯净模式

点击可全屏预览文档内容