# 节点腾挪 - InplaceMigrateNode
#### 功能介绍
该API用于在指定集群下腾挪节点到另一集群。
![](https://support.huaweicloud.com/api-cce/public_sys-resources/note_3.0-zh-cn.png)
集群管理的URL格式为：https://Endpoint/uri。其中uri为资源路径，也即API访问的路径。
#### 接口约束
- 集群版本必须大于等于 v1.30.14-r100、v1.31.14-r60、v1.32.13-r30、v1.33.12-r10、v1.34.8-r10、v1.35.5-r10、v1.36.2-r0
  
- Everest插件版本必须在2.5.80版本及以上。
  
- 仅支持在同一租户、同一项目、同一集群类型的不同集群间进行节点腾挪，集群和节点的类型需完全一致。
  
- 腾挪的集群版本（包括集群小版本）必须完全一致。
  
- CCE Turbo集群和CCE Standard集群间不支持腾挪，网络类型需要保证完全一致。
  
- DEC集群和非DEC集群间不支持腾挪。
  
- IPv6的集群不支持腾挪。
  
- 只支持腾挪默认节点池内的节点，用户自定义节点池的节点不支持腾挪。
  
- 不支持超节点的腾挪。
  
- 不支持分布式集群节点的腾挪。
  
- 不支持同一VPC不同子网的集群的节点腾挪。
  
- 腾挪的节点不能配置额外的网卡，只能有一张主网卡。
  
- 物理机节点（裸金属服务器和共池裸机）原地迁移依赖相关机型支持VPC网络热切换，具体支持情况请与对应服务确认。
  
- 腾挪的节点必须处于运行中的状态。
  
- 腾挪时会强制清理节点上的容器资源，建议您在腾挪节点之前为节点排水，将工作负载迁移到其他节点，同时建议在业务低峰期操作。
  
- 节点上配置的容器运行时、kubelet、持久存储卷以及临时存储卷的数据在腾挪时会清理，如果有需要保留的数据请提前备份到其他节点或存储系统。
  
- 腾挪需要保证容器存储插件（Everest）的正常运行，且 everest-csi-controller 的Pod不在腾挪节点上。
  
- 节点腾挪不会清理操作系统的日志等信息和用户组件的相关信息，需要用户手动清理。
  
- 使用系统盘作为系统组件存储时，节点迁移的时间成本会随着数据量的增大而显著增加。
  
- 节点上如果挂载了多块存储盘时，节点迁移的时间成本会随着磁盘数量的增多而增加。
  
- 腾挪的按需计费节点在删除集群或者删除节点时，会同步删除对应的ECS或者BMS资源，如果需要保留，请提前将节点从集群移除。
  
- 节点使用Docker作为容器运行时，腾挪的耗时会比Containerd要长，优先使用Containerd作为容器运行时。
  
- 腾挪时需要保证节点上需要卸载的磁盘目录不要被人工占用，否则会导致腾挪失败。目录包括：/mnt/paas、/var/lib/docker、/var/lib/containerd，以及您配置的需要清理的数据盘所挂载的目录。
  
- 腾挪后，原集群节点配置的标签和污点不会继承，需要腾挪到新集群后重新配置。
  
- 操作过程中可能存在非预期风险，请提前做好相关的数据备份。
  
- 操作过程中，原集群节点会处于删除状态，目的集群节点会处于安装状态。
  
 
#### 调用方法
请参见[如何调用API](https://support.huaweicloud.com/api-cce/cce_02_0099.html)。
#### 授权信息
账号具备所有API的调用权限，如果使用账号下的IAM用户调用当前API，该IAM用户需具备调用API所需的权限。
- 如果使用角色与策略授权，具体权限要求请参见[权限和授权项](https://support.huaweicloud.com/api-cce/cce_02_0395.html)。
- 如果使用身份策略授权，当前API调用无需身份策略权限。
 
#### URI
POST /api/v3/projects/{project_id}/clusters/{cluster_id}/nodes/operation/in-place-migrateto/{target_cluster_id}
表1路径参数 
| 参数                | 是否必选 | 参数类型   | 描述                                                                                                                                                                                                                                                                                                                                                                                          |
|:---|:---|:---|:---|
| project_id        | 是    | String | **参数解释：** 项目ID，获取方式请参见[如何获取接口URI中参数](https://support.huaweicloud.com/api-cce/cce_02_0271.html)。 **约束限制：** 不涉及 **取值范围：** 账号的项目ID **默认取值：** 不涉及 |
| cluster_id        | 是    | String | **参数解释：** 集群ID，获取方式请参见[如何获取接口URI中参数](https://support.huaweicloud.com/api-cce/cce_02_0271.html)。 **约束限制：** 不涉及 **取值范围：** 集群ID **默认取值：** 不涉及    |
| target_cluster_id | 是    | String | **参数解释**： 集群ID，获取方式请参见[如何获取接口URI中参数](https://support.huaweicloud.com/api-cce/cce_02_0271.html)。 **约束限制**： 不涉及 **取值范围**： 不涉及 **默认取值**： 不涉及     |
   
#### 请求参数
表2请求Header参数 
| 参数           | 是否必选 | 参数类型   | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                     |
|:---|:---|:---|:---|
| Content-Type | 是    | String | **参数解释：** 消息体的类型（格式），默认为application/json，有其他取值时会在具体接口中专门说明。 **约束限制：** GET方法不做校验 **取值范围：** 不涉及 **默认取值：** 不涉及                                                                              |
| X-Auth-Token | 是    | String | **参数解释：** 调用接口的认证方式分为Token和AK/SK两种，如果您使用的Token方式，此参数为必填，请填写Token的值，获取方式请参见[获取token](https://support.huaweicloud.com/api-cce/cce_02_0004.html)。 **约束限制：** 不涉及 **取值范围：** 不涉及 **默认取值：** 不涉及 |
   
表3请求Body参数 
| 参数         | 是否必选 | 参数类型                                                                                   | 描述                                                                                                                                                                                                                                                                                                                                |
|:---|:---|:---|:---|
| apiVersion | 否    | String                                                                                 | **参数解释**： API版本 **约束限制**： 固定值，不允许修改 **取值范围**： 不涉及 **默认取值**： v3                      |
| kind       | 否    | String                                                                                 | **参数解释**： API类型 **约束限制**： 固定值，不允许修改 **取值范围**： 不涉及 **默认取值**： InPlaceMigrateNodesTask |
| spec       | 是    | [InPlaceMigratetoNodesSpec] object | **参数解释**： 配置信息 **约束限制**： 不涉及                                                                                                                                                                                                |
| status     | 否    | [TaskStatus] object                               | **参数解释**： 任务状态 **约束限制**： 不涉及                                                                                                                                                                                                |
   
 表4InPlaceMigratetoNodesSpec 
| 参数                    | 是否必选 | 参数类型                                                                                           | 描述                                                                                                                                         |
|:---|:---|:---|:---|
| nodes                 | 是    | Array of [InplaceMigrateNodeItem] objects     | **参数解释**： 腾挪节点列表 **约束限制**： 不涉及       |
| dataDiskCleanUpOption | 否    | [DataDiskCleanUpOption] object                 | **参数解释**： 腾挪节点时的磁盘处理参数 **约束限制**： 不涉及 |
| extendParam           | 否    | [InPlaceMigrateNodeExtendParam] object | **参数解释**： 节点腾挪扩展参数 **约束限制**： 不涉及     |
   
 表5InplaceMigrateNodeItem 
| 参数  | 是否必选 | 参数类型   | 描述                                                                                                                                                                                                                                                                                                                                                                                          |
|:---|:---|:---|:---|
| uid | 是    | String | **参数解释**： 节点ID，节点ID获取方式请参见[如何获取接口URI中参数](https://support.huaweicloud.com/api-cce/cce_02_0271.html)。 **约束限制**： 不涉及 **取值范围**： 不涉及 **默认取值**： 不涉及 |
   
 表6DataDiskCleanUpOption 
| 参数        | 是否必选 | 参数类型    | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
|:---|:---|:---|:---|
| enable    | 否    | Boolean | **参数解释：** 该参数用于控制腾挪节点时，是否擦除节点的除系统盘外的数据盘。 **约束限制：** 不涉及 **取值范围：** - false：腾挪节点时，不擦除节点的除系统盘外的数据盘。   - true：腾挪节点时，擦除节点的除系统盘外的数据盘。    **默认取值：** false  |
| onFailure | 否    | String  | **参数解释：** 该参数用于控制腾挪节点时，擦除节点的数据盘失败时的处理策略。 **约束限制：** 不涉及 **取值范围：** - ignore：表示清理数据盘失败时忽略错误，继续执行。   - abort：表示清理数据盘失败时立即停止，并向上报错。    **默认取值：** ignore |
   
 表7InPlaceMigrateNodeExtendParam 
| 参数                    | 是否必选 | 参数类型    | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
|:---|:---|:---|:---|
| alpha.cce/preInstall  | 否    | String  | **参数解释**： 安装前执行脚本。 **约束限制**： 安装前/后执行脚本统一计算字符，转码后的字符总数不能超过10240。 输入的值需要经过Base64编码，方法如下： ``` echo -n "待编码内容" | base64 ``` **取值范围**： 不涉及 **默认取值**： 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| alpha.cce/postInstall | 否    | String  | **参数解释**： 安装后执行脚本。 **约束限制**： 安装前/后执行脚本统一计算字符，转码后的字符总数不能超过10240。 输入的值需要经过Base64编码，方法如下： ``` echo -n "待编码内容" | base64 ``` **取值范围**： 不涉及 **默认取值**： 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| waitPostInstallFinish | 否    | Boolean | **参数解释：** 该参数用于控制腾挪节点时， **post-install脚本执行完成前允许节点调度** 的行为。当该参数未设置或者为false时，在kubernetes节点就绪时，容器即可被调度到可用节点。当该参数为true时，在kubernetes节点就绪时且post-install脚本执行完成时，容器才可被调度到可用节点。 **约束限制：** 不涉及 **取值范围：** - false：在kubernetes节点就绪时，容器即可被调度到可用节点。   - true：在kubernetes节点就绪时且post-install脚本执行完成时，容器才可被调度到可用节点。    **默认取值：** false |
   
 表8TaskStatus 
| 参数    | 是否必选 | 参数类型   | 描述                                                                                                                                                                                                                                                                                                                                                                                                 |
|:---|:---|:---|:---|
| jobID | 否    | String | **参数解释**： 任务ID，供调用者查询任务进度。获取方式请参见[如何获取接口URI中参数](https://support.huaweicloud.com/api-cce/cce_02_0271.html)。 **约束限制**： 不涉及 **取值范围**： 不涉及 **默认取值**： 不涉及 |
   
#### 响应参数
**状态码：200**
表9响应Body参数 
| 参数         | 参数类型                                                                                    | 描述                                                                                                                                  |
|:---|:---|:---|
| apiVersion | String                                                                                  | **参数解释**： API版本 **取值范围**： 不涉及 |
| kind       | String                                                                                  | **参数解释**： API类型 **取值范围**： 不涉及 |
| spec       | [InPlaceMigratetoNodesSpec] object | **参数解释**： 配置信息                                                                                    |
| status     | [TaskStatus] object                               | **参数解释**： 任务状态                                                                                    |
   
 表10InPlaceMigratetoNodesSpec 
| 参数                    | 参数类型                                                                                            | 描述                                                       |
|:---|:---|:---|
| nodes                 | Array of [InplaceMigrateNodeItem] objects     | **参数解释**： 腾挪节点列表       |
| dataDiskCleanUpOption | [DataDiskCleanUpOption] object                 | **参数解释**： 腾挪节点时的磁盘处理参数 |
| extendParam           | [InPlaceMigrateNodeExtendParam] object | **参数解释**： 节点腾挪扩展参数     |
   
 表11InplaceMigrateNodeItem 
| 参数  | 参数类型   | 描述                                                                                                                                                                                                                      |
|:---|:---|:---|
| uid | String | **参数解释**： 节点ID，节点ID获取方式请参见[如何获取接口URI中参数](https://support.huaweicloud.com/api-cce/cce_02_0271.html)。 **取值范围**： 不涉及 |
   
 表12DataDiskCleanUpOption 
| 参数        | 参数类型    | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
|:---|:---|:---|
| enable    | Boolean | **参数解释：** 该参数用于控制腾挪节点时，是否擦除节点的除系统盘外的数据盘。 **取值范围：** - false：腾挪节点时，不擦除节点的除系统盘外的数据盘。   - true：腾挪节点时，擦除节点的除系统盘外的数据盘。    |
| onFailure | String  | **参数解释：** 该参数用于控制腾挪节点时，擦除节点的数据盘失败时的处理策略。 **取值范围：** - ignore：表示清理数据盘失败时忽略错误，继续执行。   - abort：表示清理数据盘失败时立即停止，并向上报错。    |
   
 表13InPlaceMigrateNodeExtendParam 
| 参数                    | 参数类型    | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
|:---|:---|:---|
| alpha.cce/preInstall  | String  | **参数解释**： 安装前执行脚本。 **取值范围**： 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| alpha.cce/postInstall | String  | **参数解释**： 安装后执行脚本。 **取值范围**： 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| waitPostInstallFinish | Boolean | **参数解释：** 该参数用于控制腾挪节点时， **post-install脚本执行完成前允许节点调度** 的行为。当该参数未设置或者为false时，在kubernetes节点就绪时，容器即可被调度到可用节点。当该参数为true时，在kubernetes节点就绪时且post-install脚本执行完成时，容器才可被调度到可用节点。 **取值范围：** - false：在kubernetes节点就绪时，容器即可被调度到可用节点。   - true：在kubernetes节点就绪时且post-install脚本执行完成时，容器才可被调度到可用节点。    |
   
 表14TaskStatus 
| 参数    | 参数类型   | 描述                                                                                                                                                                                                                             |
|:---|:---|:---|
| jobID | String | **参数解释**： 任务ID，供调用者查询任务进度。获取方式请参见[如何获取接口URI中参数](https://support.huaweicloud.com/api-cce/cce_02_0271.html)。 **取值范围**： 不涉及 |
   
#### 请求示例
腾挪一个节点到另一个集群中。
```
POST /api/v3/projects/{project_id}/clusters/{cluster_id}/nodes/operation/in-place-migrateto/{target_cluster_id}
{
  "spec" : {
    "dataDiskCleanUpOption" : {
      "enable" : true,
      "onFailure" : "ignore"
    },
    "nodes" : [ {
      "uid" : "d30a28c2-8402-11f1-be5d-0255ac1000f3"
    } ],
    "extendParam" : {
      "waitPostInstallFinish" : false,
      "alpha.cce/preInstall" : "",
      "alpha.cce/postInstall" : ""
    }
  }
}
```
#### 响应示例
**状态码：200**
```
{
  "kind" : "InPlaceMigrateNodesTask",
  "apiVersion" : "v3",
  "spec" : {
    "nodes" : [ {
      "uid" : "d30a28c2-8402-11f1-be5d-0255ac1000f3"
    } ],
    "dataDiskCleanUpOption" : {
      "enable" : true,
      "onFailure" : "ignore"
    },
    "extendParam" : { }
  },
  "status" : {
    "jobID" : "3f01b88d-8403-11f1-be5d-0255ac1000f3"
  }
}
```
#### 状态码
| 状态码 | 描述                        |
|:---|:---|
| 200 | 表示在指定集群下腾挪节点至另一集群的作业下发成功。 |
   
#### 错误码
请参见[错误码](https://support.huaweicloud.com/api-cce/ErrorCode.html)。
