: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 `.