:original_name: cce_02_0242.html .. _cce_02_0242: Creating a Node =============== Function -------- This API is used to create a node in a specified cluster. URI --- POST /api/v3/projects/{project_id}/clusters/{cluster_id}/nodes :ref:`Table 1 ` describes the parameters of the API. .. _cce_02_0242__table2027961241820: .. table:: **Table 1** Parameter description +------------+-----------+-------------------------------------------------------------------------------------------------------------------------------+ | Parameter | Mandatory | Description | +============+===========+===============================================================================================================================+ | project_id | Yes | Project ID. For details about how to obtain the project ID, see :ref:`How to Obtain Parameters in the API URI `. | +------------+-----------+-------------------------------------------------------------------------------------------------------------------------------+ | cluster_id | Yes | Cluster ID. For details about how to obtain the cluster ID, see :ref:`How to Obtain Parameters in the API URI `. | +------------+-----------+-------------------------------------------------------------------------------------------------------------------------------+ Request ------- **Request parameters**: :ref:`Table 2 ` and :ref:`Table 3 ` describe the request parameters. .. _cce_02_0242__table2582312171119: .. table:: **Table 2** Parameters in the request header +-----------------------+-----------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Parameter | Mandatory | Description | +=======================+=======================+===============================================================================================================================================================================================================================================================================+ | Content-Type | Yes | Message body type (format). Possible values: | | | | | | | | - application/json;charset=utf-8 | | | | - application/json | +-----------------------+-----------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | X-Auth-Token | Yes | 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 on how to obtain a user token, see :ref:`API Usage Guidelines `. | +-----------------------+-----------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ .. _cce_02_0242__table34052983203655: .. table:: **Table 3** Parameters in the request body +------------+-----------+--------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------+ | Parameter | Mandatory | Type | Description | +============+===========+========================================================+=========================================================================================================================+ | kind | Yes | String | API type. The value is fixed at **Node** and cannot be changed. | +------------+-----------+--------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------+ | apiVersion | Yes | String | API version. The value is fixed at **v3** and cannot be changed. | +------------+-----------+--------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------+ | metadata | Yes | :ref:`metadata ` object | Node's metadata, which is a collection of attributes. | +------------+-----------+--------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------+ | spec | Yes | :ref:`spec ` object | Detailed description of the node targeted by this API. CCE creates or updates objects by defining or updating its spec. | +------------+-----------+--------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------+ .. _cce_02_0242__table65041257514: .. table:: **Table 4** Data structure of the **metadata** field +-----------------+-----------------+-----------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Parameter | Mandatory | Type | Description | +=================+=================+=================+=================================================================================================================================================================================================================+ | name | No | String | Node name. | | | | | | | | | | .. note:: | | | | | | | | | | Enter 0 to 56 characters starting with a letter and not ending with a hyphen (-). Only lowercase letters, digits, and hyphens (-) are allowed. | | | | | | | | | | If no node name is specified, the system automatically generates a node name in the format of **Cluster Name-****\***. | +-----------------+-----------------+-----------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | labels | No | Object | CCE node label (not the native Kubernetes label). | | | | | | | | | | Labels are used to select objects that meet certain criteria. A label is a key-value pair. | | | | | | | | | | Example: | | | | | | | | | | .. code-block:: | | | | | | | | | | "labels": { | | | | | "key" : "value" | | | | | } | | | | | | | | | | .. note:: | | | | | | | | | | Users can not use this field to define the native Kubernetes labels. | +-----------------+-----------------+-----------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | annotations | No | Object | CCE node annotation in key-value pair format (not the native Kubernetes annotations). | | | | | | | | | | Example: | | | | | | | | | | .. code-block:: | | | | | | | | | | "annotations": { | | | | | "key1" : "value1", | | | | | "key2" : "value2" | | | | | } | | | | | | | | | | .. note:: | | | | | | | | | | - Users can not use this field to define the native Kubernetes labels. | | | | | - **Annotations** are not used to identify or select objects. The metadata in **Annotations** may be small or large, structured or unstructured, and may include characters that are not allowed in labels. | +-----------------+-----------------+-----------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ .. _cce_02_0242__table3150105216225: .. table:: **Table 5** Data structure of the **spec** field +-----------------+-----------------+--------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Parameter | Mandatory | Type | Description | +=================+=================+==============================================================+====================================================================================================================================================================================================================================================================================+ | flavor | Yes | String | Node specifications. For details, see the description of the **flavorRef** parameter in `Creating an ECS `__. | | | | | | | | | | .. note:: | | | | | | | | | | When adding a BMS node, check whether the flavor of the node to be added supports local disks. If local disks are not supported, add at least one 100 GB EVS disk. | +-----------------+-----------------+--------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | az | Yes | String | AZ of the node. For details, see the description of the **availability_zone** parameter in `Creating an ECS `__. | +-----------------+-----------------+--------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | os | No | String | Node OS. | | | | | | | | | | - Nodes in clusters of Kubernetes v1.11 or earlier support EulerOS 2.2. | | | | | - Nodes in clusters of Kubernetes v1.13 or v1.15 support EulerOS 2.5. | | | | | - Nodes in clusters of Kubernetes v1.17 support EulerOS 2.5 and CentOS 7.7. | | | | | - Nodes in clusters of Kubernetes v1.19, v1.21 or v1.23 support EulerOS 2.5, EulerOS 2.9 and CentOS 7.7. | | | | | - Nodes using **kata** runtime in CCE Turbo cluster support EulerOS 2.9. | | | | | | | | | | .. note:: | | | | | | | | | | If the **alpha.cce/NodeImageID** parameter in **extendParam** is specified during node creation, you do not need to set this field. | +-----------------+-----------------+--------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | dedicatedHostId | No | String | ID of the dedicated host to which nodes will be scheduled. | +-----------------+-----------------+--------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | login | Yes | :ref:`login ` object | Node login mode, which can be key pair or password. | +-----------------+-----------------+--------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | rootVolume | Yes | :ref:`Volume ` object | System disk parameters of the node. | +-----------------+-----------------+--------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | dataVolumes | Yes | Array of :ref:`Volume ` object | Data disk parameters of the node. Currently, you can add the second data disk for your node on the CCE console. | +-----------------+-----------------+--------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | publicIP | No | :ref:`publicIP ` object | EIP used by the node to access public networks. | +-----------------+-----------------+--------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | billingMode | No | Integer | Billing mode of a node. | | | | | | | | | | .. note:: | | | | | | | | | | This field is not supported for the current version. | +-----------------+-----------------+--------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | count | Yes | Integer | Number of nodes to be created in a batch. The value must be a positive integer greater than or equal to 1 and less than or equal to the defined limit. | | | | | | | | | | .. note:: | | | | | | | | | | This fielder can be set to **0** for a node pool. | +-----------------+-----------------+--------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | nodeNicSpec | No | :ref:`nodeNicSpec ` object | Description about the node NIC. | +-----------------+-----------------+--------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | extendParam | No | :ref:`extendParam ` object | Extended parameter. Format: Key-value pair. | +-----------------+-----------------+--------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | userTags | No | Object | Tag of a VM. | | | | | | | | | | The format is key-value pair. The number of key-value pairs cannot exceed 20. | | | | | | | | | | - **Key**: Only letters, digits, hyphens (-), underscores (_), and at signs (@) are supported. | | | | | - **Value**: Only letters, digits, hyphens (-), underscores (_), and at signs (@) are supported. | | | | | | | | | | Example: | | | | | | | | | | .. code-block:: | | | | | | | | | | "userTags": [ | | | | | { | | | | | "key": "tag1", | | | | | "value": "aaaa" | | | | | }, | | | | | { | | | | | "key": "tag2", | | | | | "value": "bbbb" | | | | | } | | | | | ] | +-----------------+-----------------+--------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | k8sTags | No | Object | Tag of a Kubernetes node. | | | | | | | | | | The format is key-value pair. The number of key-value pairs cannot exceed 20. | | | | | | | | | | - **Key**: Enter 1 to 63 characters starting with a letter or digit. Only letters, digits, hyphens (-), underscores (_), and periods (.) are allowed. A DNS subdomain can be prefixed to a key and contain a maximum of 253 characters. Example DNS subdomain: example.com/my-key | | | | | - **Value**: The value can be left blank or a string of 1 to 63 characters starting with a letter or digit. Only letters, digits, hyphens (-), underscores (_), and periods (.) are allowed in the character string. | | | | | | | | | | Example: | | | | | | | | | | .. code-block:: | | | | | | | | | | "k8sTags": { | | | | | "key": "value" | | | | | } | +-----------------+-----------------+--------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | taints | No | Object | You can add taints to created nodes to configure anti-affinity. Each taint contains the following parameters: | | | | | | | | | | - **Key**: A key must contain 1 to 63 characters starting with a letter or digit. Only letters, digits, hyphens (-), underscores (_), and periods (.) are allowed. A DNS subdomain name can be used as the prefix of a key. | | | | | - **Value**: A value must start with a letter or digit and can contain a maximum of 63 characters, including letters, digits, hyphens (-), underscores (_), and periods (.). | | | | | - **Effect**: Available options are **NoSchedule**, **PreferNoSchedule**, and **NoExecute**. | | | | | | | | | | Example: | | | | | | | | | | .. code-block:: | | | | | | | | | | "taints": [{ | | | | | "key": "status", | | | | | "value": "unavailable", | | | | | "effect": "NoSchedule" | | | | | }, { | | | | | "key": "looks", | | | | | "value": "bad", | | | | | "effect": "NoSchedule" | | | | | }] | +-----------------+-----------------+--------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | ecsGroupId | No | String | ECS group ID. If this parameter is specified, the node is created in the specified ECS group. | | | | | | | | | | .. note:: | | | | | | | | | | This parameter is not supported when you add a node to a node pool or use CCE Turbo cluster. | +-----------------+-----------------+--------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | dedicatedHostId | No | String | ID of the DeH host. If this parameter is specified, the node is scheduled to its own DeH host. | | | | | | | | | | .. note:: | | | | | | | | | | This parameter is not supported when you add a node to a node pool. | +-----------------+-----------------+--------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | offloadNode | No | Boolean | Whether the node belongs to a CCE Turbo cluster. | | | | | | | | | | .. note:: | | | | | | | | | | This parameter is not supported when you add a node to a node pool. | +-----------------+-----------------+--------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | faultDomain | No | String | Cloud server fault domain. The node is created in the fault domain specified by this parameter. | | | | | | | | | | .. note:: | | | | | | | | | | You must specify the ECS to which the fault domain policy applies and enable the fault domain feature. | +-----------------+-----------------+--------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | runtime | No | :ref:`Runtime ` object | Container runtime. The default value is **docker**. | +-----------------+-----------------+--------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ .. _cce_02_0242__table322873620312: .. table:: **Table 6** Data structure of the nodeNicSpec field +------------+-----------+----------------------------------------------------------------+------------------------------------+ | Parameter | Mandatory | Type | Description | +============+===========+================================================================+====================================+ | primaryNic | No | :ref:`primaryNic ` object | Description about the primary NIC. | +------------+-----------+----------------------------------------------------------------+------------------------------------+ | extNics | No | Array of :ref:`extNics ` objects | Extension NIC. | +------------+-----------+----------------------------------------------------------------+------------------------------------+ .. _cce_02_0242__request_nicspec: .. table:: **Table 7** Data structure of the primaryNic/extNics field +-----------+-----------+------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Parameter | Mandatory | Type | Description | +===========+===========+==================+===================================================================================================================================================================================================================+ | subnetId | No | String | Network ID of the subnet to which the NIC belongs. | +-----------+-----------+------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | fixedIps | No | Array of strings | The IP address of the primary NIC is specified by **fixedIps**. The number of IP addresses cannot be greater than the number of created nodes. **fixedIps** and **ipBlock** cannot be specified at the same time. | +-----------+-----------+------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | ipBlock | No | String | CIDR format of the IP address segment. The IP address of the created node falls in this IP address segment. **fixedIps** and **ipBlock** cannot be specified at the same time. | +-----------+-----------+------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ .. _cce_02_0242__table153332427337: .. table:: **Table 8** Data structure of the extendParam field +-------------------------+-----------------+-----------------+-----------------------------------------------------------------------------------------------------------------+ | Parameter | Mandatory | Type | Description | +=========================+=================+=================+=================================================================================================================+ | maxPods | No | Integer | Maximum number of pods on the node. | +-------------------------+-----------------+-----------------+-----------------------------------------------------------------------------------------------------------------+ | agency_name | No | String | Specifies the IAM agency name. | +-------------------------+-----------------+-----------------+-----------------------------------------------------------------------------------------------------------------+ | dockerBaseSize | No | Integer | Available disk space of a single Docker container on the node using the device mapper. | +-------------------------+-----------------+-----------------+-----------------------------------------------------------------------------------------------------------------+ | alpha.cce/preInstall | No | String | Script required before the installation. | | | | | | | | | | .. note:: | | | | | | | | | | The input value must be encoded using Base64. (Command: **echo -n "Content to be encoded" \| base64**) | +-------------------------+-----------------+-----------------+-----------------------------------------------------------------------------------------------------------------+ | alpha.cce/postInstall | No | String | Script required after the installation. | | | | | | | | | | .. note:: | | | | | | | | | | The input value must be encoded using Base64. (Command: **echo -n "Content to be encoded" \| base64**) | +-------------------------+-----------------+-----------------+-----------------------------------------------------------------------------------------------------------------+ | alpha.cce/NodeImageID | No | String | Mandatory if a custom image is used in creating a bare metal node. | +-------------------------+-----------------+-----------------+-----------------------------------------------------------------------------------------------------------------+ | DockerLVMConfigOverride | No | String | ConfigMap of the Docker data disk. The following is an example configuration: | | | | | | | | | | .. code-block:: | | | | | | | | | | "DockerLVMConfigOverride":"dockerThinpool=vgpaas/90%VG;kubernetesLV=vgpaas/10%VG;diskType=evs;lvType=linear" | | | | | | | | | | In this example: | | | | | | | | | | - **userLV**: size of the user space, for example, **vgpaas/20%VG**. | | | | | - **userPath**: mount path of the user space, for example, **/home/wqt-test**. | | | | | - **diskType**: disk type. Currently, only the **evs**, **hdd**, and **ssd** are supported. | | | | | - **lvType**: type of a logic volume. Currently, 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**. | +-------------------------+-----------------+-----------------+-----------------------------------------------------------------------------------------------------------------+ .. _cce_02_0242__table10946114617286: .. table:: **Table 9** Data structure of the **login** field +-----------------+-----------------+-----------------+----------------------------------------------------------------------------------------------------------------------------------+ | Parameter | Mandatory | Type | Description | +=================+=================+=================+==================================================================================================================================+ | sshKey | No | String | Name of the key pair used for node login. For details on how to create a key pair, see :ref:`Creating a Key Pair `. | +-----------------+-----------------+-----------------+----------------------------------------------------------------------------------------------------------------------------------+ | userPassword | No | String | Password used for node login. | | | | | | | | | | .. note:: | | | | | | | | | | This field is not supported for the current version. | +-----------------+-----------------+-----------------+----------------------------------------------------------------------------------------------------------------------------------+ .. _cce_02_0242__table1359314517: .. table:: **Table 10** Data structure of the **Volume** field +-----------------+-----------------+---------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Parameter | Mandatory | Type | Description | +=================+=================+=====================================================================+============================================================================================================================================================================================+ | volumetype | No | String | Disk type. For details, see the description of **root_volume** in `Creating an ECS `__. | | | | | | | | | | - **SATA**: common I/O disk type. | | | | | - **SAS**: high I/O disk type. | | | | | - **SSD**: ultra-high I/O disk type. | +-----------------+-----------------+---------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | size | No | Integer | Specifies the system disk size, in GB. The value ranges from 40 to 1024. | +-----------------+-----------------+---------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | extendParam | No | Map | Disk extension parameter. For details, see the description of the extendparam parameter in `Creating an ECS `__. | +-----------------+-----------------+---------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | hw:passthrough | No | Boolean | - Pay attention to this field if your ECS is SDI-compliant. If the value of this field is **true**, the created disk is of the SCSI type. | | | | | - If the node pool type is **ElasticBMS**, this field must be set to **true**. | +-----------------+-----------------+---------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | metadata | No | :ref:`dataVolumeMetadata ` object | Data disk encryption information. This parameter is mandatory only when the data disk of the node to be created needs to be encrypted. | | | | | | | | | | If data disks are created using a data disk image, this parameter cannot be used. | +-----------------+-----------------+---------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ .. _cce_02_0242__table15849123210415: .. table:: **Table 11** Data structure of the dataVolumeMetadata field +----------------------+-----------------+-----------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Parameter | Mandatory | Type | Description | +======================+=================+=================+==================================================================================================================================================================+ | \__system__encrypted | No | String | Whether an EVS disk is encrypted. | | | | | | | | | | - **'0'**: not encrypted | | | | | - **'1'**: encrypted | | | | | | | | | | If this parameter is not specified, EVS disks will not be encrypted by default. | +----------------------+-----------------+-----------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | \__system__cmkid | Yes | String | CMK ID used for encryption. This parameter is used with **\__system__encrypted**. | | | | | | | | | | .. note:: | | | | | | | | | | You can obtain the ID through HTTPS requests. For details, see `Querying the List of CMKs `__. | +----------------------+-----------------+-----------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+ .. _cce_02_0242__table139179586343: .. table:: **Table 12** Data structure of the **publicIP** field +-----------------+-----------------+----------------------------------------------------+---------------------------------------------------------------------+ | Parameter | Mandatory | Type | Description | +=================+=================+====================================================+=====================================================================+ | ids | No | Array of strings | List of IDs of the existing EIPs. | | | | | | | | | | .. important:: | | | | | | | | | | NOTICE: | | | | | If **ids** is set, you do not need to set **count** and **eip**. | +-----------------+-----------------+----------------------------------------------------+---------------------------------------------------------------------+ | count | No | Integer | Number of EIPs to be dynamically created. | | | | | | | | | | .. important:: | | | | | | | | | | NOTICE: | | | | | The **count** and **eip** parameters must be set simultaneously. | +-----------------+-----------------+----------------------------------------------------+---------------------------------------------------------------------+ | eip | No | :ref:`eip ` object | EIP. | | | | | | | | | | .. important:: | | | | | | | | | | NOTICE: | | | | | The **count** and **eip** parameters must be set simultaneously. | +-----------------+-----------------+----------------------------------------------------+---------------------------------------------------------------------+ .. note:: If no EIP has been created, configure **count** and **eip**. The system will automatically create EIPs based on **count** and **eip**. .. _cce_02_0242__table135065714419: .. table:: **Table 13** Data structure of the **eip** field +-----------+-----------+------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Parameter | Mandatory | Type | Description | +===========+===========+============================================================+=================================================================================================================================================================================================================+ | iptype | Yes | String | EIP type. For details, see the description of the **iptype** parameter in the **eip** field in `Data Structure for Creating ECSs `__. | +-----------+-----------+------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | bandwidth | Yes | :ref:`bandwidth ` object | Bandwidth parameters of the EIP. | +-----------+-----------+------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ .. _cce_02_0242__table16381121974213: .. table:: **Table 14** Data structure of the **bandwidth** field +------------+-----------+---------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Parameter | Mandatory | Type | Description | +============+===========+=========+=======================================================================================================================================================================================================================================+ | chargemode | No | String | The value is **traffic**, indicating that the billing is based on traffic. | +------------+-----------+---------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | size | Yes | Integer | Bandwidth size. For details, see the description of the **size** parameter in the **bandwidth** field in `Data Structure for Creating ECSs `__. | +------------+-----------+---------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | sharetype | Yes | String | Shared bandwidth type. For details, see the description of the **sharetype** parameter in the **bandwidth** field in `Data Structure for Creating ECSs `__. | +------------+-----------+---------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ .. _cce_02_0242__table163721555105015: .. table:: **Table 15** Runtime +-----------------+-----------------+-----------------+-----------------------------------------------------+ | Parameter | Mandatory | Type | Description | +=================+=================+=================+=====================================================+ | name | No | String | Container runtime. The default value is **docker**. | | | | | | | | | | Enumeration values: | | | | | | | | | | - docker | | | | | - containerd | +-----------------+-----------------+-----------------+-----------------------------------------------------+ **Example request**: CCE cluster: .. code-block:: { "kind": "Node", "apiVersion": "v3", "metadata": { "name": "myhost", "labels": { "foo": "bar" }, "annotations": { "annotation1": "abc" } }, "spec": { "flavor": "s1.medium", "az": "eu-de-01", "login": { "sshKey": "Keypair-demo" }, "rootVolume": { "size": 40, "volumetype": "SAS" }, "dataVolumes": [ { "size": 100, "volumetype": "SAS" } ], "userTags": [ { "key": "tag1", "value": "aaaa" }, { "key": "tag2", "value": "bbbb" } ], "k8sTags": { "label-test": "test" }, "publicIP": { "count": 2, "eip": { "iptype": "5_bgp", "bandwidth": { "chargemode": "traffic", "size": 10, "sharetype": "PER" } } }, "count": 2, "nodeNicSpec": { "primaryNic": { "subnetId": "bbfc0a20-d66c-4f36-b4c1-265d669b8c62" } }, "extendParam": { "alpha.cce/postInstall": "IyEvYml******C50eHQ=" } } } CCE Turbo cluster: .. code-block:: { "kind": "Node", "apiversion": "v3", "metadata": { "name": "turbo-cluster-node" }, "spec": { "flavor": "cce.c4.22xlarge.4.physical.129nic", "az": "eu-de-01", "login": { "sshKey": "id_rsa" }, "rootVolume": { "size": 40, "volumetype": "SAS", "hw:passthrough": true }, "dataVolumes": [ { "size": 100, "volumetype": "SAS", "hw:passthrough": true } ], "count": 1, "runtime": { "name": "containerd" }, "extendParam": { "alpha.cce/NodeImageID":"0fea78c3-1b31-4653-8859-ac151ccadcd4" } } } Response -------- **Response parameters**: :ref:`Table 16 ` describes the response parameters. .. _cce_02_0242__en-us_topic_0079616779_en-us_topic_0079614912_ref458774242: .. table:: **Table 16** Response parameters +------------+--------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------+ | Parameter | Type | Description | +============+========================================================+=========================================================================================================================+ | kind | String | API type. The value is fixed at **Node** and cannot be changed. | +------------+--------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------+ | apiVersion | String | API version. The value is fixed at **v3** and cannot be changed. | +------------+--------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------+ | metadata | :ref:`metadata ` object | Node's metadata, which is a collection of attributes. | +------------+--------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------+ | spec | :ref:`spec ` object | Detailed description of the node targeted by this API. CCE creates or updates objects by defining or updating its spec. | +------------+--------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------+ | status | :ref:`status ` object | Node status and jobID of the node creation job. | +------------+--------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------+ .. _cce_02_0242__table0360745335: .. table:: **Table 17** Data structure of the **metadata** field +-----------------------+-----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Parameter | Type | Description | +=======================+=======================+=================================================================================================================================================================================================================+ | name | String | Node name. | +-----------------------+-----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | uid | String | Node ID. | +-----------------------+-----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | labels | Object | CCE node label (not the native Kubernetes label). | | | | | | | | Labels are used to select objects that meet certain criteria. A label is a key-value pair. | | | | | | | | Example: | | | | | | | | .. code-block:: | | | | | | | | "labels": { | | | | "key" : "value" | | | | } | | | | | | | | .. note:: | | | | | | | | Users can not use this field to define the native Kubernetes labels. | +-----------------------+-----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | annotations | Object | CCE node annotation in key-value pair format (not the native Kubernetes annotations). | | | | | | | | Example: | | | | | | | | .. code-block:: | | | | | | | | "annotations": { | | | | "key1" : "value1", | | | | "key2" : "value2" | | | | } | | | | | | | | .. note:: | | | | | | | | - Users can not use this field to define the native Kubernetes labels. | | | | - **Annotations** are not used to identify or select objects. The metadata in **Annotations** may be small or large, structured or unstructured, and may include characters that are not allowed in labels. | +-----------------------+-----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ .. _cce_02_0242__table13949117115810: .. table:: **Table 18** Data structure of the **spec** field +-----------------------+--------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Parameter | Type | Description | +=======================+==============================================================+====================================================================================================================================================================================================================================================================================+ | flavor | String | Node specifications. For details, see the description of the **flavorRef** parameter in `Creating an ECS `__. | +-----------------------+--------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | az | String | AZ of the node. For details, see the description of the **availability_zone** parameter in `Creating an ECS `__. | +-----------------------+--------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | os | String | Node OS. | | | | | | | | - Nodes in clusters of Kubernetes v1.11 or earlier support EulerOS 2.2. | | | | - Nodes in clusters of Kubernetes v1.13 or v1.15 support EulerOS 2.5. | | | | - Nodes in clusters of Kubernetes v1.17 support EulerOS 2.5 and CentOS 7.7. | | | | - Nodes in clusters of Kubernetes v1.19, v1.21 or v1.23 support EulerOS 2.5, EulerOS 2.9 and CentOS 7.7. | | | | - Nodes using **kata** runtime in CCE Turbo cluster support EulerOS 2.9. | +-----------------------+--------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | login | :ref:`login ` object | Node login mode, which can only be key pair. | +-----------------------+--------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | rootVolume | :ref:`Volume ` object | System disk parameters of the node. | +-----------------------+--------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | dataVolumes | Array of :ref:`Volume ` object | Data disk parameters of the node. | +-----------------------+--------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | publicIP | :ref:`publicIP ` object | EIP parameters of a node. | +-----------------------+--------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | nodeNicSpec | :ref:`nodeNicSpec ` object | Description about the node NIC. | +-----------------------+--------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | count | Integer | Number of nodes to be created in a batch. The value must be a positive integer greater than or equal to 1. | | | | | | | | .. note:: | | | | | | | | This parameter can be set to **0** for a node pool. | +-----------------------+--------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | billingMode | Integer | Billing mode of a node. | | | | | | | | .. note:: | | | | | | | | This field is not supported for the current version. | +-----------------------+--------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | userTags | Object | The format is key-value pair. | | | | | | | | It is recommended that you use TMS's predefined tag function to add the same tag to different cloud resources. | | | | | | | | - The tag **key** can consist of only uppercase letters, lowercase letters, digits, hyphens (-), underscores (_), and Unicode characters. | | | | - The tag **value** can contain only uppercase letters, lowercase letters, digits, hyphens (-), underscores (_), and at signs (@). | | | | | | | | Example: | | | | | | | | .. code-block:: | | | | | | | | "userTags": [ | | | | { | | | | "key": "tag1", | | | | "value": "aaaa" | | | | }, { | | | | "key": "tag2", | | | | "value": "bbbb" | | | | }] | +-----------------------+--------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | k8sTags | Object | The format is key-value pair. The number of key-value pairs cannot exceed 20. | | | | | | | | - **Key**: Enter 1 to 63 characters starting with a letter or digit. Only letters, digits, hyphens (-), underscores (_), and periods (.) are allowed. A DNS subdomain can be prefixed to a key and contain a maximum of 253 characters. Example DNS subdomain: example.com/my-key | | | | - **Value**: The value can be left blank or a string of 1 to 63 characters starting with a letter or digit. Only letters, digits, hyphens (-), underscores (_), and periods (.) are allowed in the character string. | | | | | | | | .. note:: | | | | | | | | If a node is created using a node pool, a label whose key is **cce.cloud.com/cce-nodepool** is automatically added to the node, and the label value is the node name. | | | | | | | | Example: | | | | | | | | .. code-block:: | | | | | | | | "k8sTags": { | | | | "key": "value" | | | | } | +-----------------------+--------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | taints | Object | You can add taints to created nodes to configure anti-affinity. Each taint contains the following parameters: | | | | | | | | - **Key**: A key must contain 1 to 63 characters starting with a letter or digit. Only letters, digits, hyphens (-), underscores (_), and periods (.) are allowed. A DNS subdomain name can be used as the prefix of a key. | | | | - **Value**: A value must start with a letter or digit and can contain a maximum of 63 characters, including letters, digits, hyphens (-), underscores (_), and periods (.). | | | | - **Effect**: Available options are **NoSchedule**, **PreferNoSchedule**, and **NoExecute**. | | | | | | | | Example: | | | | | | | | .. code-block:: | | | | | | | | "taints": [{ | | | | "key": "status", | | | | "value": "unavailable", | | | | "effect": "NoSchedule" | | | | }, { | | | | "key": "looks", | | | | "value": "bad", | | | | "effect": "NoSchedule" | | | | }] | +-----------------------+--------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | ecsGroupId | String | ECS group ID. If this parameter is specified, the node is created in the specified ECS group. | | | | | | | | .. note:: | | | | | | | | This parameter is not supported when you add a node to a node pool or use CCE Turbo cluster. | +-----------------------+--------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | dedicatedHostId | String | ID of the DeH host. If this parameter is specified, the node is scheduled to its own DeH host. | | | | | | | | .. note:: | | | | | | | | This parameter is not supported when you add a node to a node pool. | +-----------------------+--------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | offloadNode | Boolean | Whether the node belongs to a CCE Turbo cluster. | | | | | | | | .. note:: | | | | | | | | This parameter is not supported when you add a node to a node pool. | +-----------------------+--------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | faultDomain | String | Cloud server fault domain. The node is created in the fault domain specified by this parameter. | | | | | | | | .. note:: | | | | | | | | You must specify the ECS to which the fault domain policy applies and enable the fault domain feature. | +-----------------------+--------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | extendParam | :ref:`extendParam ` object | Extended parameter. Format: Key-value pair. | +-----------------------+--------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | runtime | :ref:`Runtime ` object | Container runtime. The default value is **docker**. | +-----------------------+--------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ .. _cce_02_0242__table162751117166: .. table:: **Table 19** Data structure of the nodeNicSpec field +------------+------------------------------------------------------------------+------------------------------------+ | Parameter | Type | Description | +============+==================================================================+====================================+ | primaryNic | :ref:`primaryNic ` object | Description about the primary NIC. | +------------+------------------------------------------------------------------+------------------------------------+ | extNics | Array of :ref:`extNics ` objects | Extension NIC. | +------------+------------------------------------------------------------------+------------------------------------+ .. _cce_02_0242__table614985275016: .. table:: **Table 20** Data structure of the primaryNic/extNics field +-----------+------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Parameter | Type | Description | +===========+==================+===================================================================================================================================================================================================================+ | subnetId | String | Network ID of the subnet to which the NIC belongs. | +-----------+------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | fixedIps | Array of strings | The IP address of the primary NIC is specified by **fixedIps**. The number of IP addresses cannot be greater than the number of created nodes. **fixedIps** and **ipBlock** cannot be specified at the same time. | +-----------+------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | ipBlock | String | CIDR format of the IP address segment. The IP address of the created node falls in this IP address segment. **fixedIps** and **ipBlock** cannot be specified at the same time. | +-----------+------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ .. _cce_02_0242__table2039318361484: .. table:: **Table 21** Data structure of the **extendParam** field +-------------------------+-----------------------+-----------------------------------------------------------------------------------------------------------------+ | Parameter | Type | Description | +=========================+=======================+=================================================================================================================+ | chargingMode | Integer | Billing mode of a node. | | | | | | | | .. note:: | | | | | | | | This field is not supported for the current version. | +-------------------------+-----------------------+-----------------------------------------------------------------------------------------------------------------+ | ecs:performancetype | String | Type of the ECS specifications. | +-------------------------+-----------------------+-----------------------------------------------------------------------------------------------------------------+ | orderID | String | Order ID. | | | | | | | | .. note:: | | | | | | | | This field is not supported for the current version. | +-------------------------+-----------------------+-----------------------------------------------------------------------------------------------------------------+ | productID | String | Product ID. | | | | | | | | .. note:: | | | | | | | | This field is not supported for the current version. | +-------------------------+-----------------------+-----------------------------------------------------------------------------------------------------------------+ | publicKey | String | Key pair used to log in to the node. Used when creating a key pair. | +-------------------------+-----------------------+-----------------------------------------------------------------------------------------------------------------+ | maxPods | Integer | Maximum number of pods on the node. | +-------------------------+-----------------------+-----------------------------------------------------------------------------------------------------------------+ | dockerBaseSize | Integer | Available disk space of a single Docker container on the node using the device mapper. | +-------------------------+-----------------------+-----------------------------------------------------------------------------------------------------------------+ | agency_name | String | Specifies the IAM agency name. | +-------------------------+-----------------------+-----------------------------------------------------------------------------------------------------------------+ | DockerLVMConfigOverride | String | Docker data disk configurations. The following is the default configuration: | | | | | | | | .. code-block:: | | | | | | | | "DockerLVMConfigOverride":"dockerThinpool=vgpaas/90%VG;kubernetesLV=vgpaas/10%VG;diskType=evs;lvType=linear" | | | | | | | | The configuration contains the following fields: | | | | | | | | - **userLV**: size of the user space, for example: **vgpaas/20%VG**. | | | | - **userPath**: mount path of the user space, for example: **/home/wqt-test**. | | | | - **diskType**: disk type. Currently, only the **evs**, **hdd**, and **ssd** are supported. | | | | - **lvType**: type of a logic volume. Currently, the value can be **linear** or **striped**. | | | | - **dockerThinpool**: Docker disk space, for example: **vgpaas/60%VG**. | | | | - **kubernetesLV**: kubelet size, for example: **vgpaas/20%VG**. | +-------------------------+-----------------------+-----------------------------------------------------------------------------------------------------------------+ .. _cce_02_0242__table9637161310338: .. table:: **Table 22** Data structure of the **status** field +-----------------------+-----------------------+------------------------------------------------------------------------------------------------------------------------------------------+ | Parameter | Type | Description | +=======================+=======================+==========================================================================================================================================+ | jobID | String | ID of the node creation job. You can :ref:`query job progress ` by job ID to keep updated on node creation progress. | +-----------------------+-----------------------+------------------------------------------------------------------------------------------------------------------------------------------+ | phase | String | Node status. | | | | | | | | - **Build**: The VM that hosts the node is being created. | | | | - **Active**: The node is ready for use. | | | | - **Abnormal**: The node is not ready for use. | | | | - **Deleting**: The node is being deleted. | | | | - **Installing**: The node is being installed. | | | | - **Upgrading**: The node is being upgraded. | +-----------------------+-----------------------+------------------------------------------------------------------------------------------------------------------------------------------+ | serverId | String | ID of the underlying ECS node. | +-----------------------+-----------------------+------------------------------------------------------------------------------------------------------------------------------------------+ | publicIP | String | Node EIP. If the ECS data is not synchronized in real time, you can click **Sync Node Data** on the console to manually update the data. | +-----------------------+-----------------------+------------------------------------------------------------------------------------------------------------------------------------------+ | privateIP | String | IP address in the private network segment of the primary NIC on the node. | +-----------------------+-----------------------+------------------------------------------------------------------------------------------------------------------------------------------+ .. _cce_02_0242__table483064395515: .. table:: **Table 23** Runtime +-----------------------+-----------------------+-----------------------------------------------------+ | Parameter | Type | Description | +=======================+=======================+=====================================================+ | name | String | Container runtime. The default value is **docker**. | | | | | | | | Enumeration values: | | | | | | | | - docker | | | | - containerd | +-----------------------+-----------------------+-----------------------------------------------------+ **Example response**: .. code-block:: { "kind": "Node", "apiVersion": "v3", "metadata": { "name": "myhost", "uid": "4d1ecb2c-229a-11e8-9c75-0255ac100ceb", "labels": { "foo": "bar" }, "annotations": { "annotation1": "abc" } }, "spec": { "flavor": "s1.medium", "az": "eu-de-01", "os": "EulerOS 2.5", "login": { "sshKey": "Keypai-demo" }, "rootVolume": { "volumetype": "SAS", "size": 40 }, "dataVolumes": [ { "volumetype": "SAS", "size": 100 } ], "publicIP": { "count": 2, "eip": { "iptype": "5_bgp", "bandwidth": { "size": 10, "sharetype": "PER", "chargemode": "traffic" } } }, "nodeNicSpec": { "primaryNic": { "subnetId": "2afc3d7f-07d1-4c25-ba2e-8ee48d253d9f" } }, "count": 2, "extendParam": { "chargingMode": 0, "ecs:performancetype": "normal", "init-node-password": "", "orderID": "", "productID": "" } }, "status": { "jobID": "2ec9b78d-9368-46f3-8f29-d1a95622a568" } } CCE Turbo cluster: .. code-block:: { "kind": "Node", "apiversion": "v3", "metadata": { "name": "turbo-cluster-node", "uid": "5ecfddfe-87db-11ec-b5e5-0255ac101514" }, "spec": { "flavor": "cce.c4.22xlarge.4.physical.129nic", "az": "eu-de-01", "login": { "sshKey": "id_rsa" }, "rootVolume": { "size": 40, "volumetype": "SAS", "hw:passthrough": true }, "dataVolumes": [ { "size": 100, "volumetype": "SAS", "hw:passthrough": true } ], "count": 1, "runtime": { "name": "containerd" }, "extendParam": { "alpha.cce/NodeImageID":"0fea78c3-1b31-4653-8859-ac151ccadcd4" } }, "status": { "jobID": "5ec1518c-87db-11ec-b5e5-0255ac101514" } } Status Code ----------- :ref:`Table 24 ` describes the status codes of this API. .. _cce_02_0242__en-us_topic_0079614900_table46761928: .. table:: **Table 24** Status code +-------------+----------------------------------------------------------------------------+ | Status Code | Description | +=============+============================================================================+ | 201 | The job for creating a node in a specified cluster is successfully issued. | +-------------+----------------------------------------------------------------------------+ For the description about error status codes, see :ref:`Status Code `.