更新时间:2026-04-07 GMT+08:00

节点迁移

功能介绍

该API用于在指定集群下迁移节点到另一集群。

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

接口约束

  • 仅支持在同一VPC、同一项目下的不同集群间进行迁移。

  • CCE Turbo集群和CCE Standard集群间不支持互迁。

  • DEC集群和非DEC集群间不支持互迁。

  • 开启IPv6开关和未开启IPv6开关的集群间不支持互迁。

  • 只支持迁移到目标集群的默认节点池内。

  • 不支持单系统盘节点迁移。

调用方法

请参见如何调用API。

URI

PUT /api/v3/projects/{project_id}/clusters/{cluster_id}/nodes/operation/migrateto/{target_cluster_id}

表1 路径参数

参数

是否必选

参数类型

描述

project_id

是

String

参数解释:

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

约束限制:

不涉及

取值范围:

账号的项目ID

默认取值:

不涉及

cluster_id

是

String

参数解释:

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

约束限制:

不涉及

取值范围:

集群ID

默认取值:

不涉及

target_cluster_id

是

String

参数解释:

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

约束限制:

不涉及

取值范围:

不涉及

默认取值:

不涉及

请求参数

表2 请求Header参数

参数

是否必选

参数类型

描述

Content-Type

是

String

参数解释:

消息体的类型(格式)

约束限制:

GET方法不做校验

取值范围:

  • application/json

  • application/json;charset=utf-8

  • application/x-pem-file

  • multipart/form-data(注:存在FormData参数时使用)

默认取值:

不涉及

X-Auth-Token

是

String

参数解释:

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

约束限制:

不涉及

取值范围:

不涉及

默认取值:

不涉及

表3 请求Body参数

参数

是否必选

参数类型

描述

apiVersion

否

String

参数解释:

API版本

约束限制:

固定值,不允许修改

取值范围:

不涉及

默认取值:

v3

kind

否

String

参数解释:

API类型

约束限制:

固定值,不允许修改

取值范围:

不涉及

默认取值:

MigrateNodesTask

spec

是

MigrateNodesSpec object

参数解释:

配置信息

约束限制:

不涉及

表4 MigrateNodesSpec

参数

是否必选

参数类型

描述

os

是

String

参数解释:

操作系统类型,须精确到版本号。例:Huawei Cloud EulerOS 2.0。具体支持的操作系统请参见节点操作系统说明。

约束限制:

当指定“alpha.cce/NodeImageID”参数时,“os”参数必须和用户自定义镜像的操作系统一致。

取值范围:

不涉及

默认取值:

不涉及

extendParam

否

MigrateNodeExtendParam object

参数解释:

迁移节点时的扩展参数

约束限制:

不涉及

login

否

Login object

参数解释:

节点的登录方式。不配置将保留所选择镜像的密码,为了保证您的正常使用,请确保所选择镜像中已经设置了密码。密钥对和密码登录方式二者必选其一。

约束限制:

不涉及

runtime

否

Runtime object

参数解释:

容器运行时

约束限制:

不涉及

serverConfig

否

MigrateServerConfig object

参数解释:

服务器配置

约束限制:

不涉及

nodes

是

Array of NodeItem objects

参数解释:

待操作节点列表,当前最多支持同时迁移200个节点。

约束限制:

不涉及

表5 MigrateNodeExtendParam

参数

是否必选

参数类型

描述

maxPods

否

Integer

参数解释:

节点最大允许创建的实例数(Pod),该数量包含系统默认实例。

该设置的目的为防止节点因管理过多实例而负载过重,请根据您的业务需要进行设置。

节点可以创建多少个Pod,受多个参数影响,具体请参见节点可创建的最大Pod数量说明。

约束限制:

不涉及

取值范围:

取值范围为16~256。

默认取值:

不涉及

DockerLVMConfigOverride

否

String

参数解释:

Docker数据盘配置项。

待迁移节点的磁盘类型须和创建时一致(即“DockerLVMConfigOverride”参数中“diskType”字段的值须和创建时一致),请确保单次接口调用时批量选择的节点磁盘类型一致。

默认配置示例如下:

"DockerLVMConfigOverride":"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

默认取值:

不涉及

alpha.cce/preInstall

否

String

参数解释:

安装前执行脚本。

约束限制:

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

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

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

取值范围:

不涉及

默认取值:

不涉及

alpha.cce/postInstall

否

String

参数解释:

安装后执行脚本。

约束限制:

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

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

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

取值范围:

不涉及

默认取值:

不涉及

alpha.cce/NodeImageID

否

String

参数解释:

指定待切换目标操作系统所使用的用户镜像ID。

说明:
当指定“alpha.cce/NodeImageID”参数时,“os”参数必须和用户自定义镜像的操作系统一致。

约束限制:

不涉及

取值范围:

不涉及

默认取值:

不涉及

表6 Login

参数

是否必选

参数类型

描述

sshKey

否

String

参数解释:

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

约束限制:

不涉及

取值范围:

不涉及

默认取值:

不涉及

userPassword

否

UserPassword object

参数解释:

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

约束限制:

不涉及

removeUserPassword

否

Boolean

参数解释:

更新节点池时,移除当前节点池密码方式登录的配置

约束限制:

仅更新节点池场景支持该参数,设置为true时不允许设置userPassword

取值范围:

不涉及

默认取值:

false

removeSSHKey

否

Boolean

参数解释:

更新节点池时,移除当前节点池密钥对方式登录的配置

约束限制:

仅更新节点池场景支持该参数,设置为true时不允许设置sshKey

取值范围:

不涉及

默认取值:

false

表7 UserPassword

参数

是否必选

参数类型

描述

username

否

String

参数解释:

登录账号,默认为“root”。

约束限制:

不涉及

取值范围:

不涉及

默认取值:

root。

password

是

String

参数解释:

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

约束限制:

创建节点时password字段需要加盐加密,具体方法请参见创建节点时password字段加盐加密。

取值范围:

密码复杂度要求:

  • 长度为8-26位。

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

  • 密码不能包含用户名或用户名的逆序。

默认取值:

不涉及

表8 Runtime

参数

是否必选

参数类型

描述

name

否

String

参数解释:

容器运行时。

约束限制:

不涉及

取值范围:

不涉及

默认取值:

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

  • v1.25及以上集群,随操作系统变化,默认的容器运行时不同;

  • 操作系统为EulerOS 2.5的节点默认为"docker",其余操作系统的节点默认为"containerd"。

表9 MigrateServerConfig

参数

是否必选

参数类型

描述

rootVolume

否

MigrateVolumeSpec object

参数解释:

系统盘重装配置

约束限制:

不涉及

表10 MigrateVolumeSpec

参数

是否必选

参数类型

描述

cmkID

否

String

参数解释:

用户主密钥ID。

约束限制:

不涉及

取值范围:

不涉及

默认取值:

默认为空,表示云硬盘不加密。

表11 NodeItem

参数

是否必选

参数类型

描述

uid

是

String

参数解释:

节点ID,节点ID获取方式请参见如何获取接口URI中参数。

约束限制:

不涉及

取值范围:

不涉及

默认取值:

不涉及

响应参数

状态码:200

表12 响应Body参数

参数

参数类型

描述

apiVersion

String

参数解释:

API版本

约束限制:

固定值,不允许修改

取值范围:

不涉及

默认取值:

v3

kind

String

参数解释:

API类型

约束限制:

固定值,不允许修改

取值范围:

不涉及

默认取值:

MigrateNodesTask

spec

MigrateNodesSpec object

参数解释:

配置信息

约束限制:

不涉及

status

TaskStatus object

参数解释:

任务状态

约束限制:

不涉及

表13 MigrateNodesSpec

参数

参数类型

描述

os

String

参数解释:

操作系统类型,须精确到版本号。例:Huawei Cloud EulerOS 2.0。具体支持的操作系统请参见节点操作系统说明。

约束限制:

当指定“alpha.cce/NodeImageID”参数时,“os”参数必须和用户自定义镜像的操作系统一致。

取值范围:

不涉及

默认取值:

不涉及

extendParam

MigrateNodeExtendParam object

参数解释:

迁移节点时的扩展参数

约束限制:

不涉及

login

Login object

参数解释:

节点的登录方式。不配置将保留所选择镜像的密码,为了保证您的正常使用,请确保所选择镜像中已经设置了密码。密钥对和密码登录方式二者必选其一。

约束限制:

不涉及

runtime

Runtime object

参数解释:

容器运行时

约束限制:

不涉及

serverConfig

MigrateServerConfig object

参数解释:

服务器配置

约束限制:

不涉及

nodes

Array of NodeItem objects

参数解释:

待操作节点列表,当前最多支持同时迁移200个节点。

约束限制:

不涉及

表14 MigrateNodeExtendParam

参数

参数类型

描述

maxPods

Integer

参数解释:

节点最大允许创建的实例数(Pod),该数量包含系统默认实例。

该设置的目的为防止节点因管理过多实例而负载过重,请根据您的业务需要进行设置。

节点可以创建多少个Pod,受多个参数影响,具体请参见节点可创建的最大Pod数量说明。

约束限制:

不涉及

取值范围:

取值范围为16~256。

默认取值:

不涉及

DockerLVMConfigOverride

String

参数解释:

Docker数据盘配置项。

待迁移节点的磁盘类型须和创建时一致(即“DockerLVMConfigOverride”参数中“diskType”字段的值须和创建时一致),请确保单次接口调用时批量选择的节点磁盘类型一致。

默认配置示例如下:

"DockerLVMConfigOverride":"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

默认取值:

不涉及

alpha.cce/preInstall

String

参数解释:

安装前执行脚本。

约束限制:

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

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

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

取值范围:

不涉及

默认取值:

不涉及

alpha.cce/postInstall

String

参数解释:

安装后执行脚本。

约束限制:

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

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

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

取值范围:

不涉及

默认取值:

不涉及

alpha.cce/NodeImageID

String

参数解释:

指定待切换目标操作系统所使用的用户镜像ID。

说明:
当指定“alpha.cce/NodeImageID”参数时,“os”参数必须和用户自定义镜像的操作系统一致。

约束限制:

不涉及

取值范围:

不涉及

默认取值:

不涉及

表15 Login

参数

参数类型

描述

sshKey

String

参数解释:

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

约束限制:

不涉及

取值范围:

不涉及

默认取值:

不涉及

userPassword

UserPassword object

参数解释:

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

约束限制:

不涉及

removeUserPassword

Boolean

参数解释:

更新节点池时,移除当前节点池密码方式登录的配置

约束限制:

仅更新节点池场景支持该参数,设置为true时不允许设置userPassword

取值范围:

不涉及

默认取值:

false

removeSSHKey

Boolean

参数解释:

更新节点池时,移除当前节点池密钥对方式登录的配置

约束限制:

仅更新节点池场景支持该参数,设置为true时不允许设置sshKey

取值范围:

不涉及

默认取值:

false

表16 UserPassword

参数

参数类型

描述

username

String

参数解释:

登录账号,默认为“root”。

约束限制:

不涉及

取值范围:

不涉及

默认取值:

root。

password

String

参数解释:

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

约束限制:

创建节点时password字段需要加盐加密,具体方法请参见创建节点时password字段加盐加密。

取值范围:

密码复杂度要求:

  • 长度为8-26位。

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

  • 密码不能包含用户名或用户名的逆序。

默认取值:

不涉及

表17 Runtime

参数

参数类型

描述

name

String

参数解释:

容器运行时。

约束限制:

不涉及

取值范围:

不涉及

默认取值:

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

  • v1.25及以上集群,随操作系统变化,默认的容器运行时不同;

  • 操作系统为EulerOS 2.5的节点默认为"docker",其余操作系统的节点默认为"containerd"。

表18 MigrateServerConfig

参数

参数类型

描述

rootVolume

MigrateVolumeSpec object

参数解释:

系统盘重装配置

约束限制:

不涉及

表19 MigrateVolumeSpec

参数

参数类型

描述

cmkID

String

参数解释:

用户主密钥ID。

约束限制:

不涉及

取值范围:

不涉及

默认取值:

默认为空,表示云硬盘不加密。

表20 NodeItem

参数

参数类型

描述

uid

String

参数解释:

节点ID,节点ID获取方式请参见如何获取接口URI中参数。

约束限制:

不涉及

取值范围:

不涉及

默认取值:

不涉及

表21 TaskStatus

参数

参数类型

描述

jobID

String

参数解释:

任务ID,供调用者查询任务进度。获取方式请参见如何获取接口URI中参数。

约束限制:

不涉及

取值范围:

不涉及

默认取值:

不涉及

请求示例

  • 迁移一个节点到另一个集群中,且节点操作系统为EulerOS 2.5。

    PUT /api/v3/projects/{project_id}/clusters/{cluster_id}/nodes/operation/migrateto/{target_cluster_id}
    
    {
      "spec" : {
        "os" : "EulerOS 2.5",
        "login" : {
          "sshKey" : "KeyPair-001"
        },
        "nodes" : [ {
          "uid" : "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
        }, {
          "uid" : "yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy"
        } ]
      }
    }
  • 迁移一个节点到另一个集群中,且节点操作系统为EulerOS 2.5,并指定用户镜像ID。

    PUT /api/v3/projects/{project_id}/clusters/{cluster_id}/nodes/operation/migrateto/{target_cluster_id}
    
    {
      "spec" : {
        "os" : "EulerOS 2.5",
        "extendParam" : {
          "alpha.cce/NodeImageID" : "cc697ad7-9563-11e8-8ea7-0255ac106311"
        },
        "login" : {
          "sshKey" : "KeyPair-001"
        },
        "nodes" : [ {
          "uid" : "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
        }, {
          "uid" : "yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy"
        } ]
      }
    }

响应示例

状态码:200

表示在指定集群下迁移节点至另一集群的作业下发成功。

{
  "spec" : {
    "os" : "EulerOS 2.5",
    "login" : {
      "sshKey" : "KeyPair-001"
    },
    "runtime" : {
      "name" : "docker"
    },
    "nodes" : [ {
      "uid" : "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
    }, {
      "uid" : "yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy"
    } ],
    "serverConfig" : {
      "rootVolume" : {
        "cmkID" : "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
      }
    }
  },
  "status" : {
    "jobID" : "2ec9b78d-9368-46f3-8f29-d1a95622a568"
  }
}

状态码

状态码

描述

200

表示在指定集群下迁移节点至另一集群的作业下发成功。

错误码

请参见错误码。