更新时间:2025-05-16 GMT+08:00

纳管节点

功能介绍

该API用于在指定集群下纳管节点。

集群管理的URL格式为:https://Endpoint/uri。其中uri为资源路径,也即API访问的路径。

接口约束

  • 纳管节点支持ECS(弹性云服务器)节点、BMS(裸金属服务器)节点以及DeH(专属主机)节点。

  • 待纳管节点必须状态为“运行中”,未被其他集群所使用,且不携带 CCE 专属节点标签CCE-Dynamic-Provisioning-Node。

  • 待纳管节点需与集群在同一虚拟私有云内(若集群版本低于1.13.10,纳管节点还需要与CCE集群在同一子网内)。

  • 待纳管节点需挂载数据盘,可使用本地盘(磁盘增强型实例)或至少挂载一块20GiB及以上的数据盘,且不存在10GiB以下的数据盘。

  • 待纳管节点规格要求:CPU必须2核及以上,内存必须4GiB及以上,网卡有且仅能有一个。

  • 如果使用了企业项目,则待纳管节点需要和集群在同一企业项目下,不然在纳管时会识别不到资源,导致无法纳管。从v1.21.15-r0、v1.23.14-r0、v1.25.9-r0、v1.27.6-r0、v1.28.4-r0集群版本开始,待纳管节点无需和集群在同一企业项目下,纳管后节点的企业项目保持不变。

  • 批量纳管仅支持添加相同规格、相同可用区、相同数据盘配置的云服务器。

  • 集群开启IPv6后,只支持纳管所在的子网开启了IPv6功能的节点;集群未开启IPv6,只支持纳管所在的子网未开启IPv6功能的节点。

  • CCE Turbo集群要求节点支持Sub-ENI或可以绑定至少16张ENI网卡,具体规格请参见创建节点时控制台上可以选择的节点规格。

  • 纳管节点时已分区的数据盘会被忽略,您需要保证节点至少有一个未分区且符合规格的数据盘。

URI

POST /api/v3/projects/{project_id}/clusters/{cluster_id}/nodes/add

表1 路径参数

参数

是否必选

参数类型

描述

project_id

String

项目ID,获取方式请参见如何获取接口URI中参数

cluster_id

String

集群ID,获取方式请参见如何获取接口URI中参数

请求参数

表2 请求Header参数

参数

是否必选

参数类型

描述

Content-Type

String

消息体的类型(格式)

X-Auth-Token

String

调用接口的认证方式分为Token和AK/SK两种,如果您使用的Token方式,此参数为必填,请填写Token的值,获取方式请参见获取token

表3 请求Body参数

参数

是否必选

参数类型

描述

apiVersion

String

API版本,固定值“v3”。

kind

String

API类型,固定值“List”。

nodeList

Array of AddNode objects

纳管节点列表,当前最多支持同时纳管200个节点。

表4 AddNode

参数

是否必选

参数类型

描述

serverID

String

服务器ID,从ECS/BMS控制台获取。

spec

ReinstallNodeSpec object

节点重装配置参数。当前不支持纳管节点接入节点池。

表5 ReinstallNodeSpec

参数

是否必选

参数类型

描述

os

String

操作系统。指定自定义镜像场景将以IMS镜像的实际操作系统版本为准。请选择当前集群支持的操作系统版本。

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,认为节点初始化完成,则移除初始化污点。

  • 必须以字母、数字组成,长度范围1-20位。

  • 标记数量不超过2个

extendParam

ReinstallExtendParam object

重装拓展参数,已废弃

hostnameConfig

HostnameConfig object

K8S节点名称配置参数,支持的集群版本为v1.23.6-r0到v1.25或者v1.25.2-r0及以上。

表6 Login

参数

是否必选

参数类型

描述

sshKey

String

选择密钥对方式登录时的密钥对名称。

userPassword

UserPassword object

选择密码方式登录时的账号密码信息,之后可通过此账号密码登录节点。

表7 UserPassword

参数

是否必选

参数类型

描述

username

String

登录账号,默认为“root”

password

String

登录密码,若创建节点通过用户名密码方式,即使用该字段,则响应体中该字段作屏蔽展示。 密码复杂度要求:

  • 长度为8-26位。

  • 密码至少必须包含大写字母、小写字母、数字和特殊字符(!@$%^-_=+[{}]:,./?)中的三种。

  • 密码不能包含用户名或用户名的逆序。 创建节点时password字段需要加盐加密,具体方法请参见创建节点时password字段加盐加密

表8 ReinstallServerConfig

参数

是否必选

参数类型

描述

userTags

Array of UserTag objects

云服务器标签(资源标签),键必须唯一,CCE支持的最大用户自定义标签数量依region而定,自定义标签数上限为8个。

rootVolume

ReinstallVolumeSpec object

系统盘重装配置

表9 UserTag

参数

是否必选

参数类型

描述

key

String

云服务器标签的键。不得以"CCE-"或"__type_baremetal"开头

value

String

云服务器标签的值

表10 ReinstallVolumeSpec

参数

是否必选

参数类型

描述

imageID

String

用户自定义镜像ID

cmkID

String

用户主密钥ID。默认为空时,表示云硬盘不加密。

表11 ReinstallVolumeConfig

参数

是否必选

参数类型

描述

lvmConfig

String

Docker数据盘配置项(已废弃)。

默认配置示例如下:

"lvmConfig":"dockerThinpool=vgpaas/90%VG;kubernetesLV=vgpaas/10%VG;diskType=evs;lvType=linear"

包含如下字段:

  • userLV:用户空间的大小,示例格式:vgpaas/20%VG

  • userPath:用户空间挂载路径,示例格式:/home/wqt-test

  • diskType:磁盘类型,目前只有evs、hdd和ssd三种格式

  • lvType:逻辑卷的类型,目前支持linear和striped两种,示例格式:striped

  • dockerThinpool:Docker盘的空间大小,示例格式:vgpaas/60%VG

  • kubernetesLV:Kubelet空间大小,示例格式:vgpaas/20%VG

storage

Storage object

磁盘初始化配置管理参数。

该参数配置逻辑较为复杂,详细说明请参见节点磁盘挂载

说明:
  • 如存在节点规格涉及本地盘并同时使用云硬盘场景时,请勿缺省此参数,避免出现将用户未期望的磁盘分区。

说明:
  • 如希望数据盘取值范围调整至20-32768,请勿缺省此参数。

说明:
  • 如希望使用共享磁盘空间(取消runtime和kubernetes分区),请勿缺省此参数,共享磁盘空间请参考数据盘空间分配说明

表12 Storage

参数

是否必选

参数类型

描述

storageSelectors

Array of StorageSelectors objects

磁盘选择,根据matchLabels和storageType对匹配的磁盘进行管理。磁盘匹配存在先后顺序,靠前的匹配规则优先匹配。

storageGroups

Array of StorageGroups objects

由多个存储设备组成的存储组,用于各个存储空间的划分。

表13 StorageSelectors

参数

是否必选

参数类型

描述

name

String

selector的名字,作为storageGroup中selectorNames的索引,因此各个selector间的名字不能重复。

storageType

String

存储类型,当前仅支持evs(云硬盘)或local(本地盘);local存储类型不支持磁盘选择,所有本地盘将被组成一个VG,因此也仅允许只有一个local类型的storageSelector。

matchLabels

matchLabels object

evs盘的匹配字段,支持DataVolume中的size、volumeType、metadataEncrypted、metadataCmkid、count字段。

表14 matchLabels

参数

是否必选

参数类型

描述

size

String

匹配的磁盘大小,不填则无磁盘大小限制。例如:100.

volumeType

String

云硬盘类型,目前支持SSD\GPSSD\SAS\ESSD\SATA等,不填则无云硬盘类型限制。

metadataEncrypted

String

磁盘加密标识符,0代表不加密,1代表加密,不填则无磁盘加密标识符限制。

metadataCmkid

String

加密磁盘的用户主密钥ID,长度为36字节的字符串,不填则无磁盘密钥ID限制。

count

String

磁盘选择个数,不填则选择所有此类磁盘。

表15 StorageGroups

参数

是否必选

参数类型

描述

name

String

storageGroups的名字,作为虚拟存储组的名字,因此各个group名字不能重复。

说明:
  • 当cceManaged=true时,name必须为:vgpaas。

  • 当数据盘作为临时存储卷时:name必须为:vg-everest-localvolume-ephemeral。

  • 当数据盘作为持久存储卷时:name必须为:vg-everest-localvolume-persistent。

cceManaged

Boolean

k8s及runtime所属存储空间。有且仅有一个group被设置为true,不填默认false。

selectorNames

Array of strings

对应storageSelectors中的name,一个group可选择多个selector;但一个selector只能被一个group选择。

virtualSpaces

Array of VirtualSpace objects

group中空间配置的详细管理。

表16 VirtualSpace

参数

是否必选

参数类型

描述

name

String

virtualSpace的名称,当前仅支持四种类型:share、kubernetes、runtime、user。

  • share:共享磁盘空间配置(取消runtime和kubernetes分区),需配置lvmConfig;

  • kubernetes:k8s空间配置,需配置lvmConfig;

  • runtime:运行时空间配置,需配置runtimeConfig;

  • user:用户空间配置,需配置lvmConfig

size

String

virtualSpace的大小,仅支持整数百分比。例如:90%。

说明:

该参数取值范围[10-90],一个group中所有virtualSpace的百分比之和不得超过100%

lvmConfig

LVMConfig object

lvm配置管理,适用于share、kubernetes和user空间配置。 需要注意:一个virtualSpace仅支持一个config配置。

runtimeConfig

RuntimeConfig object

runtime配置管理,适用于运行时空间配置。 需要注意:一个virtualSpace仅支持一个config配置。

表17 LVMConfig

参数

是否必选

参数类型

描述

lvType

String

LVM写入模式:linear、striped。linear:线性模式;striped:条带模式,使用多块磁盘组成条带模式,能够提升磁盘性能。

path

String

磁盘挂载路径。仅在用户配置中生效。支持包含:数字、大小写字母、点、中划线、下划线的绝对路径。

说明:

挂载路径请填写业务目录路径,不可设置为空或根目录等操作系统关键路径。不可填写的操作系统关键路径如下: /, /home, /home/, /bin, /bin/, /lib, /lib/, /root, /root/, /boot, /boot/, /dev, /dev/, /etc, /etc/, /lost+found, /lost+found/, /mnt, /mnt/, /proc, /proc/,/sbin, /sbin/, /srv, /srv/, /tmp, /tmp/, /var, /var/, /media, /media/, /opt, /opt/, /selinux, /selinux/, /sys, /sys/, /usr, /usr/, /opt/cloud/, /mnt/paas/, /home/paas/, /var/paas/, /var/lib/, /var/script/

表18 RuntimeConfig

参数

是否必选

参数类型

描述

lvType

String

LVM写入模式:linear、striped。linear:线性模式;striped:条带模式,使用多块磁盘组成条带模式,能够提升磁盘性能。

表19 ReinstallRuntimeConfig

参数

是否必选

参数类型

描述

dockerBaseSize

Integer

节点上单容器的可用磁盘空间大小(已废弃,请优先使用containerBaseSize参数),单位G。

不配置该值或值为0时将使用默认值,Devicemapper模式下默认值为10;OverlayFS模式默认不限制单容器可用空间大小,且dockerBaseSize设置仅在新版本集群的EulerOS节点上生效。

CCE节点容器运行时空间配置请参考数据盘空间分配说明

Devicemapper模式下建议dockerBaseSize配置不超过80G,设置过大时可能会导致容器运行时初始化时间过长而启动失败,若对容器磁盘大小有特殊要求,可考虑使用挂载外部或本地存储方式代替。

containerBaseSize

Integer

节点上单容器的可用磁盘空间大小,单位G。

不配置该值或值为0时将使用默认值,OverlayFS模式默认不限制单容器可用空间大小;Devicemapper模式下默认值为10,且containerBaseSize设置仅在新版本集群(v1.23.14-r0/v1.25.9-r0/v1.27.6-r0/v1.28.4-r0及以上)的EulerOS节点上生效。

CCE节点容器运行时空间配置请参考数据盘空间分配说明

Devicemapper模式下建议containerBaseSize配置不超过80G,设置过大时可能会导致容器运行时初始化时间过长而启动失败,若对容器磁盘大小有特殊要求,可考虑使用挂载外部或本地存储方式代替;Devicemapper模式在新版中仅有共池裸机使用,已逐步废弃。

说明:

更新节点池时,不支持更新此参数

runtime

Runtime object

容器运行时, 默认场景:

  • 1.25以下集群:默认为"docker"

  • 1.25及以上集群,随操作系统变化,默认的容器运行时不同:操作系统为欧拉2.5的节点仅支持"docker",其余操作系统的节点默认为"containerd"

表20 Runtime

参数

是否必选

参数类型

描述

name

String

容器运行时,默认场景:

  • v1.25以下集群:默认为"docker"

  • v1.25及以上集群,随操作系统变化,默认的容器运行时不同:操作系统为EulerOS 2.5的节点默认为"docker",其余操作系统的节点默认为"containerd"

表21 ReinstallK8sOptionsConfig

参数

是否必选

参数类型

描述

labels

Map<String,String>

格式为key/value键值对。键值对个数不超过20条。

  • Key:必须以字母或数字开头,可以包含字母、数字、连字符、下划线和点,最长63个字符;另外可以使用DNS子域作为前缀,例如example.com/my-key,DNS子域最长253个字符。

  • Value:可以为空或者非空字符串,非空字符串必须以字符或数字开头和结尾,可以包含字母、数字、连字符、下划线和点,最长63个字符。

示例:

"k8sTags": {
  "key": "value"
}

taints

Array of Taint objects

支持给创建出来的节点加Taints来设置反亲和性,taints配置不超过20条。每条Taints包含以下3个参数:

  • Key:必须以字母或数字开头和结尾,可以包含字母、数字、连字符、下划线和点,最长63个字符;另外可以使用DNS子域作为前缀。

  • Value:必须以字符或数字开头和结尾,可以包含字母、数字、连字符、下划线和点,最长63个字符。

  • Effect:只可选NoSchedule,PreferNoSchedule或NoExecute。

示例:

"taints": [{
  "key": "status",
  "value": "unavailable",
  "effect": "NoSchedule"
}, {
  "key": "looks",
  "value": "bad",
  "effect": "NoSchedule"
}]

maxPods

Integer

节点最大允许创建的实例数(Pod),该数量包含系统默认实例,取值范围为16~256。 该设置的目的为防止节点因管理过多实例而负载过重,请根据您的业务需要进行设置。

表22 Taint

参数

是否必选

参数类型

描述

key

String

value

String

effect

String

作用效果

表23 NodeLifecycleConfig

参数

是否必选

参数类型

描述

preInstall

String

安装前执行脚本,转码后的字符总数不能超过10240。

说明:

输入的值需要经过Base64编码,方法如下:

echo -n "待编码内容" | base64

postInstall

String

安装后执行脚本,转码后的字符总数不能超过10240。

说明:

输入的值需要经过Base64编码,方法如下:

echo -n "待编码内容" | base64
表24 ReinstallExtendParam

参数

是否必选

参数类型

描述

alpha.cce/NodeImageID

String

指定待切换目标操作系统所使用的用户镜像ID,已废弃。 指定此参数等价于指定ReinstallVolumeSpec中imageID,原取值将被覆盖。

表25 HostnameConfig

参数

是否必选

参数类型

描述

type

String

K8S节点名称配置类型, 默认为“privateIp”。

  • privateIp: 将节点私有IP作为K8S节点名称

  • cceNodeName: 将CCE节点名称作为K8S节点名称

说明:
  • 配置为cceNodeName的节点, 其节点名称、K8S节点名称以及虚机名称相同。节点名称不支持修改, 并且在ECS侧修改了虚机名称,同步云服务器时,不会将修改后的虚机名称同步到节点。

  • 配置为cceNodeName的节点,为了避免K8S节点名称冲突,系统会自动在节点名称后添加后缀,后缀的格式为中划线(-)+五位随机字符,随机字符的取值为[a-z0-9]。

响应参数

状态码: 200

表26 响应Body参数

参数

参数类型

描述

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

表示在指定集群下纳管节点的作业下发成功。

错误码

请参见错误码