功能介绍
该API用于在指定集群下创建节点池。仅支持集群在处于可用、扩容、缩容状态时调用。
1.21版本的集群创建节点池时支持绑定安全组,每个节点池最多绑定五个安全组。
更新节点池的安全组后,只针对新创的pod生效,建议驱逐节点上原有的pod。
若无集群,请先创建集群。 集群管理的URL格式为:https://Endpoint/uri。其中uri为资源路径,也即API访问的路径
调用方法
请参见如何调用API。
URI
POST /api/v3/projects/{project_id}/clusters/{cluster_id}/nodepools
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
project_id |
是 |
String |
项目ID,获取方式请参见如何获取接口URI中参数。 |
cluster_id |
是 |
String |
集群ID,获取方式请参见如何获取接口URI中参数。 |
请求参数
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
Content-Type |
是 |
String |
消息体的类型(格式) |
X-Auth-Token |
是 |
String |
调用接口的认证方式分为Token和AK/SK两种,如果您使用的Token方式,此参数为必填,请填写Token的值,获取方式请参见获取token。 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
kind |
是 |
String |
API类型,固定值“NodePool”。 |
apiVersion |
是 |
String |
API版本,固定值“v3”。 |
metadata |
是 |
节点池的元数据信息 |
|
spec |
是 |
节点池的规格描述 |
|
status |
否 |
节点池状态 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
name |
是 |
String |
节点名池名称。 说明:
命名规则:
|
uid |
否 |
String |
节点池的uid。创建成功后自动生成,填写无效 |
annotations |
否 |
Map<String,String> |
节点池的注解,以key value对表示。仅用于查询,不支持请求时传入,填写无效。 |
updateTimestamp |
否 |
String |
更新时间 |
creationTimestamp |
否 |
String |
创建时间 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
type |
否 |
String |
节点池类型。不填写时默认为vm。 |
nodeTemplate |
是 |
节点池模板详细参数。 |
|
initialNodeCount |
否 |
Integer |
节点池初始化节点个数。查询时为节点池目标节点数量。 |
autoscaling |
否 |
弹性伸缩 参数。 |
|
nodeManagement |
否 |
节点管理相关配置 |
|
podSecurityGroups |
否 |
安全组相关配置, 仅turbo集群支持配置该参数。 |
|
customSecurityGroups |
否 |
Array of strings |
节点池自定义安全组相关配置。支持节点池新扩容节点绑定指定的安全组。
|
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
flavor |
是 |
String |
节点的规格,CCE支持的节点规格请参考节点规格说明获取。 |
az |
是 |
String |
|
os |
否 |
String |
节点的操作系统类型。具体支持的操作系统请参见节点操作系统说明。 说明:
|
login |
是 |
节点的登录方式。密钥对和密码登录方式二者必选其一。 |
|
rootVolume |
是 |
节点的磁盘信息 |
|
dataVolumes |
是 |
节点的数据盘参数(目前已支持通过控制台为CCE节点添加第二块数据盘)。 如果数据盘正供容器运行时和Kubelet组件使用,则不可被卸载,否则将导致节点不可用。 针对专属云节点,参数解释与rootVolume一致 |
|
storage |
否 |
磁盘初始化配置管理参数。 该参数配置逻辑较为复杂,详细说明请参见节点磁盘挂载。 该参数缺省时,按照extendParam中的DockerLVMConfigOverride(已废弃)参数进行磁盘管理。此参数对1.15.11及以上集群版本支持。 说明:
如存在节点规格涉及本地盘并同时使用 云硬盘 场景时,请勿缺省此参数,避免出现将用户未期望的磁盘分区。 |
|
publicIP |
否 |
节点的 弹性公网IP 说明:
创建节点池添加节点时不支持该参数。 |
|
nodeNicSpec |
否 |
节点的网卡信息 |
|
count |
否 |
Integer |
批量创建时节点的个数,必须为大于等于1,小于等于最大限额的正整数。作用于节点池时该项可以不填写。 |
billingMode |
否 |
Integer |
节点的计费模式:
|
taints |
否 |
支持给创建出来的节点加Taints来设置反亲和性,taints配置不超过20条。每条Taints包含以下3个参数:
示例: "taints": [{ "key": "status", "value": "unavailable", "effect": "NoSchedule" }, { "key": "looks", "value": "bad", "effect": "NoSchedule" }] |
|
k8sTags |
否 |
Map<String,String> |
格式为key/value键值对。键值对个数不超过20条。
示例: "k8sTags": { "key": "value" } |
ecsGroupId |
否 |
String |
云服务器组ID,若指定,将节点创建在该云服务器组下 |
dedicatedHostId |
否 |
String |
指定DeH主机的ID,将节点调度到自己的DeH上。 说明:
创建节点池添加节点时不支持该参数。 |
userTags |
否 |
云服务器标签,键必须唯一,CCE支持的最大用户自定义标签数量依region而定,自定义标签数上限为8个。 字段使用场景:在节点创建场景下,支持指定初始值,查询时不返回该字段;在节点池场景下,其中节点模板中支持指定初始值,查询时支持返回该字段;在其余场景下,查询时都不会返回该字段。 说明:
标签键只能包含大写字母.小写字母、数字和特殊字符(-_)以及Unicode字符,长度不超过36个字符。 |
|
runtime |
否 |
容器运行时, 默认场景:
|
|
initializedConditions |
否 |
Array of strings |
自定义初始化标记。 CCE节点在初始化完成之前,会打上初始化未完成污点(node.cloudprovider.kubernetes.io/uninitialized)防止pod调度到节点上。 cce支持自定义初始化标记,在接收到initializedConditions参数后,会将参数值转换成节点标签,随节点下发,例如:cloudprovider.openvessel.io/inject-initialized-conditions=CCEInitial_CustomedInitial。 当节点上设置了此标签,会轮询节点的status.Conditions,查看conditions的type是否存在标记名,如CCEInitial、CustomedInitial标记,如果存在所有传入的标记,且状态为True,认为节点初始化完成,则移除初始化污点。
|
extendParam |
否 |
创建节点时的扩展参数。 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
sshKey |
否 |
String |
选择密钥对方式登录时的密钥对名称。 |
userPassword |
否 |
选择密码方式登录时的帐号密码信息,之后可通过此帐号密码登录节点。 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
username |
否 |
String |
登录帐号,默认为“root” |
password |
是 |
String |
登录密码,若创建节点通过用户名密码方式,即使用该字段,则响应体中该字段作屏蔽展示。 密码复杂度要求:
|
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
size |
是 |
Integer |
磁盘大小,单位为GB
|
volumetype |
是 |
String |
磁盘类型,取值请参见创建云服务器 中“root_volume字段数据结构说明”。
说明:
了解不同磁盘类型的详细信息,链接请参见创建云服务器。 |
extendParam |
否 |
Map<String,Object> |
磁盘扩展参数,取值请参见创建云服务器中“extendparam”参数的描述。 链接请参见创建云服务器 |
cluster_id |
否 |
String |
云服务器系统盘对应的存储池的ID。仅用作专属云集群, 专属分布式存储 DSS的存储池ID,即dssPoolID。 获取方法请参见获取单个专属分布式存储池详情中“表3 响应参数”的ID字段。 |
cluster_type |
否 |
String |
云服务器系统盘对应的磁盘存储类型。仅用作专属云集群,固定取值为dss。 |
hw:passthrough |
否 |
Boolean |
|
metadata |
否 |
云硬盘加密信息,仅在创建节点系统盘或数据盘需加密时须填写。 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
__system__encrypted |
否 |
String |
表示云硬盘加密功能的字段,'0'代表不加密,'1'代表加密。 该字段不存在时,云硬盘默认为不加密。 |
__system__cmkid |
否 |
String |
用户主密钥ID,是metadata中的表示加密功能的字段,与__system__encrypted配合使用。 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
storageSelectors |
是 |
磁盘选择,根据matchLabels和storageType对匹配的磁盘进行管理。磁盘匹配存在先后顺序,靠前的匹配规则优先匹配。 |
|
storageGroups |
是 |
由多个存储设备组成的存储组,用于各个存储空间的划分。 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
name |
是 |
String |
selector的名字,作为storageGroup中selectorNames的索引,因此各个selector间的名字不能重复。 |
storageType |
是 |
String |
存储类型,当前仅支持evs(云硬盘)或local(本地盘);local存储类型不支持磁盘选择,所有本地盘将被组成一个VG,因此也仅允许只有一个local类型的storageSelector。 |
matchLabels |
否 |
evs盘的匹配字段,支持DataVolume中的size、volumeType、metadataEncrypted、metadataCmkid、count五个字段。 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
size |
否 |
String |
匹配的磁盘大小,不填则无磁盘大小限制。例如:100. |
volumeType |
否 |
String |
云硬盘类型,目前支持SSD\GPSSD\SAS\ESSD\SATA等。 |
metadataEncrypted |
否 |
String |
磁盘加密标识符,0代表不加密,1代表加密。 |
metadataCmkid |
否 |
String |
加密磁盘的用户主密钥ID,长度为36字节的字符串。 |
count |
否 |
String |
磁盘选择个数,不填则选择所有此类磁盘。 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
name |
是 |
String |
storageGroups的名字,作为虚拟存储组的名字,因此各个group名字不能重复。 说明:
|
|
cceManaged |
否 |
Boolean |
k8s及runtime所属存储空间。有且仅有一个group被设置为true,不填默认false。 |
selectorNames |
是 |
Array of strings |
对应storageSelectors中的name,一个group可选择多个selector;但一个selector只能被一个group选择。 |
virtualSpaces |
是 |
group中空间配置的详细管理。 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
name |
是 |
String |
virtualSpace的名称,当前仅支持三种类型:kubernetes、runtime、user。
|
size |
是 |
String |
virtualSpace的大小,仅支持整数百分比。例如:90%。 说明:
一个group中所有virtualSpace的百分比之和不得超过100% |
lvmConfig |
否 |
lvm配置管理,适用于kubernetes和user空间配置。 需要注意:一个virtualSpace仅支持一个config配置。 |
|
runtimeConfig |
否 |
runtime配置管理,适用于运行时空间配置。 需要注意:一个virtualSpace仅支持一个config配置。 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
lvType |
是 |
String |
LVM写入模式:linear、striped。linear:线性模式;striped:条带模式,使用多块磁盘组成条带模式,能够提升磁盘性能。 |
path |
否 |
String |
磁盘挂载路径。仅在用户配置中生效。支持包含:数字、大小写字母、点、中划线、下划线的绝对路径。 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
lvType |
是 |
String |
LVM写入模式:linear、striped。linear:线性模式;striped:条带模式,使用多块磁盘组成条带模式,能够提升磁盘性能。 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
ids |
否 |
Array of strings |
已有的弹性IP的ID列表。数量不得大于待创建节点数 说明:
若已配置ids参数,则无需配置count和eip参数 |
count |
否 |
Integer |
要动态创建的弹性IP个数。 说明:
count参数与eip参数必须同时配置。 |
eip |
否 |
弹性IP参数 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
iptype |
是 |
String |
弹性IP类型,取值请参见申请EIP接口中publicip.type说明。 链接请参见申请EIP |
bandwidth |
否 |
弹性IP的带宽参数 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
chargemode |
否 |
String |
带宽的计费类型:
说明:
|
size |
否 |
Integer |
带宽大小,取值请参见取值请参见申请EIP接口中bandwidth.size说明。 链接请参见申请EIP |
sharetype |
否 |
String |
带宽的共享类型,共享类型枚举:PER,表示独享,目前仅支持独享。 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
subnetId |
否 |
String |
网卡所在子网的网络ID。主网卡创建时若未指定subnetId,将使用集群子网。扩展网卡创建时必须指定subnetId。 |
fixedIps |
否 |
Array of strings |
主网卡的IP将通过fixedIps指定,数量不得大于创建的节点数。fixedIps或ipBlock同时只能指定一个。扩展网卡不支持指定fiexdIps。 |
ipBlock |
否 |
String |
主网卡的IP段的CIDR格式,创建的节点IP将属于该IP段内。fixedIps或ipBlock同时只能指定一个。 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
key |
否 |
String |
云服务器标签的键。不得以"CCE-"或"__type_baremetal"开头 |
value |
否 |
String |
云服务器标签的值 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
name |
否 |
String |
容器运行时,默认场景:
|
参数 |
是否必选 |
参数类型 |
---|---|---|
ecs:performancetype |
否 |
String |
orderID |
否 |
String |
productID |
否 |
String |
maxPods |
否 |
Integer |
periodType |
否 |
String |
periodNum |
否 |
Integer |
isAutoRenew |
否 |
String |
isAutoPay |
否 |
String |
DockerLVMConfigOverride |
否 |
String |
dockerBaseSize |
否 |
Integer |
publicKey |
否 |
String |
alpha.cce/preInstall |
否 |
String |
alpha.cce/postInstall |
否 |
String |
alpha.cce/NodeImageID |
否 |
String |
nicMultiqueue |
否 |
String |
nicThreshold |
否 |
String |
chargingMode |
否 |
Integer |
agency_name |
否 |
String |
kube-reserved-mem |
否 |
Integer |
system-reserved-mem |
否 |
Integer |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
enable |
否 |
Boolean |
是否开启自动扩缩容 |
minNodeCount |
否 |
Integer |
若开启自动扩缩容,最小能缩容的节点个数。不可大于集群规格所允许的节点上限 |
maxNodeCount |
否 |
Integer |
若开启自动扩缩容,最大能扩容的节点个数,应大于等于 minNodeCount,且不超过集群规格对应的节点数量上限。 |
scaleDownCooldownTime |
否 |
Integer |
节点保留时间,单位为分钟,扩容出来的节点在这个时间内不会被缩掉 |
priority |
否 |
Integer |
节点池权重,更高的权重在扩容时拥有更高的优先级 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
serverGroupReference |
否 |
String |
云服务器组ID,若指定,节点池中所有节点将创建在该云服务器组下,节点池的云服务器组只能在创建时指定,无法修改。指定云服务器组时节点池中的节点数量不允许超出云服务器组的配额限制。 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
currentNode |
否 |
Integer |
当前节点池中所有节点数量(不含删除中的节点)。 |
creatingNode |
否 |
Integer |
当前节点池中处于创建流程中的节点数量。 |
deletingNode |
否 |
Integer |
当前节点池中删除中的节点数量。 |
phase |
否 |
String |
节点池状态。
说明:
上述节点池状态已废弃,仅兼容保留,不建议使用,替代感知方式如下:
|
jobId |
否 |
String |
对节点池执行操作时的 JobID。 |
conditions |
否 |
节点池当前详细状态列表,详情参见Condition类型定义。 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
type |
否 |
String |
Condition类型,当前支持类型如下
|
status |
否 |
String |
Condition当前状态,取值如下
|
lastProbeTime |
否 |
String |
上次状态检查时间。 |
lastTransitTime |
否 |
String |
上次状态变更时间。 |
reason |
否 |
String |
上次状态变更原因。 |
message |
否 |
String |
Condition详细描述。 |
响应参数
状态码: 201
参数 |
参数类型 |
描述 |
---|---|---|
kind |
String |
API类型,固定值“NodePool”。 |
apiVersion |
String |
API版本,固定值“v3”。 |
metadata |
节点池的元数据信息 |
|
spec |
节点池的规格描述 |
|
status |
节点池状态 |
参数 |
参数类型 |
描述 |
---|---|---|
name |
String |
节点名池名称。 说明:
命名规则:
|
uid |
String |
节点池的uid。创建成功后自动生成,填写无效 |
annotations |
Map<String,String> |
节点池的注解,以key value对表示。仅用于查询,不支持请求时传入,填写无效。 |
updateTimestamp |
String |
更新时间 |
creationTimestamp |
String |
创建时间 |
参数 |
参数类型 |
描述 |
---|---|---|
type |
String |
节点池类型。不填写时默认为vm。
|
nodeTemplate |
节点池模板详细参数。 |
|
initialNodeCount |
Integer |
节点池初始化节点个数。查询时为节点池目标节点数量。 |
autoscaling |
弹性伸缩参数。 |
|
nodeManagement |
节点管理相关配置 |
|
podSecurityGroups |
安全组相关配置, 仅turbo集群支持配置该参数。 |
|
customSecurityGroups |
Array of strings |
节点池自定义安全组相关配置。支持节点池新扩容节点绑定指定的安全组。
|
参数 |
参数类型 |
描述 |
---|---|---|
flavor |
String |
节点的规格,CCE支持的节点规格请参考节点规格说明获取。 |
az |
String |
待创建节点所在的可用区,需要指定可用区(AZ)的名称。 CCE支持的可用区请参考地区和终端节点 |
os |
String |
节点的操作系统类型。具体支持的操作系统请参见节点操作系统说明。 说明:
|
login |
节点的登录方式。密钥对和密码登录方式二者必选其一。 |
|
rootVolume |
节点的磁盘信息 |
|
dataVolumes |
节点的数据盘参数(目前已支持通过控制台为CCE节点添加第二块数据盘)。 如果数据盘正供容器运行时和Kubelet组件使用,则不可被卸载,否则将导致节点不可用。 针对专属云节点,参数解释与rootVolume一致 |
|
storage |
磁盘初始化配置管理参数。 该参数配置逻辑较为复杂,详细说明请参见节点磁盘挂载。 该参数缺省时,按照extendParam中的DockerLVMConfigOverride(已废弃)参数进行磁盘管理。此参数对1.15.11及以上集群版本支持。 说明:
如存在节点规格涉及本地盘并同时使用云硬盘场景时,请勿缺省此参数,避免出现将用户未期望的磁盘分区。 |
|
publicIP |
节点的弹性 公网IP 说明:
创建节点池添加节点时不支持该参数。 |
|
nodeNicSpec |
节点的网卡信息 |
|
count |
Integer |
批量创建时节点的个数,必须为大于等于1,小于等于最大限额的正整数。作用于节点池时该项可以不填写。 |
billingMode |
Integer |
节点的计费模式:
|
taints |
支持给创建出来的节点加Taints来设置反亲和性,taints配置不超过20条。每条Taints包含以下3个参数:
示例: "taints": [{ "key": "status", "value": "unavailable", "effect": "NoSchedule" }, { "key": "looks", "value": "bad", "effect": "NoSchedule" }] |
|
k8sTags |
Map<String,String> |
格式为key/value键值对。键值对个数不超过20条。
示例: "k8sTags": { "key": "value" } |
ecsGroupId |
String |
云服务器组ID,若指定,将节点创建在该云服务器组下 |
dedicatedHostId |
String |
指定DeH主机的ID,将节点调度到自己的DeH上。 说明:
创建节点池添加节点时不支持该参数。 |
userTags |
云服务器标签,键必须唯一,CCE支持的最大用户自定义标签数量依region而定,自定义标签数上限为8个。 字段使用场景:在节点创建场景下,支持指定初始值,查询时不返回该字段;在节点池场景下,其中节点模板中支持指定初始值,查询时支持返回该字段;在其余场景下,查询时都不会返回该字段。 说明:
标签键只能包含大写字母.小写字母、数字和特殊字符(-_)以及Unicode字符,长度不超过36个字符。 |
|
runtime |
容器运行时, 默认场景:
|
|
initializedConditions |
Array of strings |
自定义初始化标记。 CCE节点在初始化完成之前,会打上初始化未完成污点(node.cloudprovider.kubernetes.io/uninitialized)防止pod调度到节点上。 cce支持自定义初始化标记,在接收到initializedConditions参数后,会将参数值转换成节点标签,随节点下发,例如:cloudprovider.openvessel.io/inject-initialized-conditions=CCEInitial_CustomedInitial。 当节点上设置了此标签,会轮询节点的status.Conditions,查看conditions的type是否存在标记名,如CCEInitial、CustomedInitial标记,如果存在所有传入的标记,且状态为True,认为节点初始化完成,则移除初始化污点。
|
extendParam |
创建节点时的扩展参数。 |
参数 |
参数类型 |
描述 |
---|---|---|
username |
String |
登录帐号,默认为“root” |
password |
String |
登录密码,若创建节点通过用户名密码方式,即使用该字段,则响应体中该字段作屏蔽展示。 密码复杂度要求:
|
参数 |
参数类型 |
描述 |
---|---|---|
size |
Integer |
磁盘大小,单位为GB
|
volumetype |
String |
磁盘类型,取值请参见创建云服务器 中“root_volume字段数据结构说明”。
说明:
了解不同磁盘类型的详细信息,链接请参见创建云服务器。 |
extendParam |
Map<String,Object> |
磁盘扩展参数,取值请参见创建云服务器中“extendparam”参数的描述。 链接请参见创建云服务器 |
cluster_id |
String |
云服务器系统盘对应的存储池的ID。仅用作专属云集群,专属分布式存储DSS的存储池ID,即dssPoolID。 获取方法请参见获取单个专属分布式存储池详情中“表3 响应参数”的ID字段。 |
cluster_type |
String |
云服务器系统盘对应的磁盘存储类型。仅用作专属云集群,固定取值为dss。 |
hw:passthrough |
Boolean |
|
metadata |
云硬盘加密信息,仅在创建节点系统盘或数据盘需加密时须填写。 |
参数 |
参数类型 |
描述 |
---|---|---|
__system__encrypted |
String |
表示云硬盘加密功能的字段,'0'代表不加密,'1'代表加密。 该字段不存在时,云硬盘默认为不加密。 |
__system__cmkid |
String |
用户主密钥ID,是metadata中的表示加密功能的字段,与__system__encrypted配合使用。 |
参数 |
参数类型 |
描述 |
---|---|---|
storageSelectors |
磁盘选择,根据matchLabels和storageType对匹配的磁盘进行管理。磁盘匹配存在先后顺序,靠前的匹配规则优先匹配。 |
|
storageGroups |
由多个存储设备组成的存储组,用于各个存储空间的划分。 |
参数 |
参数类型 |
描述 |
---|---|---|
name |
String |
selector的名字,作为storageGroup中selectorNames的索引,因此各个selector间的名字不能重复。 |
storageType |
String |
存储类型,当前仅支持evs(云硬盘)或local(本地盘);local存储类型不支持磁盘选择,所有本地盘将被组成一个VG,因此也仅允许只有一个local类型的storageSelector。 |
matchLabels |
evs盘的匹配字段,支持DataVolume中的size、volumeType、metadataEncrypted、metadataCmkid、count五个字段。 |
参数 |
参数类型 |
描述 |
---|---|---|
size |
String |
匹配的磁盘大小,不填则无磁盘大小限制。例如:100. |
volumeType |
String |
云硬盘类型,目前支持SSD\GPSSD\SAS\ESSD\SATA等。 |
metadataEncrypted |
String |
磁盘加密标识符,0代表不加密,1代表加密。 |
metadataCmkid |
String |
加密磁盘的用户主密钥ID,长度为36字节的字符串。 |
count |
String |
磁盘选择个数,不填则选择所有此类磁盘。 |
参数 |
参数类型 |
描述 |
---|---|---|
name |
String |
storageGroups的名字,作为虚拟存储组的名字,因此各个group名字不能重复。 说明:
|
|
cceManaged |
Boolean |
k8s及runtime所属存储空间。有且仅有一个group被设置为true,不填默认false。 |
selectorNames |
Array of strings |
对应storageSelectors中的name,一个group可选择多个selector;但一个selector只能被一个group选择。 |
virtualSpaces |
group中空间配置的详细管理。 |
参数 |
参数类型 |
描述 |
---|---|---|
name |
String |
virtualSpace的名称,当前仅支持三种类型:kubernetes、runtime、user。
|
size |
String |
virtualSpace的大小,仅支持整数百分比。例如:90%。 说明:
一个group中所有virtualSpace的百分比之和不得超过100% |
lvmConfig |
lvm配置管理,适用于kubernetes和user空间配置。 需要注意:一个virtualSpace仅支持一个config配置。 |
|
runtimeConfig |
runtime配置管理,适用于运行时空间配置。 需要注意:一个virtualSpace仅支持一个config配置。 |
参数 |
参数类型 |
描述 |
---|---|---|
lvType |
String |
LVM写入模式:linear、striped。linear:线性模式;striped:条带模式,使用多块磁盘组成条带模式,能够提升磁盘性能。 |
path |
String |
磁盘挂载路径。仅在用户配置中生效。支持包含:数字、大小写字母、点、中划线、下划线的绝对路径。 |
参数 |
参数类型 |
描述 |
---|---|---|
lvType |
String |
LVM写入模式:linear、striped。linear:线性模式;striped:条带模式,使用多块磁盘组成条带模式,能够提升磁盘性能。 |
参数 |
参数类型 |
描述 |
---|---|---|
ids |
Array of strings |
已有的弹性IP的ID列表。数量不得大于待创建节点数 说明:
若已配置ids参数,则无需配置count和eip参数 |
count |
Integer |
要动态创建的弹性IP个数。 说明:
count参数与eip参数必须同时配置。 |
eip |
弹性IP参数 |
参数 |
参数类型 |
描述 |
---|---|---|
iptype |
String |
弹性IP类型,取值请参见申请EIP接口中publicip.type说明。 链接请参见申请EIP |
bandwidth |
弹性IP的带宽参数 |
参数 |
参数类型 |
描述 |
---|---|---|
chargemode |
String |
带宽的计费类型:
说明:
|
size |
Integer |
带宽大小,取值请参见取值请参见申请EIP接口中bandwidth.size说明。 链接请参见申请EIP |
sharetype |
String |
带宽的共享类型,共享类型枚举:PER,表示独享,目前仅支持独享。 |
参数 |
参数类型 |
描述 |
---|---|---|
subnetId |
String |
网卡所在子网的网络ID。主网卡创建时若未指定subnetId,将使用集群子网。扩展网卡创建时必须指定subnetId。 |
fixedIps |
Array of strings |
主网卡的IP将通过fixedIps指定,数量不得大于创建的节点数。fixedIps或ipBlock同时只能指定一个。扩展网卡不支持指定fiexdIps。 |
ipBlock |
String |
主网卡的IP段的CIDR格式,创建的节点IP将属于该IP段内。fixedIps或ipBlock同时只能指定一个。 |
参数 |
参数类型 |
描述 |
---|---|---|
name |
String |
容器运行时,默认场景:
|
参数 |
参数类型 |
---|---|
ecs:performancetype |
String |
orderID |
String |
productID |
String |
maxPods |
Integer |
periodType |
String |
periodNum |
Integer |
isAutoRenew |
String |
isAutoPay |
String |
DockerLVMConfigOverride |
String |
dockerBaseSize |
Integer |
publicKey |
String |
alpha.cce/preInstall |
String |
alpha.cce/postInstall |
String |
alpha.cce/NodeImageID |
String |
nicMultiqueue |
String |
nicThreshold |
String |
chargingMode |
Integer |
agency_name |
String |
kube-reserved-mem |
Integer |
system-reserved-mem |
Integer |
参数 |
参数类型 |
描述 |
---|---|---|
enable |
Boolean |
是否开启自动扩缩容 |
minNodeCount |
Integer |
若开启自动扩缩容,最小能缩容的节点个数。不可大于集群规格所允许的节点上限 |
maxNodeCount |
Integer |
若开启自动扩缩容,最大能扩容的节点个数,应大于等于 minNodeCount,且不超过集群规格对应的节点数量上限。 |
scaleDownCooldownTime |
Integer |
节点保留时间,单位为分钟,扩容出来的节点在这个时间内不会被缩掉 |
priority |
Integer |
节点池权重,更高的权重在扩容时拥有更高的优先级 |
参数 |
参数类型 |
描述 |
---|---|---|
serverGroupReference |
String |
云服务器组ID,若指定,节点池中所有节点将创建在该云服务器组下,节点池的云服务器组只能在创建时指定,无法修改。指定云服务器组时节点池中的节点数量不允许超出云服务器组的配额限制。 |
参数 |
参数类型 |
描述 |
---|---|---|
currentNode |
Integer |
当前节点池中所有节点数量(不含删除中的节点)。 |
creatingNode |
Integer |
当前节点池中处于创建流程中的节点数量。 |
deletingNode |
Integer |
当前节点池中删除中的节点数量。 |
phase |
String |
节点池状态。
说明:
上述节点池状态已废弃,仅兼容保留,不建议使用,替代感知方式如下:
|
jobId |
String |
对节点池执行操作时的 JobID。 |
conditions |
节点池当前详细状态列表,详情参见Condition类型定义。 |
参数 |
参数类型 |
描述 |
---|---|---|
type |
String |
Condition类型,当前支持类型如下
|
status |
String |
Condition当前状态,取值如下
|
lastProbeTime |
String |
上次状态检查时间。 |
lastTransitTime |
String |
上次状态变更时间。 |
reason |
String |
上次状态变更原因。 |
message |
String |
Condition详细描述。 |
请求示例
创建一个节点池,计费模式为按需计费,节点数量为0,节点池规格为2U4G,节点操作系统为EulerOS 2.5,使用Docker容器引擎。节点系统盘和数据盘大小分别为40GB和100GB,磁盘类型均为高IO。
{ "kind" : "NodePool", "apiVersion" : "v3", "metadata" : { "name" : "lc-it-nodepool-79796" }, "spec" : { "initialNodeCount" : 0, "type" : "vm", "autoscaling" : { "enable" : false, "minNodeCount" : 0, "maxNodeCount" : 1, "scaleDownCooldownTime" : 0, "priority" : 0 }, "nodeManagement" : { "serverGroupReference" : "" }, "nodeTemplate" : { "flavor" : "s6.large.2", "az" : "******", "os" : "EulerOS 2.5", "login" : { "sshKey" : "KeyPair-001" }, "rootVolume" : { "volumetype" : "SAS", "size" : 40 }, "dataVolumes" : [ { "volumetype" : "SAS", "size" : 100, "extendParam" : { "useType" : "docker" } } ], "billingMode" : 0, "extendParam" : { "alpha.cce/preInstall" : "", "alpha.cce/postInstall" : "", "alpha.cce/NodeImageID" : "", "maxPods" : 110 }, "nodeNicSpec" : { "primaryNic" : { "subnetId" : "7e767d10-7548-4df5-ad72-aeac1d08bd8a" } } }, "podSecurityGroups" : [ { "id" : "" } ] } }
响应示例
状态码: 201
表示在指定集群下创建节点池的作业下发成功。
{ "kind" : "NodePool", "apiVersion" : "v3", "metadata" : { "name" : "lc-it-nodepool-79796", "uid" : "99addaa2-69eb-11ea-a592-0255ac1001bb" }, "spec" : { "type" : "vm", "nodeTemplate" : { "flavor" : "s6.large.2", "az" : "******", "os" : "EulerOS 2.5", "login" : { "sshKey" : "KeyPair-001" }, "rootVolume" : { "volumetype" : "SAS", "size" : 40 }, "dataVolumes" : [ { "volumetype" : "SAS", "size" : 100, "extendParam" : { "useType" : "docker" } } ], "publicIP" : { "eip" : { "bandwidth" : { } } }, "nodeNicSpec" : { "primaryNic" : { "subnetId" : "7e767d10-7548-4df5-ad72-aeac1d08bd8a" } }, "billingMode" : 0, "extendParam" : { "alpha.cce/NodeImageID" : "", "alpha.cce/postInstall" : "", "alpha.cce/preInstall" : "", "maxPods" : 110 }, "k8sTags" : { "cce.cloud.com/cce-nodepool" : "lc-it-nodepool-79796" } }, "autoscaling" : { "maxNodeCount" : 1 }, "nodeManagement" : { } }, "status" : { "phase" : "" } }
SDK代码示例
SDK代码示例如下。
创建一个节点池,计费模式为按需计费,节点数量为0,节点池规格为2U4G,节点操作系统为EulerOS 2.5,使用Docker容器引擎。节点系统盘和数据盘大小分别为40GB和100GB,磁盘类型均为高IO。
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; import java.util.Map; import java.util.HashMap; public class CreateNodePoolSolution { public static void main(String[] args) { String ak = "<YOUR AK>"; String sk = "<YOUR SK>"; String projectId = "<project_id>"; ICredential auth = new BasicCredentials() .withProjectId(projectId) .withAk(ak) .withSk(sk); CceClient client = CceClient.newBuilder() .withCredential(auth) .withRegion(CceRegion.valueOf("cn-north-4")) .build(); CreateNodePoolRequest request = new CreateNodePoolRequest(); request.withClusterId("<cluster_id>"); NodePool body = new NodePool(); List<SecurityID> listSpecPodSecurityGroups = new ArrayList<>(); listSpecPodSecurityGroups.add( new SecurityID() .withId("") ); NodeManagement nodeManagementSpec = new NodeManagement(); nodeManagementSpec.withServerGroupReference(""); NodePoolNodeAutoscaling autoscalingSpec = new NodePoolNodeAutoscaling(); autoscalingSpec.withEnable(false) .withMinNodeCount(0) .withMaxNodeCount(1) .withScaleDownCooldownTime(0) .withPriority(0); NodeExtendParam extendParamNodeTemplate = new NodeExtendParam(); extendParamNodeTemplate.withMaxPods(110) .withAlphaCcePreInstall("") .withAlphaCcePostInstall("") .withAlphaCceNodeImageID(""); NicSpec primaryNicNodeNicSpec = new NicSpec(); primaryNicNodeNicSpec.withSubnetId("7e767d10-7548-4df5-ad72-aeac1d08bd8a"); NodeNicSpec nodeNicSpecNodeTemplate = new NodeNicSpec(); nodeNicSpecNodeTemplate.withPrimaryNic(primaryNicNodeNicSpec); Map<String, Object> listDataVolumesExtendParam = new HashMap<>(); listDataVolumesExtendParam.put("useType", "docker"); List<Volume> listNodeTemplateDataVolumes = new ArrayList<>(); listNodeTemplateDataVolumes.add( new Volume() .withSize(100) .withVolumetype("SAS") .withExtendParam(listDataVolumesExtendParam) ); Volume rootVolumeNodeTemplate = new Volume(); rootVolumeNodeTemplate.withSize(40) .withVolumetype("SAS"); Login loginNodeTemplate = new Login(); loginNodeTemplate.withSshKey("KeyPair-001"); NodeSpec nodeTemplateSpec = new NodeSpec(); nodeTemplateSpec.withFlavor("s6.large.2") .withAz("******") .withOs("EulerOS 2.5") .withLogin(loginNodeTemplate) .withRootVolume(rootVolumeNodeTemplate) .withDataVolumes(listNodeTemplateDataVolumes) .withNodeNicSpec(nodeNicSpecNodeTemplate) .withBillingMode(0) .withExtendParam(extendParamNodeTemplate); NodePoolSpec specbody = new NodePoolSpec(); specbody.withType(NodePoolSpec.TypeEnum.fromValue("vm")) .withNodeTemplate(nodeTemplateSpec) .withInitialNodeCount(0) .withAutoscaling(autoscalingSpec) .withNodeManagement(nodeManagementSpec) .withPodSecurityGroups(listSpecPodSecurityGroups); NodePoolMetadata metadatabody = new NodePoolMetadata(); metadatabody.withName("lc-it-nodepool-79796"); body.withSpec(specbody); body.withMetadata(metadatabody); body.withApiVersion("v3"); body.withKind("NodePool"); request.withBody(body); try { CreateNodePoolResponse response = client.createNodePool(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()); } } }
创建一个节点池,计费模式为按需计费,节点数量为0,节点池规格为2U4G,节点操作系统为EulerOS 2.5,使用Docker容器引擎。节点系统盘和数据盘大小分别为40GB和100GB,磁盘类型均为高IO。
# coding: utf-8 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__": ak = "<YOUR AK>" sk = "<YOUR SK>" projectId = "<project_id>" credentials = BasicCredentials(ak, sk, projectId) \ client = CceClient.new_builder() \ .with_credentials(credentials) \ .with_region(CceRegion.value_of("cn-north-4")) \ .build() try: request = CreateNodePoolRequest() request.cluster_id = "<cluster_id>" listPodSecurityGroupsSpec = [ SecurityID( id="" ) ] nodeManagementSpec = NodeManagement( server_group_reference="" ) autoscalingSpec = NodePoolNodeAutoscaling( enable=False, min_node_count=0, max_node_count=1, scale_down_cooldown_time=0, priority=0 ) extendParamNodeTemplate = NodeExtendParam( max_pods=110, alpha_cce_pre_install="", alpha_cce_post_install="", alpha_cce_node_image_id="" ) primaryNicNodeNicSpec = NicSpec( subnet_id="7e767d10-7548-4df5-ad72-aeac1d08bd8a" ) nodeNicSpecNodeTemplate = NodeNicSpec( primary_nic=primaryNicNodeNicSpec ) listExtendParamDataVolumes = { "useType": "docker" } listDataVolumesNodeTemplate = [ Volume( size=100, volumetype="SAS", extend_param=listExtendParamDataVolumes ) ] rootVolumeNodeTemplate = Volume( size=40, volumetype="SAS" ) loginNodeTemplate = Login( ssh_key="KeyPair-001" ) nodeTemplateSpec = NodeSpec( flavor="s6.large.2", az="******", os="EulerOS 2.5", login=loginNodeTemplate, root_volume=rootVolumeNodeTemplate, data_volumes=listDataVolumesNodeTemplate, node_nic_spec=nodeNicSpecNodeTemplate, billing_mode=0, extend_param=extendParamNodeTemplate ) specbody = NodePoolSpec( type="vm", node_template=nodeTemplateSpec, initial_node_count=0, autoscaling=autoscalingSpec, node_management=nodeManagementSpec, pod_security_groups=listPodSecurityGroupsSpec ) metadatabody = NodePoolMetadata( name="lc-it-nodepool-79796" ) request.body = NodePool( spec=specbody, metadata=metadatabody, api_version="v3", kind="NodePool" ) response = client.create_node_pool(request) print(response) except exceptions.ClientRequestException as e: print(e.status_code) print(e.request_id) print(e.error_code) print(e.error_msg)
创建一个节点池,计费模式为按需计费,节点数量为0,节点池规格为2U4G,节点操作系统为EulerOS 2.5,使用Docker容器引擎。节点系统盘和数据盘大小分别为40GB和100GB,磁盘类型均为高IO。
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() { ak := "<YOUR AK>" sk := "<YOUR SK>" projectId := "<project_id>" auth := basic.NewCredentialsBuilder(). WithAk(ak). WithSk(sk). WithProjectId(projectId). Build() client := cce.NewCceClient( cce.CceClientBuilder(). WithRegion(region.ValueOf("cn-north-4")). WithCredential(auth). Build()) request := &model.CreateNodePoolRequest{} request.ClusterId = "<cluster_id>" idPodSecurityGroups:= "" var listPodSecurityGroupsSpec = []model.SecurityId{ { Id: &idPodSecurityGroups, }, } serverGroupReferenceNodeManagement:= "" nodeManagementSpec := &model.NodeManagement{ ServerGroupReference: &serverGroupReferenceNodeManagement, } enableAutoscaling:= false minNodeCountAutoscaling:= int32(0) maxNodeCountAutoscaling:= int32(1) scaleDownCooldownTimeAutoscaling:= int32(0) priorityAutoscaling:= int32(0) autoscalingSpec := &model.NodePoolNodeAutoscaling{ Enable: &enableAutoscaling, MinNodeCount: &minNodeCountAutoscaling, MaxNodeCount: &maxNodeCountAutoscaling, ScaleDownCooldownTime: &scaleDownCooldownTimeAutoscaling, Priority: &priorityAutoscaling, } maxPodsExtendParam:= int32(110) alphaCcePreInstallExtendParam:= "" alphaCcePostInstallExtendParam:= "" alphaCceNodeImageIDExtendParam:= "" extendParamNodeTemplate := &model.NodeExtendParam{ MaxPods: &maxPodsExtendParam, AlphaCcePreInstall: &alphaCcePreInstallExtendParam, AlphaCcePostInstall: &alphaCcePostInstallExtendParam, AlphaCceNodeImageID: &alphaCceNodeImageIDExtendParam, } subnetIdPrimaryNic:= "7e767d10-7548-4df5-ad72-aeac1d08bd8a" primaryNicNodeNicSpec := &model.NicSpec{ SubnetId: &subnetIdPrimaryNic, } nodeNicSpecNodeTemplate := &model.NodeNicSpec{ PrimaryNic: primaryNicNodeNicSpec, } var listExtendParamDataVolumes = map[string]interface{}{ "useType": "docker", } var listDataVolumesNodeTemplate = []model.Volume{ { Size: int32(100), Volumetype: "SAS", ExtendParam: listExtendParamDataVolumes, }, } rootVolumeNodeTemplate := &model.Volume{ Size: int32(40), Volumetype: "SAS", } sshKeyLogin:= "KeyPair-001" loginNodeTemplate := &model.Login{ SshKey: &sshKeyLogin, } osNodeTemplate:= "EulerOS 2.5" billingModeNodeTemplate:= int32(0) nodeTemplateSpec := &model.NodeSpec{ Flavor: "s6.large.2", Az: "******", Os: &osNodeTemplate, Login: loginNodeTemplate, RootVolume: rootVolumeNodeTemplate, DataVolumes: listDataVolumesNodeTemplate, NodeNicSpec: nodeNicSpecNodeTemplate, BillingMode: &billingModeNodeTemplate, ExtendParam: extendParamNodeTemplate, } typeSpec:= model.GetNodePoolSpecTypeEnum().VM initialNodeCountSpec:= int32(0) specbody := &model.NodePoolSpec{ Type: &typeSpec, NodeTemplate: nodeTemplateSpec, InitialNodeCount: &initialNodeCountSpec, Autoscaling: autoscalingSpec, NodeManagement: nodeManagementSpec, PodSecurityGroups: &listPodSecurityGroupsSpec, } metadatabody := &model.NodePoolMetadata{ Name: "lc-it-nodepool-79796", } request.Body = &model.NodePool{ Spec: specbody, Metadata: metadatabody, ApiVersion: "v3", Kind: "NodePool", } response, err := client.CreateNodePool(request) if err == nil { fmt.Printf("%+v\n", response) } else { fmt.Println(err) } }
更多编程语言的SDK代码示例,请参见API Explorer的代码示例页签,可生成自动对应的SDK代码示例。
状态码
状态码 |
描述 |
---|---|
201 |
表示在指定集群下创建节点池的作业下发成功。 |
错误码
请参见错误码。