创建集群
功能介绍
该API用于创建一个空集群(即只有控制节点Master,没有工作节点Node)。请在调用本接口完成集群创建之后,通过创建节点添加节点。
-
集群管理的URL格式为:https://Endpoint/uri。其中uri为资源路径,也即API访问的路径。
-
调用该接口创建集群时,默认不安装ICAgent,若需安装ICAgent,可在请求Body参数的annotations中加入"cluster.install.addons.external/install":"[{"addonTemplateName":"icagent"}]"的集群注解,将在创建集群时自动安装ICAgent。ICAgent是应用性能管理APM的采集代理,运行在应用所在的服务器上,用于实时采集探针所获取的数据,安装ICAgent是使用应用性能管理APM的前提。
接口约束
调用CCE接口创建集群之前,请检查是否已满足如下条件:
-
创建集群之前,您必须先确保已存在虚拟私有云,否则无法创建集群。若您已有虚拟私有云,可重复使用,无需重复创建。虚拟私有云为CCE集群提供一个隔离的、用户自主配置和管理的虚拟网络环境。若您没有虚拟私有云,请先进行创建,详情请参见创建VPC。
-
创建集群之前,请提前规划好容器网段和服务网段。容器隧道网络模式的集群在创建之后,无法修改网段参数;vpc网络模式和云原生网络模式的集群在创建后可以新增网段参数,不可修改已有网段参数,需要重新创建集群才能调整,请谨慎选择。
-
请确保已正确创建委托,并确保委托未被删除,委托校验失败将导致集群创建失败。建议登录CCE控制台,如没有创建委托,会提示您创建,如已经创建则无提示。
-
默认情况下,一个账户只能创建5个集群(每个Region下),如果您需要创建更多的集群,请申请增加配额。详情请参见如何申请扩大配额。
调用方法
请参见如何调用API。
URI
POST /api/v3/projects/{project_id}/clusters
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
project_id |
是 |
String |
项目ID,获取方式请参见如何获取接口URI中参数。 |
请求参数
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
Content-Type |
是 |
String |
消息体的类型(格式) |
X-Auth-Token |
是 |
String |
调用接口的认证方式分为Token和AK/SK两种,如果您使用的Token方式,此参数为必填,请填写Token的值,获取方式请参见获取token。 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
kind |
是 |
String |
API类型,固定值“Cluster”或“cluster”,该值不可修改。 |
apiVersion |
是 |
String |
API版本,固定值“v3”,该值不可修改。 |
metadata |
是 |
ClusterMetadata object |
集群的基本信息,为集合类的元素类型,包含一组由不同名称定义的属性。 |
spec |
是 |
ClusterSpec object |
spec是集合类的元素类型,您对需要管理的集群对象进行详细描述的主体部分都在spec中给出。CCE通过spec的描述来创建或更新对象。 |
status |
否 |
ClusterStatus object |
集合类的元素类型,用于记录对象在系统中的当前状态信息,包含了集群状态和本次创建集群作业的jobID |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
name |
是 |
String |
集群名称。 命名规则:以小写字母开头,由小写字母、数字、中划线(-)组成,长度范围4-128位,且不能以中划线(-)结尾。 |
uid |
否 |
String |
集群ID,资源唯一标识,创建成功后自动生成,填写无效。在创建包周期集群时,响应体不返回集群ID。 |
alias |
否 |
String |
集群显示名,用于在 CCE 界面显示,该名称创建后可修改。 命名规则:以中文或英文字符开头,由数字、中文、英文字符、中划线(-)组成,长度范围 4-128位,且不能以中划线(-)开头和结尾。 显示名和其他集群的名称、显示名不可以重复。 在创建集群、更新集群请求体中,集群显示名alias未指定或取值为空,表示与集群名称name一致。在查询集群等响应体中,集群显示名alias将必然返回,未配置时将返回集群名称name。 |
annotations |
否 |
Map<String,String> |
集群注解,由key/value组成: "annotations": { "key1" : "value1", "key2" : "value2" }
说明:
|
labels |
否 |
Map<String,String> |
集群标签,key/value对格式。
说明:
该字段值由系统自动生成,用于升级时前端识别集群支持的特性开关,用户指定无效。 |
creationTimestamp |
否 |
String |
集群创建时间 |
updateTimestamp |
否 |
String |
集群更新时间 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
category |
否 |
String |
集群类别:
|
type |
否 |
String |
集群Master节点架构:
|
flavor |
是 |
String |
集群规格,当集群为v1.15及以上版本时支持创建后变更,详情请参见变更集群规格。请按实际业务需求进行选择:
说明:
关于规格参数中的字段说明如下:
|
version |
否 |
String |
集群版本,与Kubernetes社区基线版本保持一致,建议选择最新版本。 在CCE控制台支持创建三种最新版本的集群。可登录CCE控制台创建集群,在“版本”处获取到集群版本。 其它集群版本,当前仍可通过api创建,但后续会逐渐下线,具体下线策略请关注CCE官方公告。
说明:
|
platformVersion |
否 |
String |
CCE集群平台版本号,表示集群版本(version)下的内部版本。用于跟踪某一集群版本内的迭代,集群版本内唯一,跨集群版本重新计数。不支持用户指定,集群创建时自动选择对应集群版本的最新平台版本。 platformVersion格式为:cce.X.Y
|
description |
否 |
String |
集群描述,对于集群使用目的的描述,可根据实际情况自定义,默认为空。集群创建成功后可通过接口更新指定的集群来做出修改,也可在CCE控制台中对应集群的“集群详情”下的“描述”处进行修改。仅支持utf-8编码。 |
customSan |
否 |
Array of strings |
集群的API Server服务端证书中的自定义SAN(Subject Alternative Name)字段,遵从SSL标准X509定义的格式规范。
示例: SAN 1: DNS Name=example.com SAN 2: DNS Name=www.example.com SAN 3: DNS Name=example.net SAN 4: IP Address=93.184.216.34 |
ipv6enable |
否 |
Boolean |
集群是否使用IPv6模式,1.15版本及以上支持。
说明:
开启Ipv6后不支持iptables转发模式;VPC网络模式不支持IPv4/IPv6双栈网络。 |
hostNetwork |
是 |
HostNetwork object |
节点网络参数,包含了虚拟私有云VPC和子网的ID信息,而VPC是集群内节点之间的通信依赖,所以是必选的参数集。 |
containerNetwork |
是 |
ContainerNetwork object |
容器网络参数,包含了容器网络类型和容器网段的信息。 |
eniNetwork |
否 |
EniNetwork object |
云原生网络2.0网络配置,创建CCE Turbo集群时指定。 |
serviceNetwork |
否 |
ServiceNetwork object |
服务网段参数,包含IPv4 CIDR。 |
authentication |
否 |
Authentication object |
集群认证方式相关配置。 |
billingMode |
否 |
Integer |
集群的计费方式。
默认为“按需计费”。 |
masters |
否 |
Array of MasterSpec objects |
控制节点的高级配置 |
kubernetesSvcIpRange |
否 |
String |
服务网段参数,kubernetes clusterIP取值范围,1.11.7版本及以上支持。创建集群时如若未传参,默认为"10.247.0.0/16"。该参数废弃中,推荐使用新字段serviceNetwork,包含IPv4服务网段。 |
clusterTags |
否 |
Array of ResourceTag objects |
集群资源标签 |
kubeProxyMode |
否 |
String |
服务转发模式,支持以下两种实现:
说明:
默认使用iptables转发模式。 |
az |
否 |
String |
可用区(仅查询返回字段)。 CCE支持的可用区请参考地区和终端节点。 |
extendParam |
否 |
ClusterExtendParam object |
集群扩展字段,可配置多可用区集群、专属CCE集群,以及将集群创建在特定的企业项目下等。 |
supportIstio |
否 |
Boolean |
支持Istio |
configurationsOverride |
否 |
Array of PackageConfiguration objects |
覆盖集群默认组件配置。 若指定了不支持的组件或组件不支持的参数,该配置项将被忽略。 当前支持的可配置组件及其参数详见配置管理。 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
vpc |
是 |
String |
用于创建控制节点的VPC的ID。 获取方法如下:
|
subnet |
是 |
String |
用于创建控制节点的subnet的网络ID。获取方法如下:
|
SecurityGroup |
否 |
String |
集群默认的Node节点安全组ID,不指定该字段系统将自动为用户创建默认Node节点安全组,指定该字段时集群将绑定指定的安全组。Node节点安全组需要放通部分端口来保证正常通信。详细设置请参考集群安全组规则配置。 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
mode |
是 |
String |
容器网络类型(只可选择其一)
|
cidr |
否 |
String |
容器网络网段,建议使用网段10.0.0.0/12~19,172.16.0.0/16~19,192.168.0.0/16~19,如存在网段冲突,将会报错。 此参数在集群创建后不可更改,请谨慎选择。(已废弃,如填写cidrs将忽略该cidr) vpc网络模式和云原生网络模式的集群在创建后可以新增网段参数,不可修改已有网段参数,需要重新创建集群才能调整。 不填此参数时,将从172.(16 ~ 31).0.0/16、10.(0 | 16 | 32 | 48 | 64 | 80 | 96 | 112).0.0/12中随机分配一个不冲突的网段供用户使用。 |
cidrs |
否 |
Array of ContainerCIDR objects |
容器网络网段列表。1.21及新版本集群使用cidrs字段,当集群网络类型为vpc-router类型时,支持多个容器网段,最多配置20个;1.21之前版本若使用cidrs字段,则取值cidrs数组中的第一个cidr元素作为容器网络网段地址。 容器隧道网络模式的集群在创建之后,无法修改网段参数; vpc网络模式和云原生网络模式的集群在创建后可以新增网段参数,不可修改已有网段参数,需要重新创建集群才能调整。 不填此参数时,将从172.(16 ~ 31).0.0/16、10.(0 | 16 | 32 | 48 | 64 | 80 | 96 | 112).0.0/12中随机分配一个不冲突的网段供用户使用。 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
cidr |
是 |
String |
容器网络网段,建议使用网段10.0.0.0/12~19,172.16.0.0/16~19,192.168.0.0/16~19,如存在网段冲突,将会报错。 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
eniSubnetId |
是 |
String |
ENI所在子网的IPv4子网ID(暂不支持IPv6,废弃中)。获取方法如下:
|
eniSubnetCIDR |
否 |
String |
ENI子网CIDR(废弃中) |
subnets |
是 |
Array of NetworkSubnet objects |
IPv4子网ID列表 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
subnetID |
是 |
String |
用于创建控制节点的subnet的IPv4子网ID(暂不支持IPv6)。获取方法如下:
|
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
IPv4CIDR |
否 |
String |
kubernetes clusterIP IPv4 CIDR取值范围。创建集群时若未传参,默认为"10.247.0.0/16"。 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
mode |
否 |
String |
集群认证模式。
|
authenticatingProxy |
否 |
AuthenticatingProxy object |
authenticatingProxy模式相关配置。认证模式为authenticating_proxy时必选。 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
ca |
否 |
String |
authenticating_proxy模式配置的x509格式CA证书(base64编码)。当集群认证模式为authenticating_proxy时,此项必须填写。 最大长度:1M |
cert |
否 |
String |
authenticating_proxy模式配置的x509格式CA证书签发的客户端证书,用于kube-apiserver到扩展apiserver的认证。(base64编码)。当集群认证模式为authenticating_proxy时,此项必须填写。 |
privateKey |
否 |
String |
authenticating_proxy模式配置的x509格式CA证书签发的客户端证书时对应的私钥,用于kube-apiserver到扩展apiserver的认证。Kubernetes集群使用的私钥尚不支持密码加密,请使用未加密的私钥。(base64编码)。当集群认证模式为authenticating_proxy时,此项必须填写。 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
key |
否 |
String |
Key值。
|
value |
否 |
String |
Value值。
|
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
clusterAZ |
否 |
String |
集群控制节点可用区配置。 CCE支持的可用区请参考地区和终端节点。
|
dssMasterVolumes |
否 |
String |
用于指定控制节点的系统盘和数据盘使用专属分布式存储,未指定或者值为空时,默认使用EVS云硬盘。 如果配置专属CCE集群,该字段为必选,请按照如下格式设置: <rootVol.dssPoolID>.<rootVol.volType>;<dataVol.dssPoolID>.<dataVol.volType> 字段说明:
样例:c950ee97-587c-4f24-8a74-3367e3da570f.sas;6edbc2f4-1507-44f8-ac0d-eed1d2608d38.ssd
说明:
非专属CCE集群不支持配置该字段。 |
enterpriseProjectId |
否 |
String |
集群所属的企业项目ID。
说明:
|
kubeProxyMode |
否 |
String |
服务转发模式,支持以下两种实现:
说明:
此参数已废弃,若同时指定此参数和ClusterSpec下的kubeProxyMode,以ClusterSpec下的为准。 |
clusterExternalIP |
否 |
String |
master 弹性公网IP |
alpha.cce/fixPoolMask |
否 |
String |
容器网络固定IP池掩码位数,仅vpc-router网络支持。 该参数决定节点可分配容器IP数量,与创建节点时设置的maxPods参数共同决定节点最多可以创建多少个Pod, 具体请参见节点可创建的最大Pod数量说明。 整数字符传取值范围: 24 ~ 28 |
decMasterFlavor |
否 |
String |
专属CCE集群指定可控制节点的规格。 |
dockerUmaskMode |
否 |
String |
集群默认Docker的UmaskMode配置,可取值为secure或normal,不指定时默认为normal。 |
kubernetes.io/cpuManagerPolicy |
否 |
String |
集群CPU管理策略。取值为none(或空值)或static,默认为none(或空值)。
|
orderID |
否 |
String |
订单ID,集群付费类型为自动付费包周期类型时,响应中会返回此字段(仅创建场景涉及)。 |
periodType |
否 |
String |
说明:
作为请求参数,billingMode为1(包周期)时生效,且为必选。 作为响应参数,仅在创建包周期集群时返回。 |
periodNum |
否 |
Integer |
订购周期数,取值范围:
说明:
作为请求参数,billingMode为1时生效,且为必选。 作为响应参数,仅在创建包周期集群时返回。 |
isAutoRenew |
否 |
String |
是否自动续订
说明:
billingMode为1时生效,不填写此参数时默认不会自动续费。 |
isAutoPay |
否 |
String |
是否自动扣款
说明:
billingMode为1时生效,不填写此参数时默认不会自动扣款。 |
upgradefrom |
否 |
String |
记录集群通过何种升级方式升级到当前版本。 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
name |
否 |
String |
组件名称 |
configurations |
否 |
Array of ConfigurationItem objects |
组件配置项 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
phase |
否 |
String |
集群状态,取值如下
|
jobID |
否 |
String |
任务ID,集群当前状态关联的任务ID。当前支持:
说明:
任务信息具有一定时效性,仅用于短期跟踪任务进度,请勿用于集群状态判断等额外场景。 |
reason |
否 |
String |
集群变为当前状态的原因,在集群在非“Available”状态下时,会返回此参数。 |
message |
否 |
String |
集群变为当前状态的原因的详细信息,在集群在非“Available”状态下时,会返回此参数。 |
endpoints |
否 |
Array of ClusterEndpoints objects |
集群中 kube-apiserver 的访问地址。 |
isLocked |
否 |
Boolean |
CBC资源锁定 |
lockScene |
否 |
String |
CBC资源锁定场景 |
lockSource |
否 |
String |
锁定资源 |
lockSourceId |
否 |
String |
锁定的资源ID |
deleteOption |
否 |
Object |
删除配置状态(仅删除请求响应包含) |
deleteStatus |
否 |
Object |
删除状态信息(仅删除请求响应包含) |
响应参数
状态码: 201
参数 |
参数类型 |
描述 |
---|---|---|
kind |
String |
API类型,固定值“Cluster”或“cluster”,该值不可修改。 |
apiVersion |
String |
API版本,固定值“v3”,该值不可修改。 |
metadata |
ClusterMetadata object |
集群的基本信息,为集合类的元素类型,包含一组由不同名称定义的属性。 |
spec |
ClusterSpec object |
spec是集合类的元素类型,您对需要管理的集群对象进行详细描述的主体部分都在spec中给出。CCE通过spec的描述来创建或更新对象。 |
status |
ClusterStatus object |
集合类的元素类型,用于记录对象在系统中的当前状态信息,包含了集群状态和本次创建集群作业的jobID |
参数 |
参数类型 |
描述 |
---|---|---|
name |
String |
集群名称。 命名规则:以小写字母开头,由小写字母、数字、中划线(-)组成,长度范围4-128位,且不能以中划线(-)结尾。 |
uid |
String |
集群ID,资源唯一标识,创建成功后自动生成,填写无效。在创建包周期集群时,响应体不返回集群ID。 |
alias |
String |
集群显示名,用于在 CCE 界面显示,该名称创建后可修改。 命名规则:以中文或英文字符开头,由数字、中文、英文字符、中划线(-)组成,长度范围 4-128位,且不能以中划线(-)开头和结尾。 显示名和其他集群的名称、显示名不可以重复。 在创建集群、更新集群请求体中,集群显示名alias未指定或取值为空,表示与集群名称name一致。在查询集群等响应体中,集群显示名alias将必然返回,未配置时将返回集群名称name。 |
annotations |
Map<String,String> |
集群注解,由key/value组成: "annotations": { "key1" : "value1", "key2" : "value2" }
说明:
|
labels |
Map<String,String> |
集群标签,key/value对格式。
说明:
该字段值由系统自动生成,用于升级时前端识别集群支持的特性开关,用户指定无效。 |
creationTimestamp |
String |
集群创建时间 |
updateTimestamp |
String |
集群更新时间 |
参数 |
参数类型 |
描述 |
---|---|---|
category |
String |
集群类别:
|
type |
String |
集群Master节点架构:
|
flavor |
String |
集群规格,当集群为v1.15及以上版本时支持创建后变更,详情请参见变更集群规格。请按实际业务需求进行选择:
说明:
关于规格参数中的字段说明如下:
|
version |
String |
集群版本,与Kubernetes社区基线版本保持一致,建议选择最新版本。 在CCE控制台支持创建三种最新版本的集群。可登录CCE控制台创建集群,在“版本”处获取到集群版本。 其它集群版本,当前仍可通过api创建,但后续会逐渐下线,具体下线策略请关注CCE官方公告。
说明:
|
platformVersion |
String |
CCE集群平台版本号,表示集群版本(version)下的内部版本。用于跟踪某一集群版本内的迭代,集群版本内唯一,跨集群版本重新计数。不支持用户指定,集群创建时自动选择对应集群版本的最新平台版本。 platformVersion格式为:cce.X.Y
|
description |
String |
集群描述,对于集群使用目的的描述,可根据实际情况自定义,默认为空。集群创建成功后可通过接口更新指定的集群来做出修改,也可在CCE控制台中对应集群的“集群详情”下的“描述”处进行修改。仅支持utf-8编码。 |
customSan |
Array of strings |
集群的API Server服务端证书中的自定义SAN(Subject Alternative Name)字段,遵从SSL标准X509定义的格式规范。
示例: SAN 1: DNS Name=example.com SAN 2: DNS Name=www.example.com SAN 3: DNS Name=example.net SAN 4: IP Address=93.184.216.34 |
ipv6enable |
Boolean |
集群是否使用IPv6模式,1.15版本及以上支持。
说明:
开启Ipv6后不支持iptables转发模式;VPC网络模式不支持IPv4/IPv6双栈网络。 |
hostNetwork |
HostNetwork object |
节点网络参数,包含了虚拟私有云VPC和子网的ID信息,而VPC是集群内节点之间的通信依赖,所以是必选的参数集。 |
containerNetwork |
ContainerNetwork object |
容器网络参数,包含了容器网络类型和容器网段的信息。 |
eniNetwork |
EniNetwork object |
云原生网络2.0网络配置,创建CCE Turbo集群时指定。 |
serviceNetwork |
ServiceNetwork object |
服务网段参数,包含IPv4 CIDR。 |
authentication |
Authentication object |
集群认证方式相关配置。 |
billingMode |
Integer |
集群的计费方式。
默认为“按需计费”。 |
masters |
Array of MasterSpec objects |
控制节点的高级配置 |
kubernetesSvcIpRange |
String |
服务网段参数,kubernetes clusterIP取值范围,1.11.7版本及以上支持。创建集群时如若未传参,默认为"10.247.0.0/16"。该参数废弃中,推荐使用新字段serviceNetwork,包含IPv4服务网段。 |
clusterTags |
Array of ResourceTag objects |
集群资源标签 |
kubeProxyMode |
String |
服务转发模式,支持以下两种实现:
说明:
默认使用iptables转发模式。 |
az |
String |
可用区(仅查询返回字段)。 CCE支持的可用区请参考地区和终端节点。 |
extendParam |
ClusterExtendParam object |
集群扩展字段,可配置多可用区集群、专属CCE集群,以及将集群创建在特定的企业项目下等。 |
supportIstio |
Boolean |
支持Istio |
configurationsOverride |
Array of PackageConfiguration objects |
覆盖集群默认组件配置。 若指定了不支持的组件或组件不支持的参数,该配置项将被忽略。 当前支持的可配置组件及其参数详见配置管理。 |
参数 |
参数类型 |
描述 |
---|---|---|
vpc |
String |
用于创建控制节点的VPC的ID。 获取方法如下:
|
subnet |
String |
用于创建控制节点的subnet的网络ID。获取方法如下:
|
SecurityGroup |
String |
集群默认的Node节点安全组ID,不指定该字段系统将自动为用户创建默认Node节点安全组,指定该字段时集群将绑定指定的安全组。Node节点安全组需要放通部分端口来保证正常通信。详细设置请参考集群安全组规则配置。 |
参数 |
参数类型 |
描述 |
---|---|---|
mode |
String |
容器网络类型(只可选择其一)
|
cidr |
String |
容器网络网段,建议使用网段10.0.0.0/12~19,172.16.0.0/16~19,192.168.0.0/16~19,如存在网段冲突,将会报错。 此参数在集群创建后不可更改,请谨慎选择。(已废弃,如填写cidrs将忽略该cidr) vpc网络模式和云原生网络模式的集群在创建后可以新增网段参数,不可修改已有网段参数,需要重新创建集群才能调整。 不填此参数时,将从172.(16 ~ 31).0.0/16、10.(0 | 16 | 32 | 48 | 64 | 80 | 96 | 112).0.0/12中随机分配一个不冲突的网段供用户使用。 |
cidrs |
Array of ContainerCIDR objects |
容器网络网段列表。1.21及新版本集群使用cidrs字段,当集群网络类型为vpc-router类型时,支持多个容器网段,最多配置20个;1.21之前版本若使用cidrs字段,则取值cidrs数组中的第一个cidr元素作为容器网络网段地址。 容器隧道网络模式的集群在创建之后,无法修改网段参数; vpc网络模式和云原生网络模式的集群在创建后可以新增网段参数,不可修改已有网段参数,需要重新创建集群才能调整。 不填此参数时,将从172.(16 ~ 31).0.0/16、10.(0 | 16 | 32 | 48 | 64 | 80 | 96 | 112).0.0/12中随机分配一个不冲突的网段供用户使用。 |
参数 |
参数类型 |
描述 |
---|---|---|
cidr |
String |
容器网络网段,建议使用网段10.0.0.0/12~19,172.16.0.0/16~19,192.168.0.0/16~19,如存在网段冲突,将会报错。 |
参数 |
参数类型 |
描述 |
---|---|---|
eniSubnetId |
String |
ENI所在子网的IPv4子网ID(暂不支持IPv6,废弃中)。获取方法如下:
|
eniSubnetCIDR |
String |
ENI子网CIDR(废弃中) |
subnets |
Array of NetworkSubnet objects |
IPv4子网ID列表 |
参数 |
参数类型 |
描述 |
---|---|---|
subnetID |
String |
用于创建控制节点的subnet的IPv4子网ID(暂不支持IPv6)。获取方法如下:
|
参数 |
参数类型 |
描述 |
---|---|---|
IPv4CIDR |
String |
kubernetes clusterIP IPv4 CIDR取值范围。创建集群时若未传参,默认为"10.247.0.0/16"。 |
参数 |
参数类型 |
描述 |
---|---|---|
mode |
String |
集群认证模式。
|
authenticatingProxy |
AuthenticatingProxy object |
authenticatingProxy模式相关配置。认证模式为authenticating_proxy时必选。 |
参数 |
参数类型 |
描述 |
---|---|---|
ca |
String |
authenticating_proxy模式配置的x509格式CA证书(base64编码)。当集群认证模式为authenticating_proxy时,此项必须填写。 最大长度:1M |
cert |
String |
authenticating_proxy模式配置的x509格式CA证书签发的客户端证书,用于kube-apiserver到扩展apiserver的认证。(base64编码)。当集群认证模式为authenticating_proxy时,此项必须填写。 |
privateKey |
String |
authenticating_proxy模式配置的x509格式CA证书签发的客户端证书时对应的私钥,用于kube-apiserver到扩展apiserver的认证。Kubernetes集群使用的私钥尚不支持密码加密,请使用未加密的私钥。(base64编码)。当集群认证模式为authenticating_proxy时,此项必须填写。 |
参数 |
参数类型 |
描述 |
---|---|---|
key |
String |
Key值。
|
value |
String |
Value值。
|
参数 |
参数类型 |
描述 |
---|---|---|
clusterAZ |
String |
集群控制节点可用区配置。 CCE支持的可用区请参考地区和终端节点。
|
dssMasterVolumes |
String |
用于指定控制节点的系统盘和数据盘使用专属分布式存储,未指定或者值为空时,默认使用EVS云硬盘。 如果配置专属CCE集群,该字段为必选,请按照如下格式设置: <rootVol.dssPoolID>.<rootVol.volType>;<dataVol.dssPoolID>.<dataVol.volType> 字段说明:
样例:c950ee97-587c-4f24-8a74-3367e3da570f.sas;6edbc2f4-1507-44f8-ac0d-eed1d2608d38.ssd
说明:
非专属CCE集群不支持配置该字段。 |
enterpriseProjectId |
String |
集群所属的企业项目ID。
说明:
|
kubeProxyMode |
String |
服务转发模式,支持以下两种实现:
说明:
此参数已废弃,若同时指定此参数和ClusterSpec下的kubeProxyMode,以ClusterSpec下的为准。 |
clusterExternalIP |
String |
master 弹性公网IP |
alpha.cce/fixPoolMask |
String |
容器网络固定IP池掩码位数,仅vpc-router网络支持。 该参数决定节点可分配容器IP数量,与创建节点时设置的maxPods参数共同决定节点最多可以创建多少个Pod, 具体请参见节点可创建的最大Pod数量说明。 整数字符传取值范围: 24 ~ 28 |
decMasterFlavor |
String |
专属CCE集群指定可控制节点的规格。 |
dockerUmaskMode |
String |
集群默认Docker的UmaskMode配置,可取值为secure或normal,不指定时默认为normal。 |
kubernetes.io/cpuManagerPolicy |
String |
集群CPU管理策略。取值为none(或空值)或static,默认为none(或空值)。
|
orderID |
String |
订单ID,集群付费类型为自动付费包周期类型时,响应中会返回此字段(仅创建场景涉及)。 |
periodType |
String |
说明:
作为请求参数,billingMode为1(包周期)时生效,且为必选。 作为响应参数,仅在创建包周期集群时返回。 |
periodNum |
Integer |
订购周期数,取值范围:
说明:
作为请求参数,billingMode为1时生效,且为必选。 作为响应参数,仅在创建包周期集群时返回。 |
isAutoRenew |
String |
是否自动续订
说明:
billingMode为1时生效,不填写此参数时默认不会自动续费。 |
isAutoPay |
String |
是否自动扣款
说明:
billingMode为1时生效,不填写此参数时默认不会自动扣款。 |
upgradefrom |
String |
记录集群通过何种升级方式升级到当前版本。 |
参数 |
参数类型 |
描述 |
---|---|---|
name |
String |
组件名称 |
configurations |
Array of ConfigurationItem objects |
组件配置项 |
参数 |
参数类型 |
描述 |
---|---|---|
phase |
String |
集群状态,取值如下
|
jobID |
String |
任务ID,集群当前状态关联的任务ID。当前支持:
说明:
任务信息具有一定时效性,仅用于短期跟踪任务进度,请勿用于集群状态判断等额外场景。 |
reason |
String |
集群变为当前状态的原因,在集群在非“Available”状态下时,会返回此参数。 |
message |
String |
集群变为当前状态的原因的详细信息,在集群在非“Available”状态下时,会返回此参数。 |
endpoints |
Array of ClusterEndpoints objects |
集群中 kube-apiserver 的访问地址。 |
isLocked |
Boolean |
CBC资源锁定 |
lockScene |
String |
CBC资源锁定场景 |
lockSource |
String |
锁定资源 |
lockSourceId |
String |
锁定的资源ID |
deleteOption |
Object |
删除配置状态(仅删除请求响应包含) |
deleteStatus |
Object |
删除状态信息(仅删除请求响应包含) |
请求示例
-
创建一个v1.19版本的CCE集群,计费模式为按需计费,集群规模为50节点,且为三控制节点高可用集群。
/api/v3/projects/{project_id}/clusters { "kind" : "Cluster", "apiVersion" : "v3", "metadata" : { "name" : "cluster" }, "spec" : { "category" : "CCE", "flavor" : "cce.s2.small", "version" : "v1.19", "hostNetwork" : { "vpc" : "030bfb19-5fa7-42ad-8a0d-c0721d268867", "subnet" : "ca964acf-8468-4735-8229-97940ef6c881" }, "containerNetwork" : { "mode" : "vpc-router", "cidr" : "10.0.0.0/16" }, "kubernetesSvcIpRange" : "10.247.0.0/16", "description" : "", "billingMode" : 0, "extendParam" : { "kubeProxyMode" : "iptables", "alpha.cce/fixPoolMask" : "25", "enterpriseProjectId" : "0" }, "authentication" : { "mode" : "rbac" }, "ipv6enable" : false } }
-
创建一个v1.19版本的CCE集群,计费模式为按需计费,集群规模为50节点,且为三控制节点高可用集群,并在集群中安装ICAgent。
/api/v3/projects/{project_id}/clusters { "kind" : "Cluster", "apiVersion" : "v3", "metadata" : { "name" : "cluster", "annotations" : { "cluster.install.addons.external/install" : "[{\"addonTemplateName\":\"icagent\"}]" } }, "spec" : { "category" : "CCE", "flavor" : "cce.s2.small", "version" : "v1.19", "hostNetwork" : { "vpc" : "030bfb19-5fa7-42ad-8a0d-c0721d268867", "subnet" : "ca964acf-8468-4735-8229-97940ef6c881" }, "containerNetwork" : { "mode" : "vpc-router", "cidr" : "10.0.0.0/16" }, "kubernetesSvcIpRange" : "10.247.0.0/16", "description" : "", "billingMode" : 0, "extendParam" : { "kubeProxyMode" : "iptables", "alpha.cce/fixPoolMask" : "25", "enterpriseProjectId" : "0" }, "authentication" : { "mode" : "rbac" }, "ipv6enable" : false } }
-
创建一个v1.19版本的CCE集群,计费模式为按需计费,集群规模为50节点,且为三控制节点高可用集群,并指定自定义的节点默认安全组。
/api/v3/projects/{project_id}/clusters { "kind" : "Cluster", "apiVersion" : "v3", "metadata" : { "name" : "cluster" }, "spec" : { "category" : "CCE", "flavor" : "cce.s2.small", "version" : "v1.19", "hostNetwork" : { "vpc" : "030bfb19-5fa7-42ad-8a0d-c0721d268867", "subnet" : "ca964acf-8468-4735-8229-97940ef6c881", "SecurityGroup" : "a4ef108c-2ec6-492f-a6c4-7b64e25ae490" }, "containerNetwork" : { "mode" : "vpc-router", "cidr" : "10.0.0.0/16" }, "kubernetesSvcIpRange" : "10.247.0.0/16", "description" : "", "billingMode" : 0, "extendParam" : { "kubeProxyMode" : "iptables", "alpha.cce/fixPoolMask" : "25", "enterpriseProjectId" : "0" }, "authentication" : { "mode" : "rbac" }, "ipv6enable" : false } }
-
创建一个v1.25版本的CCE Turbo集群,计费模式为按需计费,集群规模为50节点,且为三控制节点高可用集群。
/api/v3/projects/{project_id}/clusters { "kind" : "Cluster", "apiVersion" : "v3", "metadata" : { "name" : "cluster" }, "spec" : { "category" : "Turbo", "flavor" : "cce.s2.small", "version" : "v1.25", "type" : "VirtualMachine", "hostNetwork" : { "vpc" : "030bfb19-5fa7-42ad-8a0d-c0721d268867", "subnet" : "ca964acf-8468-4735-8229-97940ef6c881" }, "containerNetwork" : { "mode" : "eni" }, "eniNetwork" : { "eniSubnetId" : "861fb11d-2f0e-4c10-a98a-166dc26e4ff7", "eniSubnetCIDR" : "192.168.0.0/24", "subnets" : [ { "subnetID" : "861fb11d-2f0e-4c10-a98a-166dc26e4ff7" } ] }, "serviceNetwork" : { "IPv4CIDR" : "10.247.0.0/16" }, "description" : "", "billingMode" : 0, "extendParam" : { "kubeProxyMode" : "iptables", "enterpriseProjectId" : "0" }, "authentication" : { "mode" : "rbac" }, "ipv6enable" : false } }
响应示例
状态码: 201
表示创建集群作业下发成功。
{ "kind" : "Cluster", "apiVersion" : "v3", "metadata" : { "alias" : "cluster", "name" : "cluster", "uid" : "bce956e1-87f3-11ec-b5e5-0255ac101514", "creationTimestamp" : "2022-02-07 08:55:45.785425492 +0000 UTC", "updateTimestamp" : "2022-02-07 08:55:45.78542824 +0000 UTC", "annotations" : { "jobid" : "bd42f724-87f3-11ec-b5e5-0255ac101514", "resourceJobId" : "bce99f78-87f3-11ec-b5e5-0255ac101514" } }, "spec" : { "category" : "CCE", "type" : "VirtualMachine", "flavor" : "cce.s2.small", "version" : "v1.19.10-r0", "platformVersion" : "cce.5.0", "hostNetwork" : { "vpc" : "030bfb19-5fa7-42ad-8a0d-c0721d268867", "subnet" : "ca964acf-8468-4735-8229-97940ef6c881" }, "containerNetwork" : { "mode" : "vpc-router", "cidr" : "10.0.0.0/16", "cidrs" : [ { "cidr" : "10.0.0.0/16" } ] }, "eniNetwork" : { }, "authentication" : { "mode" : "rbac", "authenticatingProxy" : { } }, "billingMode" : 0, "kubernetesSvcIpRange" : "10.247.0.0/16", "kubeProxyMode" : "iptables", "extendParam" : { "alpha.cce/fixPoolMask" : "25", "enterpriseProjectId" : "0", "kubeProxyMode" : "iptables", "orderID" : "" } }, "status" : { "phase" : "Creating", "jobID" : "bd42f724-87f3-11ec-b5e5-0255ac101514" } }
SDK代码示例
SDK代码示例如下。
-
创建一个v1.19版本的CCE集群,计费模式为按需计费,集群规模为50节点,且为三控制节点高可用集群。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
package com.huaweicloud.sdk.test; import com.huaweicloud.sdk.core.auth.ICredential; import com.huaweicloud.sdk.core.auth.BasicCredentials; import com.huaweicloud.sdk.core.exception.ConnectionException; import com.huaweicloud.sdk.core.exception.RequestTimeoutException; import com.huaweicloud.sdk.core.exception.ServiceResponseException; import com.huaweicloud.sdk.cce.v3.region.CceRegion; import com.huaweicloud.sdk.cce.v3.*; import com.huaweicloud.sdk.cce.v3.model.*; public class CreateClusterSolution { public static void main(String[] args) { // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security. // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment String ak = System.getenv("CLOUD_SDK_AK"); String sk = System.getenv("CLOUD_SDK_SK"); String projectId = "{project_id}"; ICredential auth = new BasicCredentials() .withProjectId(projectId) .withAk(ak) .withSk(sk); CceClient client = CceClient.newBuilder() .withCredential(auth) .withRegion(CceRegion.valueOf("<YOUR REGION>")) .build(); CreateClusterRequest request = new CreateClusterRequest(); Cluster body = new Cluster(); ClusterExtendParam extendParamSpec = new ClusterExtendParam(); extendParamSpec.withEnterpriseProjectId("0") .withKubeProxyMode("iptables") .withAlphaCceFixPoolMask("25"); Authentication authenticationSpec = new Authentication(); authenticationSpec.withMode("rbac"); ContainerNetwork containerNetworkSpec = new ContainerNetwork(); containerNetworkSpec.withMode(ContainerNetwork.ModeEnum.fromValue("vpc-router")) .withCidr("10.0.0.0/16"); HostNetwork hostNetworkSpec = new HostNetwork(); hostNetworkSpec.withVpc("030bfb19-5fa7-42ad-8a0d-c0721d268867") .withSubnet("ca964acf-8468-4735-8229-97940ef6c881"); ClusterSpec specbody = new ClusterSpec(); specbody.withCategory(ClusterSpec.CategoryEnum.fromValue("CCE")) .withFlavor("cce.s2.small") .withVersion("v1.19") .withDescription("") .withIpv6enable(false) .withHostNetwork(hostNetworkSpec) .withContainerNetwork(containerNetworkSpec) .withAuthentication(authenticationSpec) .withBillingMode(0) .withKubernetesSvcIpRange("10.247.0.0/16") .withExtendParam(extendParamSpec); ClusterMetadata metadatabody = new ClusterMetadata(); metadatabody.withName("cluster"); body.withSpec(specbody); body.withMetadata(metadatabody); body.withApiVersion("v3"); body.withKind("Cluster"); request.withBody(body); try { CreateClusterResponse response = client.createCluster(request); System.out.println(response.toString()); } catch (ConnectionException e) { e.printStackTrace(); } catch (RequestTimeoutException e) { e.printStackTrace(); } catch (ServiceResponseException e) { e.printStackTrace(); System.out.println(e.getHttpStatusCode()); System.out.println(e.getRequestId()); System.out.println(e.getErrorCode()); System.out.println(e.getErrorMsg()); } } }
-
创建一个v1.19版本的CCE集群,计费模式为按需计费,集群规模为50节点,且为三控制节点高可用集群,并在集群中安装ICAgent。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84
package com.huaweicloud.sdk.test; import com.huaweicloud.sdk.core.auth.ICredential; import com.huaweicloud.sdk.core.auth.BasicCredentials; import com.huaweicloud.sdk.core.exception.ConnectionException; import com.huaweicloud.sdk.core.exception.RequestTimeoutException; import com.huaweicloud.sdk.core.exception.ServiceResponseException; import com.huaweicloud.sdk.cce.v3.region.CceRegion; import com.huaweicloud.sdk.cce.v3.*; import com.huaweicloud.sdk.cce.v3.model.*; import java.util.Map; import java.util.HashMap; public class CreateClusterSolution { public static void main(String[] args) { // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security. // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment String ak = System.getenv("CLOUD_SDK_AK"); String sk = System.getenv("CLOUD_SDK_SK"); String projectId = "{project_id}"; ICredential auth = new BasicCredentials() .withProjectId(projectId) .withAk(ak) .withSk(sk); CceClient client = CceClient.newBuilder() .withCredential(auth) .withRegion(CceRegion.valueOf("<YOUR REGION>")) .build(); CreateClusterRequest request = new CreateClusterRequest(); Cluster body = new Cluster(); ClusterExtendParam extendParamSpec = new ClusterExtendParam(); extendParamSpec.withEnterpriseProjectId("0") .withKubeProxyMode("iptables") .withAlphaCceFixPoolMask("25"); Authentication authenticationSpec = new Authentication(); authenticationSpec.withMode("rbac"); ContainerNetwork containerNetworkSpec = new ContainerNetwork(); containerNetworkSpec.withMode(ContainerNetwork.ModeEnum.fromValue("vpc-router")) .withCidr("10.0.0.0/16"); HostNetwork hostNetworkSpec = new HostNetwork(); hostNetworkSpec.withVpc("030bfb19-5fa7-42ad-8a0d-c0721d268867") .withSubnet("ca964acf-8468-4735-8229-97940ef6c881"); ClusterSpec specbody = new ClusterSpec(); specbody.withCategory(ClusterSpec.CategoryEnum.fromValue("CCE")) .withFlavor("cce.s2.small") .withVersion("v1.19") .withDescription("") .withIpv6enable(false) .withHostNetwork(hostNetworkSpec) .withContainerNetwork(containerNetworkSpec) .withAuthentication(authenticationSpec) .withBillingMode(0) .withKubernetesSvcIpRange("10.247.0.0/16") .withExtendParam(extendParamSpec); Map<String, String> listMetadataAnnotations = new HashMap<>(); listMetadataAnnotations.put("cluster.install.addons.external/install", "[{"addonTemplateName":"icagent"}]"); ClusterMetadata metadatabody = new ClusterMetadata(); metadatabody.withName("cluster") .withAnnotations(listMetadataAnnotations); body.withSpec(specbody); body.withMetadata(metadatabody); body.withApiVersion("v3"); body.withKind("Cluster"); request.withBody(body); try { CreateClusterResponse response = client.createCluster(request); System.out.println(response.toString()); } catch (ConnectionException e) { e.printStackTrace(); } catch (RequestTimeoutException e) { e.printStackTrace(); } catch (ServiceResponseException e) { e.printStackTrace(); System.out.println(e.getHttpStatusCode()); System.out.println(e.getRequestId()); System.out.println(e.getErrorCode()); System.out.println(e.getErrorMsg()); } } }
-
创建一个v1.19版本的CCE集群,计费模式为按需计费,集群规模为50节点,且为三控制节点高可用集群,并指定自定义的节点默认安全组。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
package com.huaweicloud.sdk.test; import com.huaweicloud.sdk.core.auth.ICredential; import com.huaweicloud.sdk.core.auth.BasicCredentials; import com.huaweicloud.sdk.core.exception.ConnectionException; import com.huaweicloud.sdk.core.exception.RequestTimeoutException; import com.huaweicloud.sdk.core.exception.ServiceResponseException; import com.huaweicloud.sdk.cce.v3.region.CceRegion; import com.huaweicloud.sdk.cce.v3.*; import com.huaweicloud.sdk.cce.v3.model.*; public class CreateClusterSolution { public static void main(String[] args) { // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security. // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment String ak = System.getenv("CLOUD_SDK_AK"); String sk = System.getenv("CLOUD_SDK_SK"); String projectId = "{project_id}"; ICredential auth = new BasicCredentials() .withProjectId(projectId) .withAk(ak) .withSk(sk); CceClient client = CceClient.newBuilder() .withCredential(auth) .withRegion(CceRegion.valueOf("<YOUR REGION>")) .build(); CreateClusterRequest request = new CreateClusterRequest(); Cluster body = new Cluster(); ClusterExtendParam extendParamSpec = new ClusterExtendParam(); extendParamSpec.withEnterpriseProjectId("0") .withKubeProxyMode("iptables") .withAlphaCceFixPoolMask("25"); Authentication authenticationSpec = new Authentication(); authenticationSpec.withMode("rbac"); ContainerNetwork containerNetworkSpec = new ContainerNetwork(); containerNetworkSpec.withMode(ContainerNetwork.ModeEnum.fromValue("vpc-router")) .withCidr("10.0.0.0/16"); HostNetwork hostNetworkSpec = new HostNetwork(); hostNetworkSpec.withVpc("030bfb19-5fa7-42ad-8a0d-c0721d268867") .withSubnet("ca964acf-8468-4735-8229-97940ef6c881") .withSecurityGroup("a4ef108c-2ec6-492f-a6c4-7b64e25ae490"); ClusterSpec specbody = new ClusterSpec(); specbody.withCategory(ClusterSpec.CategoryEnum.fromValue("CCE")) .withFlavor("cce.s2.small") .withVersion("v1.19") .withDescription("") .withIpv6enable(false) .withHostNetwork(hostNetworkSpec) .withContainerNetwork(containerNetworkSpec) .withAuthentication(authenticationSpec) .withBillingMode(0) .withKubernetesSvcIpRange("10.247.0.0/16") .withExtendParam(extendParamSpec); ClusterMetadata metadatabody = new ClusterMetadata(); metadatabody.withName("cluster"); body.withSpec(specbody); body.withMetadata(metadatabody); body.withApiVersion("v3"); body.withKind("Cluster"); request.withBody(body); try { CreateClusterResponse response = client.createCluster(request); System.out.println(response.toString()); } catch (ConnectionException e) { e.printStackTrace(); } catch (RequestTimeoutException e) { e.printStackTrace(); } catch (ServiceResponseException e) { e.printStackTrace(); System.out.println(e.getHttpStatusCode()); System.out.println(e.getRequestId()); System.out.println(e.getErrorCode()); System.out.println(e.getErrorMsg()); } } }
-
创建一个v1.25版本的CCE Turbo集群,计费模式为按需计费,集群规模为50节点,且为三控制节点高可用集群。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92
package com.huaweicloud.sdk.test; import com.huaweicloud.sdk.core.auth.ICredential; import com.huaweicloud.sdk.core.auth.BasicCredentials; import com.huaweicloud.sdk.core.exception.ConnectionException; import com.huaweicloud.sdk.core.exception.RequestTimeoutException; import com.huaweicloud.sdk.core.exception.ServiceResponseException; import com.huaweicloud.sdk.cce.v3.region.CceRegion; import com.huaweicloud.sdk.cce.v3.*; import com.huaweicloud.sdk.cce.v3.model.*; import java.util.List; import java.util.ArrayList; public class CreateClusterSolution { public static void main(String[] args) { // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security. // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment String ak = System.getenv("CLOUD_SDK_AK"); String sk = System.getenv("CLOUD_SDK_SK"); String projectId = "{project_id}"; ICredential auth = new BasicCredentials() .withProjectId(projectId) .withAk(ak) .withSk(sk); CceClient client = CceClient.newBuilder() .withCredential(auth) .withRegion(CceRegion.valueOf("<YOUR REGION>")) .build(); CreateClusterRequest request = new CreateClusterRequest(); Cluster body = new Cluster(); ClusterExtendParam extendParamSpec = new ClusterExtendParam(); extendParamSpec.withEnterpriseProjectId("0") .withKubeProxyMode("iptables"); Authentication authenticationSpec = new Authentication(); authenticationSpec.withMode("rbac"); ServiceNetwork serviceNetworkSpec = new ServiceNetwork(); serviceNetworkSpec.withIpv4CIDR("10.247.0.0/16"); List<NetworkSubnet> listEniNetworkSubnets = new ArrayList<>(); listEniNetworkSubnets.add( new NetworkSubnet() .withSubnetID("861fb11d-2f0e-4c10-a98a-166dc26e4ff7") ); EniNetwork eniNetworkSpec = new EniNetwork(); eniNetworkSpec.withEniSubnetId("861fb11d-2f0e-4c10-a98a-166dc26e4ff7") .withEniSubnetCIDR("192.168.0.0/24") .withSubnets(listEniNetworkSubnets); ContainerNetwork containerNetworkSpec = new ContainerNetwork(); containerNetworkSpec.withMode(ContainerNetwork.ModeEnum.fromValue("eni")); HostNetwork hostNetworkSpec = new HostNetwork(); hostNetworkSpec.withVpc("030bfb19-5fa7-42ad-8a0d-c0721d268867") .withSubnet("ca964acf-8468-4735-8229-97940ef6c881"); ClusterSpec specbody = new ClusterSpec(); specbody.withCategory(ClusterSpec.CategoryEnum.fromValue("Turbo")) .withType(ClusterSpec.TypeEnum.fromValue("VirtualMachine")) .withFlavor("cce.s2.small") .withVersion("v1.25") .withDescription("") .withIpv6enable(false) .withHostNetwork(hostNetworkSpec) .withContainerNetwork(containerNetworkSpec) .withEniNetwork(eniNetworkSpec) .withServiceNetwork(serviceNetworkSpec) .withAuthentication(authenticationSpec) .withBillingMode(0) .withExtendParam(extendParamSpec); ClusterMetadata metadatabody = new ClusterMetadata(); metadatabody.withName("cluster"); body.withSpec(specbody); body.withMetadata(metadatabody); body.withApiVersion("v3"); body.withKind("Cluster"); request.withBody(body); try { CreateClusterResponse response = client.createCluster(request); System.out.println(response.toString()); } catch (ConnectionException e) { e.printStackTrace(); } catch (RequestTimeoutException e) { e.printStackTrace(); } catch (ServiceResponseException e) { e.printStackTrace(); System.out.println(e.getHttpStatusCode()); System.out.println(e.getRequestId()); System.out.println(e.getErrorCode()); System.out.println(e.getErrorMsg()); } } }
-
创建一个v1.19版本的CCE集群,计费模式为按需计费,集群规模为50节点,且为三控制节点高可用集群。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
# coding: utf-8 import os from huaweicloudsdkcore.auth.credentials import BasicCredentials from huaweicloudsdkcce.v3.region.cce_region import CceRegion from huaweicloudsdkcore.exceptions import exceptions from huaweicloudsdkcce.v3 import * if __name__ == "__main__": # The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security. # In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment ak = os.environ["CLOUD_SDK_AK"] sk = os.environ["CLOUD_SDK_SK"] projectId = "{project_id}" credentials = BasicCredentials(ak, sk, projectId) client = CceClient.new_builder() \ .with_credentials(credentials) \ .with_region(CceRegion.value_of("<YOUR REGION>")) \ .build() try: request = CreateClusterRequest() extendParamSpec = ClusterExtendParam( enterprise_project_id="0", kube_proxy_mode="iptables", alpha_cce_fix_pool_mask="25" ) authenticationSpec = Authentication( mode="rbac" ) containerNetworkSpec = ContainerNetwork( mode="vpc-router", cidr="10.0.0.0/16" ) hostNetworkSpec = HostNetwork( vpc="030bfb19-5fa7-42ad-8a0d-c0721d268867", subnet="ca964acf-8468-4735-8229-97940ef6c881" ) specbody = ClusterSpec( category="CCE", flavor="cce.s2.small", version="v1.19", description="", ipv6enable=False, host_network=hostNetworkSpec, container_network=containerNetworkSpec, authentication=authenticationSpec, billing_mode=0, kubernetes_svc_ip_range="10.247.0.0/16", extend_param=extendParamSpec ) metadatabody = ClusterMetadata( name="cluster" ) request.body = Cluster( spec=specbody, metadata=metadatabody, api_version="v3", kind="Cluster" ) response = client.create_cluster(request) print(response) except exceptions.ClientRequestException as e: print(e.status_code) print(e.request_id) print(e.error_code) print(e.error_msg)
-
创建一个v1.19版本的CCE集群,计费模式为按需计费,集群规模为50节点,且为三控制节点高可用集群,并在集群中安装ICAgent。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
# coding: utf-8 import os from huaweicloudsdkcore.auth.credentials import BasicCredentials from huaweicloudsdkcce.v3.region.cce_region import CceRegion from huaweicloudsdkcore.exceptions import exceptions from huaweicloudsdkcce.v3 import * if __name__ == "__main__": # The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security. # In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment ak = os.environ["CLOUD_SDK_AK"] sk = os.environ["CLOUD_SDK_SK"] projectId = "{project_id}" credentials = BasicCredentials(ak, sk, projectId) client = CceClient.new_builder() \ .with_credentials(credentials) \ .with_region(CceRegion.value_of("<YOUR REGION>")) \ .build() try: request = CreateClusterRequest() extendParamSpec = ClusterExtendParam( enterprise_project_id="0", kube_proxy_mode="iptables", alpha_cce_fix_pool_mask="25" ) authenticationSpec = Authentication( mode="rbac" ) containerNetworkSpec = ContainerNetwork( mode="vpc-router", cidr="10.0.0.0/16" ) hostNetworkSpec = HostNetwork( vpc="030bfb19-5fa7-42ad-8a0d-c0721d268867", subnet="ca964acf-8468-4735-8229-97940ef6c881" ) specbody = ClusterSpec( category="CCE", flavor="cce.s2.small", version="v1.19", description="", ipv6enable=False, host_network=hostNetworkSpec, container_network=containerNetworkSpec, authentication=authenticationSpec, billing_mode=0, kubernetes_svc_ip_range="10.247.0.0/16", extend_param=extendParamSpec ) listAnnotationsMetadata = { "cluster.install.addons.external/install": "[{"addonTemplateName":"icagent"}]" } metadatabody = ClusterMetadata( name="cluster", annotations=listAnnotationsMetadata ) request.body = Cluster( spec=specbody, metadata=metadatabody, api_version="v3", kind="Cluster" ) response = client.create_cluster(request) print(response) except exceptions.ClientRequestException as e: print(e.status_code) print(e.request_id) print(e.error_code) print(e.error_msg)
-
创建一个v1.19版本的CCE集群,计费模式为按需计费,集群规模为50节点,且为三控制节点高可用集群,并指定自定义的节点默认安全组。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
# coding: utf-8 import os from huaweicloudsdkcore.auth.credentials import BasicCredentials from huaweicloudsdkcce.v3.region.cce_region import CceRegion from huaweicloudsdkcore.exceptions import exceptions from huaweicloudsdkcce.v3 import * if __name__ == "__main__": # The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security. # In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment ak = os.environ["CLOUD_SDK_AK"] sk = os.environ["CLOUD_SDK_SK"] projectId = "{project_id}" credentials = BasicCredentials(ak, sk, projectId) client = CceClient.new_builder() \ .with_credentials(credentials) \ .with_region(CceRegion.value_of("<YOUR REGION>")) \ .build() try: request = CreateClusterRequest() extendParamSpec = ClusterExtendParam( enterprise_project_id="0", kube_proxy_mode="iptables", alpha_cce_fix_pool_mask="25" ) authenticationSpec = Authentication( mode="rbac" ) containerNetworkSpec = ContainerNetwork( mode="vpc-router", cidr="10.0.0.0/16" ) hostNetworkSpec = HostNetwork( vpc="030bfb19-5fa7-42ad-8a0d-c0721d268867", subnet="ca964acf-8468-4735-8229-97940ef6c881", security_group="a4ef108c-2ec6-492f-a6c4-7b64e25ae490" ) specbody = ClusterSpec( category="CCE", flavor="cce.s2.small", version="v1.19", description="", ipv6enable=False, host_network=hostNetworkSpec, container_network=containerNetworkSpec, authentication=authenticationSpec, billing_mode=0, kubernetes_svc_ip_range="10.247.0.0/16", extend_param=extendParamSpec ) metadatabody = ClusterMetadata( name="cluster" ) request.body = Cluster( spec=specbody, metadata=metadatabody, api_version="v3", kind="Cluster" ) response = client.create_cluster(request) print(response) except exceptions.ClientRequestException as e: print(e.status_code) print(e.request_id) print(e.error_code) print(e.error_msg)
-
创建一个v1.25版本的CCE Turbo集群,计费模式为按需计费,集群规模为50节点,且为三控制节点高可用集群。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
# coding: utf-8 import os from huaweicloudsdkcore.auth.credentials import BasicCredentials from huaweicloudsdkcce.v3.region.cce_region import CceRegion from huaweicloudsdkcore.exceptions import exceptions from huaweicloudsdkcce.v3 import * if __name__ == "__main__": # The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security. # In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment ak = os.environ["CLOUD_SDK_AK"] sk = os.environ["CLOUD_SDK_SK"] projectId = "{project_id}" credentials = BasicCredentials(ak, sk, projectId) client = CceClient.new_builder() \ .with_credentials(credentials) \ .with_region(CceRegion.value_of("<YOUR REGION>")) \ .build() try: request = CreateClusterRequest() extendParamSpec = ClusterExtendParam( enterprise_project_id="0", kube_proxy_mode="iptables" ) authenticationSpec = Authentication( mode="rbac" ) serviceNetworkSpec = ServiceNetwork( i_pv4_cidr="10.247.0.0/16" ) listSubnetsEniNetwork = [ NetworkSubnet( subnet_id="861fb11d-2f0e-4c10-a98a-166dc26e4ff7" ) ] eniNetworkSpec = EniNetwork( eni_subnet_id="861fb11d-2f0e-4c10-a98a-166dc26e4ff7", eni_subnet_cidr="192.168.0.0/24", subnets=listSubnetsEniNetwork ) containerNetworkSpec = ContainerNetwork( mode="eni" ) hostNetworkSpec = HostNetwork( vpc="030bfb19-5fa7-42ad-8a0d-c0721d268867", subnet="ca964acf-8468-4735-8229-97940ef6c881" ) specbody = ClusterSpec( category="Turbo", type="VirtualMachine", flavor="cce.s2.small", version="v1.25", description="", ipv6enable=False, host_network=hostNetworkSpec, container_network=containerNetworkSpec, eni_network=eniNetworkSpec, service_network=serviceNetworkSpec, authentication=authenticationSpec, billing_mode=0, extend_param=extendParamSpec ) metadatabody = ClusterMetadata( name="cluster" ) request.body = Cluster( spec=specbody, metadata=metadatabody, api_version="v3", kind="Cluster" ) response = client.create_cluster(request) print(response) except exceptions.ClientRequestException as e: print(e.status_code) print(e.request_id) print(e.error_code) print(e.error_msg)
-
创建一个v1.19版本的CCE集群,计费模式为按需计费,集群规模为50节点,且为三控制节点高可用集群。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
package main import ( "fmt" "github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/basic" cce "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/cce/v3" "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/cce/v3/model" region "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/cce/v3/region" ) func main() { // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security. // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment ak := os.Getenv("CLOUD_SDK_AK") sk := os.Getenv("CLOUD_SDK_SK") projectId := "{project_id}" auth := basic.NewCredentialsBuilder(). WithAk(ak). WithSk(sk). WithProjectId(projectId). Build() client := cce.NewCceClient( cce.CceClientBuilder(). WithRegion(region.ValueOf("<YOUR REGION>")). WithCredential(auth). Build()) request := &model.CreateClusterRequest{} enterpriseProjectIdExtendParam:= "0" kubeProxyModeExtendParam:= "iptables" alphaCceFixPoolMaskExtendParam:= "25" extendParamSpec := &model.ClusterExtendParam{ EnterpriseProjectId: &enterpriseProjectIdExtendParam, KubeProxyMode: &kubeProxyModeExtendParam, AlphaCceFixPoolMask: &alphaCceFixPoolMaskExtendParam, } modeAuthentication:= "rbac" authenticationSpec := &model.Authentication{ Mode: &modeAuthentication, } cidrContainerNetwork:= "10.0.0.0/16" containerNetworkSpec := &model.ContainerNetwork{ Mode: model.GetContainerNetworkModeEnum().VPC_ROUTER, Cidr: &cidrContainerNetwork, } hostNetworkSpec := &model.HostNetwork{ Vpc: "030bfb19-5fa7-42ad-8a0d-c0721d268867", Subnet: "ca964acf-8468-4735-8229-97940ef6c881", } categorySpec:= model.GetClusterSpecCategoryEnum().CCE versionSpec:= "v1.19" descriptionSpec:= "" ipv6enableSpec:= false billingModeSpec:= int32(0) kubernetesSvcIpRangeSpec:= "10.247.0.0/16" specbody := &model.ClusterSpec{ Category: &categorySpec, Flavor: "cce.s2.small", Version: &versionSpec, Description: &descriptionSpec, Ipv6enable: &ipv6enableSpec, HostNetwork: hostNetworkSpec, ContainerNetwork: containerNetworkSpec, Authentication: authenticationSpec, BillingMode: &billingModeSpec, KubernetesSvcIpRange: &kubernetesSvcIpRangeSpec, ExtendParam: extendParamSpec, } metadatabody := &model.ClusterMetadata{ Name: "cluster", } request.Body = &model.Cluster{ Spec: specbody, Metadata: metadatabody, ApiVersion: "v3", Kind: "Cluster", } response, err := client.CreateCluster(request) if err == nil { fmt.Printf("%+v\n", response) } else { fmt.Println(err) } }
-
创建一个v1.19版本的CCE集群,计费模式为按需计费,集群规模为50节点,且为三控制节点高可用集群,并在集群中安装ICAgent。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90
package main import ( "fmt" "github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/basic" cce "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/cce/v3" "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/cce/v3/model" region "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/cce/v3/region" ) func main() { // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security. // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment ak := os.Getenv("CLOUD_SDK_AK") sk := os.Getenv("CLOUD_SDK_SK") projectId := "{project_id}" auth := basic.NewCredentialsBuilder(). WithAk(ak). WithSk(sk). WithProjectId(projectId). Build() client := cce.NewCceClient( cce.CceClientBuilder(). WithRegion(region.ValueOf("<YOUR REGION>")). WithCredential(auth). Build()) request := &model.CreateClusterRequest{} enterpriseProjectIdExtendParam:= "0" kubeProxyModeExtendParam:= "iptables" alphaCceFixPoolMaskExtendParam:= "25" extendParamSpec := &model.ClusterExtendParam{ EnterpriseProjectId: &enterpriseProjectIdExtendParam, KubeProxyMode: &kubeProxyModeExtendParam, AlphaCceFixPoolMask: &alphaCceFixPoolMaskExtendParam, } modeAuthentication:= "rbac" authenticationSpec := &model.Authentication{ Mode: &modeAuthentication, } cidrContainerNetwork:= "10.0.0.0/16" containerNetworkSpec := &model.ContainerNetwork{ Mode: model.GetContainerNetworkModeEnum().VPC_ROUTER, Cidr: &cidrContainerNetwork, } hostNetworkSpec := &model.HostNetwork{ Vpc: "030bfb19-5fa7-42ad-8a0d-c0721d268867", Subnet: "ca964acf-8468-4735-8229-97940ef6c881", } categorySpec:= model.GetClusterSpecCategoryEnum().CCE versionSpec:= "v1.19" descriptionSpec:= "" ipv6enableSpec:= false billingModeSpec:= int32(0) kubernetesSvcIpRangeSpec:= "10.247.0.0/16" specbody := &model.ClusterSpec{ Category: &categorySpec, Flavor: "cce.s2.small", Version: &versionSpec, Description: &descriptionSpec, Ipv6enable: &ipv6enableSpec, HostNetwork: hostNetworkSpec, ContainerNetwork: containerNetworkSpec, Authentication: authenticationSpec, BillingMode: &billingModeSpec, KubernetesSvcIpRange: &kubernetesSvcIpRangeSpec, ExtendParam: extendParamSpec, } var listAnnotationsMetadata = map[string]string{ "cluster.install.addons.external/install": "[{"addonTemplateName":"icagent"}]", } metadatabody := &model.ClusterMetadata{ Name: "cluster", Annotations: listAnnotationsMetadata, } request.Body = &model.Cluster{ Spec: specbody, Metadata: metadatabody, ApiVersion: "v3", Kind: "Cluster", } response, err := client.CreateCluster(request) if err == nil { fmt.Printf("%+v\n", response) } else { fmt.Println(err) } }
-
创建一个v1.19版本的CCE集群,计费模式为按需计费,集群规模为50节点,且为三控制节点高可用集群,并指定自定义的节点默认安全组。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88
package main import ( "fmt" "github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/basic" cce "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/cce/v3" "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/cce/v3/model" region "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/cce/v3/region" ) func main() { // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security. // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment ak := os.Getenv("CLOUD_SDK_AK") sk := os.Getenv("CLOUD_SDK_SK") projectId := "{project_id}" auth := basic.NewCredentialsBuilder(). WithAk(ak). WithSk(sk). WithProjectId(projectId). Build() client := cce.NewCceClient( cce.CceClientBuilder(). WithRegion(region.ValueOf("<YOUR REGION>")). WithCredential(auth). Build()) request := &model.CreateClusterRequest{} enterpriseProjectIdExtendParam:= "0" kubeProxyModeExtendParam:= "iptables" alphaCceFixPoolMaskExtendParam:= "25" extendParamSpec := &model.ClusterExtendParam{ EnterpriseProjectId: &enterpriseProjectIdExtendParam, KubeProxyMode: &kubeProxyModeExtendParam, AlphaCceFixPoolMask: &alphaCceFixPoolMaskExtendParam, } modeAuthentication:= "rbac" authenticationSpec := &model.Authentication{ Mode: &modeAuthentication, } cidrContainerNetwork:= "10.0.0.0/16" containerNetworkSpec := &model.ContainerNetwork{ Mode: model.GetContainerNetworkModeEnum().VPC_ROUTER, Cidr: &cidrContainerNetwork, } securityGroupHostNetwork:= "a4ef108c-2ec6-492f-a6c4-7b64e25ae490" hostNetworkSpec := &model.HostNetwork{ Vpc: "030bfb19-5fa7-42ad-8a0d-c0721d268867", Subnet: "ca964acf-8468-4735-8229-97940ef6c881", SecurityGroup: &securityGroupHostNetwork, } categorySpec:= model.GetClusterSpecCategoryEnum().CCE versionSpec:= "v1.19" descriptionSpec:= "" ipv6enableSpec:= false billingModeSpec:= int32(0) kubernetesSvcIpRangeSpec:= "10.247.0.0/16" specbody := &model.ClusterSpec{ Category: &categorySpec, Flavor: "cce.s2.small", Version: &versionSpec, Description: &descriptionSpec, Ipv6enable: &ipv6enableSpec, HostNetwork: hostNetworkSpec, ContainerNetwork: containerNetworkSpec, Authentication: authenticationSpec, BillingMode: &billingModeSpec, KubernetesSvcIpRange: &kubernetesSvcIpRangeSpec, ExtendParam: extendParamSpec, } metadatabody := &model.ClusterMetadata{ Name: "cluster", } request.Body = &model.Cluster{ Spec: specbody, Metadata: metadatabody, ApiVersion: "v3", Kind: "Cluster", } response, err := client.CreateCluster(request) if err == nil { fmt.Printf("%+v\n", response) } else { fmt.Println(err) } }
-
创建一个v1.25版本的CCE Turbo集群,计费模式为按需计费,集群规模为50节点,且为三控制节点高可用集群。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
package main import ( "fmt" "github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/basic" cce "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/cce/v3" "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/cce/v3/model" region "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/cce/v3/region" ) func main() { // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security. // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment ak := os.Getenv("CLOUD_SDK_AK") sk := os.Getenv("CLOUD_SDK_SK") projectId := "{project_id}" auth := basic.NewCredentialsBuilder(). WithAk(ak). WithSk(sk). WithProjectId(projectId). Build() client := cce.NewCceClient( cce.CceClientBuilder(). WithRegion(region.ValueOf("<YOUR REGION>")). WithCredential(auth). Build()) request := &model.CreateClusterRequest{} enterpriseProjectIdExtendParam:= "0" kubeProxyModeExtendParam:= "iptables" extendParamSpec := &model.ClusterExtendParam{ EnterpriseProjectId: &enterpriseProjectIdExtendParam, KubeProxyMode: &kubeProxyModeExtendParam, } modeAuthentication:= "rbac" authenticationSpec := &model.Authentication{ Mode: &modeAuthentication, } iPv4CIDRServiceNetwork:= "10.247.0.0/16" serviceNetworkSpec := &model.ServiceNetwork{ IPv4CIDR: &iPv4CIDRServiceNetwork, } var listSubnetsEniNetwork = []model.NetworkSubnet{ { SubnetID: "861fb11d-2f0e-4c10-a98a-166dc26e4ff7", }, } eniSubnetCIDREniNetwork:= "192.168.0.0/24" eniNetworkSpec := &model.EniNetwork{ EniSubnetId: "861fb11d-2f0e-4c10-a98a-166dc26e4ff7", EniSubnetCIDR: &eniSubnetCIDREniNetwork, Subnets: listSubnetsEniNetwork, } containerNetworkSpec := &model.ContainerNetwork{ Mode: model.GetContainerNetworkModeEnum().ENI, } hostNetworkSpec := &model.HostNetwork{ Vpc: "030bfb19-5fa7-42ad-8a0d-c0721d268867", Subnet: "ca964acf-8468-4735-8229-97940ef6c881", } categorySpec:= model.GetClusterSpecCategoryEnum().TURBO typeSpec:= model.GetClusterSpecTypeEnum().VIRTUAL_MACHINE versionSpec:= "v1.25" descriptionSpec:= "" ipv6enableSpec:= false billingModeSpec:= int32(0) specbody := &model.ClusterSpec{ Category: &categorySpec, Type: &typeSpec, Flavor: "cce.s2.small", Version: &versionSpec, Description: &descriptionSpec, Ipv6enable: &ipv6enableSpec, HostNetwork: hostNetworkSpec, ContainerNetwork: containerNetworkSpec, EniNetwork: eniNetworkSpec, ServiceNetwork: serviceNetworkSpec, Authentication: authenticationSpec, BillingMode: &billingModeSpec, ExtendParam: extendParamSpec, } metadatabody := &model.ClusterMetadata{ Name: "cluster", } request.Body = &model.Cluster{ Spec: specbody, Metadata: metadatabody, ApiVersion: "v3", Kind: "Cluster", } response, err := client.CreateCluster(request) if err == nil { fmt.Printf("%+v\n", response) } else { fmt.Println(err) } }
更多编程语言的SDK代码示例,请参见API Explorer的代码示例页签,可生成自动对应的SDK代码示例。
状态码
状态码 |
描述 |
---|---|
201 |
表示创建集群作业下发成功。 |
错误码
请参见错误码。