:original_name: cce_02_0354.html
.. _cce_02_0354:
Creating a Node Pool
====================
Function
--------
This API is used to create a node pool in a specified cluster.
URI
---
POST /api/v3/projects/{project_id}/clusters/{cluster_id}/nodepools
:ref:`Table 1 ` describes the parameters of the API.
.. _cce_02_0354__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_0354__table13796145119241:
.. table:: **Table 2** Parameters in the request header
+-----------------+-----------------+-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Parameter | Mandatory | String | Description |
+=================+=================+=================+===============================================================================================================================================================================================================================================================================+
| Content-Type | Yes | String | Message body type (format). |
| | | | |
| | | | Default: **application/json** |
+-----------------+-----------------+-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| 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 on how to obtain a user token, see :ref:`API Usage Guidelines `. |
+-----------------+-----------------+-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
.. _cce_02_0354__table1644211019:
.. table:: **Table 3** NodePool structure
+------------+-----------+--------------------------------------------------------+-------------------------------------------+
| Parameter | Mandatory | Type | Description |
+============+===========+========================================================+===========================================+
| kind | Yes | String | API type, which is fixed at **NodePool**. |
+------------+-----------+--------------------------------------------------------+-------------------------------------------+
| apiVersion | Yes | String | API version, which is fixed at **v3**. |
+------------+-----------+--------------------------------------------------------+-------------------------------------------+
| metadata | Yes | :ref:`metadata ` object | Metadata of the node pool. |
+------------+-----------+--------------------------------------------------------+-------------------------------------------+
| spec | Yes | :ref:`spec ` object | Parameters of the node pool. |
+------------+-----------+--------------------------------------------------------+-------------------------------------------+
.. _cce_02_0354__table13456192212:
.. table:: **Table 4** Data structure of the **metadata** field
+-----------------+-----------------+-----------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Parameter | Mandatory | Type | Description |
+=================+=================+=================+==========================================================================================================================================================================================================+
| name | Yes | String | Node pool name. |
| | | | |
| | | | Naming rule: Enter 1 to 50 characters that starts with a lowercase letter and cannot end with a hyphen (-). Lowercase letters, digits, and hyphens (-) are allowed. The value cannot be **DefaultPool**. |
+-----------------+-----------------+-----------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
.. _cce_02_0354__table620623542313:
.. table:: **Table 5** Data structure of the **spec** field
+------------------+-----------------+---------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Parameter | Mandatory | Type | Description |
+==================+=================+===============================================================+=====================================================================================================================================================================================================================================================================================================================================+
| type | No | String | Node pool type. If this parameter is left blank, the value **vm** is used by default. |
| | | | |
| | | | - **vm**: ECS |
| | | | - **ElasticBMS**: BMS. This value is valid in CCE Turbo cluster. |
+------------------+-----------------+---------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| nodeTemplate | Yes | :ref:`nodeTemplate ` object | Parameters of the node pool template. |
| | | | |
| | | | If **az** is set to **random**, when you create a node pool or update the number of nodes in a node pool, a scaling task is triggered. The system selects an AZ from all AZs where scaling is allowed to add nodes based on priorities. |
| | | | |
| | | | AZs with a smaller number of existing nodes have a higher priority. If AZs have the same number of nodes, the system selects the AZ based on the AZ sequence. Example: |
| | | | |
| | | | - Creating nodes in a node pool for the first time: Assume that AZ 1, AZ 2, and AZ 3 have available resources. These AZs have the same priority because they have no existing nodes. In this case, AZ 1 is selected by sequence to create all nodes to be added. |
| | | | - Adding nodes to a node pool that already has nodes: |
| | | | |
| | | | - Assume that the node pool has 1 node in AZ 1, 3 in AZ 2, and 2 in AZ 3, and that resources in AZ 1 have been sold out. Only AZ 2 and AZ 3 are available for scaling. In this case, AZ 3 has a higher priority than AZ 2 because AZ 3 has less nodes. Therefore, all nodes to be added will be created in AZ 3. |
| | | | - Assume that the node pool has 1 node in AZ 1, 2 in AZ 2, and 2 in AZ 3, and that resources in AZ 1 have been sold out. Only AZ 2 and AZ 3 are available for scaling. In this case, AZ 2 and AZ 3 have the same priority because they have the same number of nodes. Therefore, all nodes to be added will be created in AZ 2. |
+------------------+-----------------+---------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| initialNodeCount | Yes | Integer | Expected number of nodes in this node pool. The value cannot be greater than the maximum number of nodes allowed for the cluster. |
+------------------+-----------------+---------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| autoscaling | No | :ref:`autoscaling ` object | Auto scaling parameters. |
+------------------+-----------------+---------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| nodeManagement | No | :ref:`nodeManagement ` object | Node management parameters. |
+------------------+-----------------+---------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
.. _cce_02_0354__table3150105216225:
.. table:: **Table 6** Data structure of the **nodeTemplate** 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 | - 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. |
+-----------------+-----------------+--------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| 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. |
+-----------------+-----------------+--------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| 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. This field can be set to **0** for a node pool. |
+-----------------+-----------------+--------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| 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" |
| | | | }] |
+-----------------+-----------------+--------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| nodeNicSpec | No | :ref:`nodeNicSpec ` object | Description about the node NIC. |
+-----------------+-----------------+--------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
.. _cce_02_0354__table10946114617286:
.. table:: **Table 7** 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_0354__table1359314517:
.. table:: **Table 8** 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_0354__table15849123210415:
.. table:: **Table 9** 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_0354__table139179586343:
.. table:: **Table 10** 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. |
+-----------------+-----------------+----------------------------------------------------+---------------------------------------------------------------------+
.. _cce_02_0354__table135065714419:
.. table:: **Table 11** Data structure of the **eip** field
+-----------+-----------+------------------------------------------------------------+----------------------------------+
| Parameter | Mandatory | Type | Description |
+===========+===========+============================================================+==================================+
| iptype | Yes | String | Type of the EIP. |
+-----------+-----------+------------------------------------------------------------+----------------------------------+
| bandwidth | Yes | :ref:`bandwidth ` object | Bandwidth parameters of the EIP. |
+-----------+-----------+------------------------------------------------------------+----------------------------------+
.. _cce_02_0354__table16381121974213:
.. table:: **Table 12** Data structure of the **bandwidth** field
+-----------------+-----------------+-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Parameter | Mandatory | Type | Description |
+=================+=================+=================+=================================================================================================================================================================================================+
| chargemode | No | String | Bandwidth billing mode. |
| | | | |
| | | | - If this parameter is not carried, the node is billed by bandwidth. |
| | | | - If this parameter is carried but is left blank, the node is billed by bandwidth. |
| | | | - If this parameter is set to **traffic**, the node is billed by traffic. |
| | | | - If this parameter is set to another value, node creation will fail. |
| | | | |
| | | | .. note:: |
| | | | |
| | | | - Billed by bandwidth: The billing will be based on the data transfer rate (in Mbps) of public networks. If your bandwidth usage is higher than 10%, this billing mode is recommended. |
| | | | - Billed by traffic: The billing will be based on the total traffic (in GB) transferred on public networks. If your bandwidth usage is lower than 10%, this billing mode is recommended. |
+-----------------+-----------------+-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| size | Yes | Integer | Bandwidth size. |
+-----------------+-----------------+-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| sharetype | Yes | String | Bandwidth sharing type. |
+-----------------+-----------------+-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
.. _cce_02_0354__table153332427337:
.. table:: **Table 13** Data structure of the spec/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. |
+-------------------------+-----------------+-----------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| 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**. |
+-------------------------+-----------------+-----------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| publicKey | No | String | Public key of the node. Used when creating a key pair. |
+-------------------------+-----------------+-----------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| nicMultiqueue | No | String | ENI queue settings, the default setting is: |
| | | | |
| | | | .. code-block:: |
| | | | |
| | | | "[{\"queue\":4}]" |
| | | | |
| | | | - **queue** indicates the number of ENI queues. |
| | | | - Supported proportions are {"1":128, "2":92, "4":92, "8":32, "16":16, "28":9}. That is, there is one queue, a maximum of 128 ENIs can be bound. If there are two queues, a maximum of 92 ENIs can be bound. |
| | | | - A larger number of ENI queues indicates higher performance but fewer ENIs can be bound. The queue settings cannot be changed after the node pool is created. |
+-------------------------+-----------------+-----------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| nicThreshold | No | String | ENI pre-binding thresholds, the default setting is: |
| | | | |
| | | | .. code-block:: |
| | | | |
| | | | "0.3:0.6" |
| | | | |
| | | | - The first decimal place indicates the low threshold. Formula: Minimum number of pre-bound ENIs = Min (128 x Low threshold, Maximum number of ENIs that can be bound to the queue) |
| | | | - The second decimal place indicates the high threshold. Formula: Maximum number of pre-bound ENIs = Min (128 x High threshold, Maximum number of ENIs that can be bound to the queue) |
| | | | - The high and low thresholds of the number of pre-bound ENIs are restricted by the maximum number of ENIs that can be bound to a queue. |
| | | | - ENIs bound to a BMS node = Number of ENIs currently used by pods + Number of pre-bound ENIs |
| | | | - CCE keeps binding ENIs to a BMS node to ensure that the minimum number of ENIs is always reached. (Min. pre-bound ENIs <= Number of pre-bound ENIs + Number of ENIs currently used by pods) |
| | | | - At every 2 minutes, CCE releases ENIs pre-bound to a BMS node to ensure that the maximum number of ENIs will not be exceeded. (Max. pre-bound ENIs >= Number of pre-bound ENIs + Number of ENIs currently used by pods) |
| | | | - Both the thresholds are one-decimal-place values ranging from 0.0 to 1.0. The low threshold must be smaller than or equal to the high one. |
| | | | - This field can be configured only for BMS nodes in a CCE Turbo cluster. |
| | | | - Pre-binding ENIs can speed up workload creation but occupies IP addresses. |
+-------------------------+-----------------+-----------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
.. _cce_02_0354__table322873620312:
.. table:: **Table 14** 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_0354__request_nicspec:
.. table:: **Table 15** 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_0354__table1472543502018:
.. table:: **Table 16** Data structure of the **autoscaling** field
+-----------------------+-----------+---------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Parameter | Mandatory | Type | Description |
+=======================+===========+=========+=============================================================================================================================================================================================================================+
| enable | No | Boolean | Whether to enable auto scaling. |
+-----------------------+-----------+---------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| minNodeCount | No | Integer | Minimum number of nodes after a scale-down if auto scaling is enabled. |
+-----------------------+-----------+---------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| maxNodeCount | No | Integer | Maximum number of nodes after a scale-up if auto scaling is enabled. The value of this parameter must be greater than or equal to that of **minNodeCount** and does not exceed the maximum number of nodes for the cluster. |
+-----------------------+-----------+---------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| scaleDownCooldownTime | No | Integer | Interval during which nodes added after a scale-up will not be deleted, in minutes. |
+-----------------------+-----------+---------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| priority | No | Integer | Node pool weight. A higher weight indicates a higher priority in scale-up. |
+-----------------------+-----------+---------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
.. _cce_02_0354__table978201612141:
.. table:: **Table 17** Data structure of the nodeManagement field
+----------------------+-----------+--------+-------------------------------------------------------------------------------------------------------------+
| Parameter | Mandatory | Type | Description |
+======================+===========+========+=============================================================================================================+
| serverGroupReference | No | String | ECS group ID. If this parameter is specified, all nodes in the node pool will be created in this ECS group. |
+----------------------+-----------+--------+-------------------------------------------------------------------------------------------------------------+
**Example Request**
CCE cluster:
.. code-block::
{
"kind": "NodePool",
"apiVersion": "v3",
"metadata": {
"name": "wyr-17-nodepool-53042"
},
"spec": {
"initialNodeCount": 0,
"type": "vm",
"autoscaling": {
"enable": true,
"minNodeCount": 1,
"maxNodeCount": 3,
"scaleDownCooldownTime": 10,
"priority": 1
},
"nodeManagement": {
"serverGroupReference": "2129f95a-f233-4cd8-a1b2-9c0acdf918d3"
},
"nodeTemplate": {
"flavor": "s6.large.2",
"az": "eu-de-01",
"os": "EulerOS 2.5",
"login": {
"sshKey": "KeyPair-nodepool"
},
"rootVolume": {
"volumetype": "SATA",
"size": 40
},
"dataVolumes": [
{
"volumetype": "SATA",
"size": 100,
"extendParam": {
"useType": "docker"
}
}
],
"billingMode": 0,
"extendParam": {
"alpha.cce/preInstall": "bHMgLWw=",
"alpha.cce/postInstall": "bHMgLWwK",
"alpha.cce/NodeImageID": "85bd7ec5-bca4-4f5f-947b-6c1bf02599d3",
"maxPods": 110,
"DockerLVMConfigOverride": "dockerThinpool=vgpaas/90%VG;kubernetesLV=vgpaas/10%VG;diskType=evs;lvType=linear"
},
"k8sTags": {
"tag1": "value1",
"tag2": "value2"
},
"taints": [
{
"key": "aaa",
"value": "bbb",
"effect": "NoSchedule"
},
{
"key": "ccc",
"value": "ddd",
"effect": "NoSchedule"
}
],
"userTags": [
{
"key": "resource-tag1",
"value": "value1"
},
{
"key": "resource-tag2",
"value": "value2"
}
],
"nodeNicSpec": {
"primaryNic": {
"subnetId": "31be174a-0c7f-4b71-bb0d-d325fecb90ef"
}
}
}
}
}
CCE Turbo cluster:
.. code-block::
{
"kind": "NodePool",
"apiVersion": "v3",
"metadata": {
"name": "turbo-cluster-nodepool1"
},
"spec": {
"initialNodeCount": 0,
"type": "ElasticBMS",
"nodeTemplate": {
"flavor": "cce.c4.22xlarge.4.physical.129nic",
"az": "eu-de-01",
"login": {
"sshKey":"id_rsa"
},
"rootVolume": {
"volumetype": "SAS",
"size": 40,
"hw:passthrough": true},
"dataVolumes": [
{
"volumetype": "SAS",
"size": 100,
"hw:passthrough": true
}
],
"runtime": {
"name":"containerd"
},
"extendParam": {
"alpha.cce/NodeImageID":"0fea78c3-1b31-4653-8859-ac151ccadcd4"
}
}
}
}
Response
--------
**Response parameters:**
:ref:`Table 18 ` describes the response parameters.
.. _cce_02_0354__table835415466262:
.. table:: **Table 18** Response parameters
+------------+------------------------------------------------------------+-----------------------------------------------+
| Parameter | Type | Description |
+============+============================================================+===============================================+
| kind | String | API type. The value is fixed to **NodePool**. |
+------------+------------------------------------------------------------+-----------------------------------------------+
| apiVersion | String | API version. The value is fixed to **v3**. |
+------------+------------------------------------------------------------+-----------------------------------------------+
| metadata | :ref:`metadata ` object | Node pool metadata. |
+------------+------------------------------------------------------------+-----------------------------------------------+
| spec | :ref:`spec ` object | Detailed node pool parameters. |
+------------+------------------------------------------------------------+-----------------------------------------------+
| status | :ref:`status ` object | Node pool status. |
+------------+------------------------------------------------------------+-----------------------------------------------+
.. _cce_02_0354__table173551146152616:
.. table:: **Table 19** Data structure of the metadata field
========= ====== ======================
Parameter Type Description
========= ====== ======================
name String Name of the node pool.
uid String ID of the node pool.
========= ====== ======================
.. _cce_02_0354__table1735515465260:
.. table:: **Table 20** Data structure of the spec field
+------------------+----------------------------------------------------------------+----------------------------------------------------+
| Parameter | Type | Description |
+==================+================================================================+====================================================+
| type | String | Node type. Currently, only VM nodes are supported. |
+------------------+----------------------------------------------------------------+----------------------------------------------------+
| initialNodeCount | Integer | Initial number of nodes for the node pool. |
+------------------+----------------------------------------------------------------+----------------------------------------------------+
| nodeTemplate | :ref:`nodeTemplate ` object | Detailed parameters of the node pool template. |
+------------------+----------------------------------------------------------------+----------------------------------------------------+
| autoscaling | :ref:`autoscaling ` object | Auto scaling parameters. |
+------------------+----------------------------------------------------------------+----------------------------------------------------+
| nodeManagement | :ref:`nodeManagement ` object | Node management parameters. |
+------------------+----------------------------------------------------------------+----------------------------------------------------+
.. _cce_02_0354__table14356154632610:
.. table:: **Table 21** Data structure of the autoscaling field
+-----------------------+-----------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Parameter | Type | Description |
+=======================+=======================+====================================================================================================================================================================================================================+
| enable | Boolean | Whether to enable auto scaling. |
+-----------------------+-----------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| minNodeCount | Integer | Minimum number of nodes allowed if auto scaling is enabled. The value cannot be greater than the maximum number of nodes allowed by the cluster specifications. |
| | | |
| | | Minimum: **0** |
+-----------------------+-----------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| maxNodeCount | Integer | Maximum number of nodes allowed if auto scaling is enabled. This value must be greater than or equal to the value of **minNodeCount** and cannot exceed the maximum number of nodes in the cluster specifications. |
| | | |
| | | Minimum: **0** |
+-----------------------+-----------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| scaleDownCooldownTime | Integer | Interval between two scaling operations, in minutes. During this period, nodes added after a scale-up will not be deleted. |
| | | |
| | | Minimum: **0** |
| | | |
| | | Maximum: **2147483647** |
+-----------------------+-----------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| priority | Integer | Weight of a node pool. A node pool with a higher weight has a higher priority during scaling. |
+-----------------------+-----------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
.. _cce_02_0354__table1778609171919:
.. table:: **Table 22** Data structure of the nodeManagement field
+----------------------+--------+-------------------------------------------------------------------------------------------------------------+
| Parameter | Type | Description |
+======================+========+=============================================================================================================+
| serverGroupReference | String | ECS group ID. If this parameter is specified, all nodes in the node pool will be created in this ECS group. |
+----------------------+--------+-------------------------------------------------------------------------------------------------------------+
.. _cce_02_0354__table19851129411:
.. table:: **Table 23** Data structure of the status field
+-----------------------+-----------------------+---------------------------------------------------------------+
| Parameter | Type | Description |
+=======================+=======================+===============================================================+
| currentNode | Integer | Number of nodes in the node pool. |
+-----------------------+-----------------------+---------------------------------------------------------------+
| deletingNode | Integer | Number of nodes being deleted in the node pool. |
+-----------------------+-----------------------+---------------------------------------------------------------+
| creatingNode | Integer | Number of nodes being created in the node pool. |
+-----------------------+-----------------------+---------------------------------------------------------------+
| phase | String | Node pool status. |
| | | |
| | | - **Synchronizing**: The node is being synchronized. |
| | | - **Synchronized**: The node has been synchronized. |
| | | - **SoldOut**: Nodes have been sold out. |
| | | - **Deleting**: The node is being deleted. |
| | | - **Error**: An error occurred when the node is being added. |
| | | |
| | | Enumeration values: |
| | | |
| | | - **Synchronizing** |
| | | - **Synchronized** |
| | | - **SoldOut** |
| | | - **Deleting** |
| | | - **Error** |
| | | |
| | | .. note:: |
| | | |
| | | If the status is blank, the status is normal. |
+-----------------------+-----------------------+---------------------------------------------------------------+
| jobId | String | ID of the job to delete the node pool. |
+-----------------------+-----------------------+---------------------------------------------------------------+
**Example response:**
CCE cluster:
.. code-block::
{
"kind": "NodePool",
"apiVersion": "v3",
"metadata": {
"name": "wyr-17-nodepool-53042",
"uid": "feec6013-cd7e-11ea-8c7a-0255ac100be7"
},
"spec": {
"initialNodeCount": 0,
"type": "vm",
"nodeTemplate": {
"flavor": "s6.large.2",
"az": "eu-de-01",
"os": "EulerOS 2.5",
"login": {
"sshKey": "KeyPair-nodepool",
"userPassword": {}
},
"rootVolume": {
"volumetype": "SATA",
"size": 40
},
"dataVolumes": [
{
"volumetype": "SATA",
"size": 100,
"extendParam": {
"useType": "docker"
}
}
],
"publicIP": {
"eip": {
"bandwidth": {}
}
},
"nodeNicSpec": {
"primaryNic": {
"subnetId": "31be174a-0c7f-4b71-bb0d-d325fecb90ef"
}
},
"billingMode": 0,
"taints": [
{
"key": "aaa",
"value": "bbb",
"effect": "NoSchedule"
},
{
"key": "ccc",
"value": "ddd",
"effect": "NoSchedule"
}
],
"k8sTags": {
"cce.cloud.com/cce-nodepool": "wyr-17-nodepool-53042",
"tag1": "value1",
"tag2": "value2"
},
"userTags": [
{
"key": "resource-tag1",
"value": "value1"
},
{
"key": "resource-tag2",
"value": "value2"
}
],
"extendParam": {
"DockerLVMConfigOverride": "dockerThinpool=vgpaas/90%VG;kubernetesLV=vgpaas/10%VG;diskType=evs;lvType=linear",
"alpha.cce/NodeImageID": "85bd7ec5-bca4-4f5f-947b-6c1bf02599d3",
"alpha.cce/postInstall": "bHMgLWwK",
"alpha.cce/preInstall": "bHMgLWw=",
"maxPods": 110,
"publicKey": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQA***d-by-Nova\n"
}
},
"autoscaling": {
"enable": true,
"minNodeCount": 1,
"maxNodeCount": 3,
"scaleDownCooldownTime": 10,
"priority": 1
},
"nodeManagement": {
"serverGroupReference": "2129f95a-f233-4cd8-a1b2-9c0acdf918d3"
}
},
"status": {
"currentNode": 0,
"deletingNode": 0,
"creatingNode": 0,
"phase": ""
}
}
CCE Turbo cluster:
.. code-block::
{
"kind": "NodePool",
"apiVersion": "v3",
"metadata": {
"name": "turbo-cluster-nodepool1",
"uid": "99addaa2-69eb-11ea-a592-0255ac1001bb"
},
"spec": {
"initialNodeCount": 0,
"type": "ElasticBMS",
"nodeTemplate": {
"flavor": "cce.c4.22xlarge.4.physical.129nic",
"az": "eu-de-01",
"os": "EulerOS 2.9",
"login": {
"sshKey":"id_rsa"
},
"rootVolume": {
"volumetype": "SAS",
"size": 40,
"hw:passthrough": true},
"dataVolumes": [
{
"volumetype": "SAS",
"size": 100,
"hw:passthrough": true
}
],
"runtime": {
"name":"containerd"
},
"extendParam": {
"alpha.cce/NodeImageID":"0fea78c3-1b31-4653-8859-ac151ccadcd4"
}
}
},
"status": {
"phase": ""
}
}
Status Code
-----------
:ref:`Table 24 ` describes the status code of this API.
.. _cce_02_0354__zh-cn_topic_0079614900_table46761928:
.. table:: **Table 24** Status code
+-------------+-------------------------------------------------------------------------------+
| Status Code | Description |
+=============+===============================================================================+
| 201 | The job for creating a node in a specified cluster is successfully delivered. |
+-------------+-------------------------------------------------------------------------------+
For the description about error status codes, see :ref:`Status Code `.