纳管节点
功能介绍
该API用于在指定集群下纳管节点。
集群管理的URL格式为:https://Endpoint/uri。其中uri为资源路径,也即API访问的路径。
URI
POST /api/v3/projects/{project_id}/clusters/{cluster_id}/nodes/add
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
project_id |
是 |
String |
项目ID,获取方式请参见如何获取接口URI中参数。 |
cluster_id |
是 |
String |
集群ID,获取方式请参见如何获取接口URI中参数。 |
请求参数
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
Content-Type |
是 |
String |
消息体的类型(格式) |
X-Auth-Token |
是 |
String |
调用接口的认证方式分为Token和AK/SK两种,如果您使用的Token方式,此参数为必填,请填写Token的值,获取方式请参见获取token。 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
apiVersion |
是 |
String |
API版本,固定值“v3”。 |
kind |
是 |
String |
API类型,固定值“List”。 |
nodeList |
是 |
Array of AddNode objects |
纳管节点列表,当前最多支持同时纳管200个节点。 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
serverID |
是 |
String |
服务器ID,获取方式请参见ECS/BMS相关资料。 |
spec |
是 |
ReinstallNodeSpec object |
节点重装配置参数。当前不支持纳管节点接入节点池。 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
os |
是 |
String |
操作系统。指定自定义镜像场景将以IMS镜像的实际操作系统版本为准。请选择当前集群支持的操作系统版本,例如EulerOS 2.5、CentOS 7.6、EulerOS 2.8。 |
login |
是 |
Login object |
节点的登录方式。密钥对和密码登录方式二者必选其一。 |
name |
否 |
String |
节点名称
说明:
重装时指定将修改节点名称,且服务器名称会同步修改。默认以服务器当前名称作为节点名称。 命名规则:以小写字母开头,由小写字母、数字、中划线(-)组成,长度范围1-56位。 |
serverConfig |
否 |
ReinstallServerConfig object |
服务器配置 |
volumeConfig |
否 |
ReinstallVolumeConfig object |
卷管理配置 |
runtimeConfig |
否 |
ReinstallRuntimeConfig object |
容器运行时配置 |
k8sOptions |
否 |
ReinstallK8sOptionsConfig object |
Kubernetes节点配置 |
lifecycle |
否 |
NodeLifecycleConfig object |
节点自定义生命周期配置 |
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 |
否 |
ReinstallExtendParam object |
重装拓展参数,已废弃 |
hostnameConfig |
否 |
HostnameConfig object |
K8S节点名称配置参数,支持的集群版本为v1.23.6-r0到v1.25或者v1.25.2-r0及以上。 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
sshKey |
否 |
String |
选择密钥对方式登录时的密钥对名称。 |
userPassword |
否 |
UserPassword object |
选择密码方式登录时的账号密码信息,之后可通过此账号密码登录节点。 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
username |
否 |
String |
登录账号,默认为“root” |
password |
是 |
String |
登录密码,若创建节点通过用户名密码方式,即使用该字段,则响应体中该字段作屏蔽展示。 密码复杂度要求:
|
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
userTags |
否 |
Array of UserTag objects |
云服务器标签,键必须唯一,CCE支持的最大用户自定义标签数量依region而定,自定义标签数上限为5个。 |
rootVolume |
否 |
ReinstallVolumeSpec object |
系统盘重装配置 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
key |
否 |
String |
云服务器标签的键。不得以"CCE-"或"__type_baremetal"开头 |
value |
否 |
String |
云服务器标签的值 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
imageID |
否 |
String |
用户自定义镜像ID |
cmkID |
否 |
String |
用户主密钥ID。默认为空时,表示云硬盘不加密。 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
lvmConfig |
否 |
String |
Docker数据盘配置项。 默认配置示例如下: "lvmConfig":"dockerThinpool=vgpaas/90%VG;kubernetesLV=vgpaas/10%VG;diskType=evs;lvType=linear" 包含如下字段:
|
storage |
否 |
Storage object |
磁盘初始化配置管理参数。 该参数配置逻辑较为复杂,详细说明请参见节点磁盘挂载。 该参数缺省时,按照extendParam中的DockerLVMConfigOverride(已废弃)参数进行磁盘管理。此参数对1.15.11及以上集群版本支持。
说明:
如存在节点规格涉及本地盘并同时使用云硬盘场景时,请勿缺省此参数,避免出现将用户未期望的磁盘分区。 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
storageSelectors |
是 |
Array of StorageSelectors objects |
磁盘选择,根据matchLabels和storageType对匹配的磁盘进行管理。磁盘匹配存在先后顺序,靠前的匹配规则优先匹配。 |
storageGroups |
是 |
Array of StorageGroups objects |
由多个存储设备组成的存储组,用于各个存储空间的划分。 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
name |
是 |
String |
selector的名字,作为storageGroup中selectorNames的索引,因此各个selector间的名字不能重复。 |
storageType |
是 |
String |
存储类型,当前仅支持evs(云硬盘)或local(本地盘);local存储类型不支持磁盘选择,所有本地盘将被组成一个VG,因此也仅允许只有一个local类型的storageSelector。 |
matchLabels |
否 |
matchLabels object |
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 |
是 |
Array of VirtualSpace objects |
group中空间配置的详细管理。 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
name |
是 |
String |
virtualSpace的名称,当前仅支持三种类型:kubernetes、runtime、user。
|
size |
是 |
String |
virtualSpace的大小,仅支持整数百分比。例如:90%。
说明:
一个group中所有virtualSpace的百分比之和不得超过100% |
lvmConfig |
否 |
LVMConfig object |
lvm配置管理,适用于kubernetes和user空间配置。 需要注意:一个virtualSpace仅支持一个config配置。 |
runtimeConfig |
否 |
RuntimeConfig object |
runtime配置管理,适用于运行时空间配置。 需要注意:一个virtualSpace仅支持一个config配置。 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
lvType |
是 |
String |
LVM写入模式:linear、striped。linear:线性模式;striped:条带模式,使用多块磁盘组成条带模式,能够提升磁盘性能。 |
path |
否 |
String |
磁盘挂载路径。仅在用户配置中生效。支持包含:数字、大小写字母、点、中划线、下划线的绝对路径。 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
lvType |
是 |
String |
LVM写入模式:linear、striped。linear:线性模式;striped:条带模式,使用多块磁盘组成条带模式,能够提升磁盘性能。 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
dockerBaseSize |
否 |
Integer |
节点上单容器的可用磁盘空间大小,单位G。 不配置该值或值为0时将使用默认值,Devicemapper模式下默认值为10;OverlayFS模式默认不限制单容器可用空间大小,且dockerBaseSize设置仅在新版本集群的EulerOS节点上生效。 CCE节点容器运行时空间配置请参考数据盘空间分配说明。 Devicemapper模式下建议dockerBaseSize配置不超过80G,设置过大时可能会导致容器运行时初始化时间过长而启动失败,若对容器磁盘大小有特殊要求,可考虑使用挂载外部或本地存储方式代替。 |
runtime |
否 |
Runtime object |
容器运行时, 默认场景:
|
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
name |
否 |
String |
容器运行时,默认场景:
|
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
labels |
否 |
Map<String,String> |
格式为key/value键值对。键值对个数不超过20条。
示例: "k8sTags": { "key": "value" } |
taints |
否 |
Array of Taint objects |
支持给创建出来的节点加Taints来设置反亲和性,taints配置不超过20条。每条Taints包含以下3个参数:
示例: "taints": [{ "key": "status", "value": "unavailable", "effect": "NoSchedule" }, { "key": "looks", "value": "bad", "effect": "NoSchedule" }] |
maxPods |
否 |
Integer |
节点最大允许创建的实例数(Pod),该数量包含系统默认实例,取值范围为16~256。 该设置的目的为防止节点因管理过多实例而负载过重,请根据您的业务需要进行设置。 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
preInstall |
否 |
String |
安装前执行脚本
说明:
输入的值需要经过Base64编码,方法为echo -n "待编码内容" | base64。 |
postInstall |
否 |
String |
安装后执行脚本
说明:
输入的值需要经过Base64编码,方法为echo -n "待编码内容" | base64。 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
alpha.cce/NodeImageID |
否 |
String |
指定待切换目标操作系统所使用的用户镜像ID,已废弃。 指定此参数等价于指定ReinstallVolumeSpec中imageID,原取值将被覆盖。 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
type |
是 |
String |
K8S节点名称配置类型, 默认为“privateIp”。
说明:
|
响应参数
状态码: 200
参数 |
参数类型 |
描述 |
---|---|---|
jobid |
String |
提交任务成功后返回的任务ID,用户可以使用该ID对任务执行情况进行查询。 |
请求示例
纳管一个节点到集群中,且节点操作系统为EulerOS 2.5。
POST /api/v3/projects/{project_id}/clusters/{cluster_id}/nodes/add { "kind" : "List", "apiVersion" : "v3", "nodeList" : [ { "serverID" : "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "spec" : { "name" : "my-ecs-0001", "os" : "EulerOS 2.5", "login" : { "sshKey" : "KeyPair-001" } } } ] }
响应示例
状态码: 200
表示在指定集群下纳管节点的作业下发成功。
{ "jobid" : "2ec9b78d-9368-46f3-8f29-d1a95622a568" }
状态码
状态码 |
描述 |
---|---|
200 |
表示在指定集群下纳管节点的作业下发成功。 |
错误码
请参见错误码。