:original_name: MigrateNode.html
.. _MigrateNode:
Migrating a Node
================
Function
--------
This API is used to migrate a node from a specified cluster to another cluster (both clusters must in the same VPC). Physical nodes of the ECS service in a CCE Turbo cluster cannot be migrated.
.. note::
The URL for cluster management is in the format of \**https://Endpoint/uri, in which *uri* indicates the resource path, that is, the path for API access.
URI
---
PUT /api/v3/projects/{project_id}/clusters/{cluster_id}/nodes/operation/migrateto/{target_cluster_id}
.. table:: **Table 1** Path Parameters
+-------------------+-----------+--------+--------------------------------------------------------------------------------------------------------------------------+
| Parameter | Mandatory | Type | Description |
+===================+===========+========+==========================================================================================================================+
| project_id | Yes | String | Project ID. For details about how to obtain the value, see :ref:`How to Obtain Parameters in the API URI `. |
+-------------------+-----------+--------+--------------------------------------------------------------------------------------------------------------------------+
| cluster_id | Yes | String | Cluster ID. For details about how to obtain the value, see :ref:`How to Obtain Parameters in the API URI `. |
+-------------------+-----------+--------+--------------------------------------------------------------------------------------------------------------------------+
| target_cluster_id | Yes | String | Cluster ID. For details about how to obtain the value, see :ref:`How to Obtain Parameters in the API URI `. |
+-------------------+-----------+--------+--------------------------------------------------------------------------------------------------------------------------+
Request Parameters
------------------
.. table:: **Table 2** Request header parameters
+--------------+-----------+--------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Parameter | Mandatory | Type | Description |
+==============+===========+========+=================================================================================================================================================================================================================================================+
| Content-Type | Yes | String | Message body type (format). |
+--------------+-----------+--------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| X-Auth-Token | Yes | String | Requests for calling an API can be authenticated using either a token or AK/SK. If token-based authentication is used, this parameter is mandatory and must be set to a user token. For details, see :ref:`API Usage Guidelines `. |
+--------------+-----------+--------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
.. table:: **Table 3** Request body parameters
+------------+-----------+-----------------------------------------------------------------------------------------------------+-------------------------------------------------------+
| Parameter | Mandatory | Type | Description |
+============+===========+=====================================================================================================+=======================================================+
| apiVersion | No | String | API version. The value is fixed at **v3**. |
+------------+-----------+-----------------------------------------------------------------------------------------------------+-------------------------------------------------------+
| kind | No | String | API type. The value is fixed at **MigrateNodesTask**. |
+------------+-----------+-----------------------------------------------------------------------------------------------------+-------------------------------------------------------+
| spec | Yes | :ref:`MigrateNodesSpec ` object | Configuration data. |
+------------+-----------+-----------------------------------------------------------------------------------------------------+-------------------------------------------------------+
| status | No | :ref:`TaskStatus ` object | Job status. |
+------------+-----------+-----------------------------------------------------------------------------------------------------+-------------------------------------------------------+
.. _migratenode__en-us_topic_0000001467833433_request_migratenodesspec:
.. table:: **Table 4** MigrateNodesSpec
+-------------+-----------+-----------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Parameter | Mandatory | Type | Description |
+=============+===========+=================================================================================================================+=======================================================================================================================================================================================+
| os | Yes | String | Operating system type, which must be accurate to the version number. When **alpha.cce/NodeImageID** is specified, the value of **os** must be the same as the OS of the custom image. |
+-------------+-----------+-----------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| extendParam | No | :ref:`MigrateNodeExtendParam ` object | Extended parameters for node migration. |
+-------------+-----------+-----------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| login | Yes | :ref:`Login ` object | Node login mode. |
+-------------+-----------+-----------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| nodes | Yes | Array of :ref:`NodeItem ` objects | List of nodes to be operated. |
+-------------+-----------+-----------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
.. _migratenode__en-us_topic_0000001467833433_request_migratenodeextendparam:
.. table:: **Table 5** MigrateNodeExtendParam
+-------------------------+-----------------+-----------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Parameter | Mandatory | Type | Description |
+=========================+=================+=================+=====================================================================================================================================================================================================================================================================================================================+
| maxPods | No | Integer | Maximum number of pods that can be created on a node, including the default system pods. Value range: 16 to 256. This limit prevents the node from being overloaded of pods. |
+-------------------------+-----------------+-----------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| DockerLVMConfigOverride | No | String | Docker data disk configuration item. (This parameter has been discarded. Use the **storage** field instead.) |
| | | | |
| | | | The disk type of the nodes to be migrated must be the same as that specified during node creation (that is, the value of **diskType** in **DockerLVMConfigOverride** must be the same as that specified during node creation). Ensure that the disk types of the nodes selected for a single API call are the same. |
| | | | |
| | | | Example default configuration: |
| | | | |
| | | | .. code-block:: |
| | | | |
| | | | "DockerLVMConfigOverride":"dockerThinpool=vgpaas/90%VG;kubernetesLV=vgpaas/10%VG;diskType=evs;lvType=linear" |
| | | | |
| | | | The following fields are included: |
| | | | |
| | | | - **userLV** (optional): size of the user space, for example, **vgpaas/20%VG**. |
| | | | - **userPath** (optional): mount path of the user space, for example, **/home/wqt-test**. |
| | | | - **diskType**: disk type. Currently, only **evs**, **hdd**, and **ssd** are supported. |
| | | | - **lvType**: type of a logic volume. The value can be **linear** or **striped**. |
| | | | - **dockerThinpool**: Docker space size, for example, **vgpaas/60%VG**. |
| | | | - **kubernetesLV**: kubelet space size, for example, **vgpaas/20%VG**. |
+-------------------------+-----------------+-----------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| alpha.cce/preInstall | No | String | Pre-installation script. |
| | | | |
| | | | .. note:: |
| | | | |
| | | | The input value must be Base64-encoded. (Command: echo -n "Content to be encoded" \| base64) |
+-------------------------+-----------------+-----------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| alpha.cce/postInstall | No | String | Post-installation script. |
| | | | |
| | | | .. note:: |
| | | | |
| | | | The input value must be Base64-encoded. (Command: echo -n "Content to be encoded" \| base64) |
+-------------------------+-----------------+-----------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| alpha.cce/NodeImageID | No | String | ID of the user image to run the target OS. When **alpha.cce/NodeImageID** is specified, the value of **os** must be the same as the OS of the custom image. |
+-------------------------+-----------------+-----------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
.. _migratenode__en-us_topic_0000001467833433_request_login:
.. table:: **Table 6** Login
+-----------------+-----------------+-----------------+---------------------------------------------------------+
| Parameter | Mandatory | Type | Description |
+=================+=================+=================+=========================================================+
| sshKey | No | String | Name of the key pair used for login. |
+-----------------+-----------------+-----------------+---------------------------------------------------------+
| userPassword | No | String | Password used for node login. |
| | | | |
| | | | .. note:: |
| | | | |
| | | | This field is not supported for the current version. |
+-----------------+-----------------+-----------------+---------------------------------------------------------+
.. _migratenode__en-us_topic_0000001467833433_request_nodeitem:
.. table:: **Table 7** NodeItem
========= ========= ====== ===========
Parameter Mandatory Type Description
========= ========= ====== ===========
uid Yes String Node ID.
========= ========= ====== ===========
.. _migratenode__en-us_topic_0000001467833433_request_taskstatus:
.. table:: **Table 8** TaskStatus
+-----------+-----------+--------+----------------------------------------------------------------+
| Parameter | Mandatory | Type | Description |
+===========+===========+========+================================================================+
| jobID | No | String | Job ID, which is used by the caller to query the job progress. |
+-----------+-----------+--------+----------------------------------------------------------------+
Response Parameters
-------------------
**Status code: 200**
.. table:: **Table 9** Response body parameters
+------------+------------------------------------------------------------------------------------------------------+-------------------------------------------------------+
| Parameter | Type | Description |
+============+======================================================================================================+=======================================================+
| apiVersion | String | API version. The value is fixed at **v3**. |
+------------+------------------------------------------------------------------------------------------------------+-------------------------------------------------------+
| kind | String | API type. The value is fixed at **MigrateNodesTask**. |
+------------+------------------------------------------------------------------------------------------------------+-------------------------------------------------------+
| spec | :ref:`MigrateNodesSpec ` object | Configuration data. |
+------------+------------------------------------------------------------------------------------------------------+-------------------------------------------------------+
| status | :ref:`TaskStatus ` object | Job status. |
+------------+------------------------------------------------------------------------------------------------------+-------------------------------------------------------+
.. _migratenode__en-us_topic_0000001467833433_response_migratenodesspec:
.. table:: **Table 10** MigrateNodesSpec
+-------------+------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Parameter | Type | Description |
+=============+==================================================================================================================+=======================================================================================================================================================================================+
| os | String | Operating system type, which must be accurate to the version number. When **alpha.cce/NodeImageID** is specified, the value of **os** must be the same as the OS of the custom image. |
+-------------+------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| extendParam | :ref:`MigrateNodeExtendParam ` object | Extended parameters for node migration. |
+-------------+------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| login | :ref:`Login ` object | Node login mode. |
+-------------+------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| nodes | Array of :ref:`NodeItem ` objects | List of nodes to be operated. |
+-------------+------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
.. _migratenode__en-us_topic_0000001467833433_response_migratenodeextendparam:
.. table:: **Table 11** MigrateNodeExtendParam
+-------------------------+-----------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Parameter | Type | Description |
+=========================+=======================+=====================================================================================================================================================================================================================================================================================================================+
| maxPods | Integer | Maximum number of pods that can be created on a node, including the default system pods. Value range: 16 to 256. This limit prevents the node from being overloaded of pods. |
+-------------------------+-----------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| DockerLVMConfigOverride | String | Docker data disk configuration item. (This parameter has been discarded. Use the **storage** field instead.) |
| | | |
| | | The disk type of the nodes to be migrated must be the same as that specified during node creation (that is, the value of **diskType** in **DockerLVMConfigOverride** must be the same as that specified during node creation). Ensure that the disk types of the nodes selected for a single API call are the same. |
| | | |
| | | Example default configuration: |
| | | |
| | | .. code-block:: |
| | | |
| | | "DockerLVMConfigOverride":"dockerThinpool=vgpaas/90%VG;kubernetesLV=vgpaas/10%VG;diskType=evs;lvType=linear" |
| | | |
| | | The following fields are included: |
| | | |
| | | - **userLV** (optional): size of the user space, for example, **vgpaas/20%VG**. |
| | | - **userPath** (optional): mount path of the user space, for example, **/home/wqt-test**. |
| | | - **diskType**: disk type. Currently, only **evs**, **hdd**, and **ssd** are supported. |
| | | - **lvType**: type of a logic volume. The value can be **linear** or **striped**. |
| | | - **dockerThinpool**: Docker space size, for example, **vgpaas/60%VG**. |
| | | - **kubernetesLV**: kubelet space size, for example, **vgpaas/20%VG**. |
+-------------------------+-----------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| alpha.cce/preInstall | String | Pre-installation script. |
| | | |
| | | .. note:: |
| | | |
| | | The input value must be Base64-encoded. (Command: echo -n "Content to be encoded" \| base64) |
+-------------------------+-----------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| alpha.cce/postInstall | String | Post-installation script. |
| | | |
| | | .. note:: |
| | | |
| | | The input value must be Base64-encoded. (Command: echo -n "Content to be encoded" \| base64) |
+-------------------------+-----------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| alpha.cce/NodeImageID | String | ID of the user image to run the target OS. When **alpha.cce/NodeImageID** is specified, the value of **os** must be the same as the OS of the custom image. |
+-------------------------+-----------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
.. _migratenode__en-us_topic_0000001467833433_response_login:
.. table:: **Table 12** Login
+-----------------------+-----------------------+---------------------------------------------------------+
| Parameter | Type | Description |
+=======================+=======================+=========================================================+
| sshKey | String | Name of the key pair used for login. |
+-----------------------+-----------------------+---------------------------------------------------------+
| userPassword | String | Password used for node login. |
| | | |
| | | .. note:: |
| | | |
| | | This field is not supported for the current version. |
+-----------------------+-----------------------+---------------------------------------------------------+
.. _migratenode__en-us_topic_0000001467833433_response_nodeitem:
.. table:: **Table 13** NodeItem
========= ====== ===========
Parameter Type Description
========= ====== ===========
uid String Node ID.
========= ====== ===========
.. _migratenode__en-us_topic_0000001467833433_response_taskstatus:
.. table:: **Table 14** TaskStatus
+-----------+--------+----------------------------------------------------------------+
| Parameter | Type | Description |
+===========+========+================================================================+
| jobID | String | Job ID, which is used by the caller to query the job progress. |
+-----------+--------+----------------------------------------------------------------+
Example Requests
----------------
- Migrating a Node
.. code-block:: text
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"
} ]
}
}
- Migrating a node using a specified user image ID
.. code-block:: text
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"
} ]
}
}
Example Responses
-----------------
**Status code: 200**
The job for migrating a node from a specified cluster to another cluster is successfully delivered.
.. code-block::
{
"spec" : {
"os" : "EulerOS 2.5",
"login" : {
"sshKey" : "KeyPair-001"
},
"nodes" : [ {
"uid" : "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}, {
"uid" : "yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy"
} ]
},
"status" : {
"jobID" : "2ec9b78d-9368-46f3-8f29-d1a95622a568"
}
}
Status Codes
------------
+-------------+-----------------------------------------------------------------------------------------------------+
| Status Code | Description |
+=============+=====================================================================================================+
| 200 | The job for migrating a node from a specified cluster to another cluster is successfully delivered. |
+-------------+-----------------------------------------------------------------------------------------------------+
Error Codes
-----------
See :ref:`Error Codes `.