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 1 Path Parameters

Parameter

Mandatory

Type

Description

project_id

Yes

String

Project ID. For details about how to obtain the value, see How to Obtain Parameters in the API URI.

cluster_id

Yes

String

Cluster ID. For details about how to obtain the value, see How to Obtain Parameters in the API URI.

target_cluster_id

Yes

String

Cluster ID. For details about how to obtain the value, see How to Obtain Parameters in the API URI.

Request Parameters

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 API Usage Guidelines.

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

MigrateNodesSpec object

Configuration data.

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

MigrateNodeExtendParam object

Extended parameters for node migration.

login

Yes

Login object

Node login mode.

runtime

No

Runtime object

Container runtime configuration.

nodes

Yes

Array of NodeItem objects

List of nodes to be operated.

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:

"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.

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.

Table 7 Runtime

Parameter

Mandatory

Type

Description

name

No

String

Container runtime:

  • Clusters of v1.25 or earlier: docker.

  • Clusters of v1.25 or later: Container runtime varies with the OS. For nodes running EulerOS 2.5, the default container runtime is docker. For nodes running other OSs, the default container runtime is containerd.

Enumeration values:

  • docker

  • containerd

Table 8 NodeItem

Parameter

Mandatory

Type

Description

uid

Yes

String

Node ID.

Response Parameters

Status code: 200

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

MigrateNodesSpec object

Configuration data.

status

TaskStatus object

Job status.

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

MigrateNodeExtendParam object

Extended parameters for node migration.

login

Login object

Node login mode.

nodes

Array of NodeItem objects

List of nodes to be operated.

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:

"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.

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.

Table 13 NodeItem

Parameter

Type

Description

uid

String

Node ID.

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

    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

    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.

{
  "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 Error Codes.