Updated on 2024-11-12 GMT+08:00

Creating a Node Pool

Scenario

This section describes how to create a node pool and perform operations on the node pool. For details about how a node pool works, see Node Pool Overview.

Procedure

  1. Log in to the CCE console.
  2. Click the cluster name to access the cluster console. Choose Nodes in the navigation pane. In the right pane, click the Node Pools tab.
  3. In the upper right corner of the page, click Create Node Pool.

    Basic Settings

    Table 1 Basic settings

    Parameter

    Description

    Node Pool Name

    Name of a node pool. By default, the name is in the format of Cluster name-nodepool-Random number. If you do not want to use the default name format, you can customize the name.

    Enterprise Project

    This parameter is available only for enterprise users who have enabled an enterprise project, and the cluster version must be v1.21.15-r0, v1.23.14-r0, v1.25.9-r0, v1.27.6-r0, v1.28.4-r0, or later.

    After an enterprise project is selected, nodes will be created in the node pool within that project. To manage clusters and other resources like nodes, load balancers, and node security groups, you can use the Enterprise Project Management Service (EPS). For more details, see Enterprise Management.

    Configurations

    You can configure the flavor and OS of a cloud server, on which your containerized applications run.
    Table 2 Node configuration parameters

    Parameter

    Description

    Node Type

    Select a node type based on service requirements. Then, you can select a proper flavor from the node flavor list.

    CCE standard clusters support the following node types:
    • ECS (VM): A virtualized ECS is used as a cluster node.
    • ECS (physical machine): A QingTian-backed bare metal server is used as a cluster node.
    • BMS: A traditional bare metal server is used as a cluster node. Local disks of bare metal servers can be used as data disks.
    CCE Turbo clusters support the following node types:
    • ECS (VM): A virtualized ECS is used as a cluster node. A CCE Turbo cluster supports only the cloud servers that allow multiple ENIs. Select a server type displayed on the CCE console.
    • ECS (physical machine): A QingTian-backed bare metal server is used as a cluster node.

    Specifications

    Select a node flavor based on service requirements. The available node flavors vary depending on regions or AZs. For details, see the CCE console.
    NOTE:
    • If a node pool is configured with multiple node flavors, only the flavors (which can be located in different AZs) of the same node type are supported. For example, a node pool consisting of general computing-plus nodes supports only general computing-plus node flavors, but not the flavors of general computing nodes.
    • A maximum of 10 node flavors can be added to a node pool (the flavors in different AZs are counted separately). When adding a node flavor, you can choose multiple AZs, but you need to specify them.
    • Nodes in a newly created node pool are created using the default flavor. If the resources for the default flavor are insufficient, node creation will fail.
    • After a node pool is created, the flavors of existing nodes cannot be deleted.

    Container Engine

    The container engines supported by CCE include Docker and containerd, which may vary depending on cluster types, cluster versions, and OSs. Select a container engine based on the information displayed on the CCE console. For details, see Mapping Between Node OSs and Container Engines.

    OS

    Select an OS type. Different types of nodes support different OSs.
    • Public image: Select a public image for the node.
    • Private image: Select a private image for the node. For details about how to create a private image, see Creating a Custom CCE Node Image.
    NOTE:

    Service container runtimes share the kernel and underlying calls of nodes. To ensure compatibility, select a Linux distribution version that is the same as or close to that of the final service container image for the node OS.

    Login Mode

    • Password

      The default username is root. Enter the password for logging in to the node and confirm the password.

      Be sure to remember the password as you will need it when you log in to the node.

    • Key Pair

      Select the key pair used to log in to the node. You can select a shared key.

      A key pair is used for identity authentication when you remotely log in to a node. If no key pair is available, click Create Key Pair. For details about how to create a key pair, see Creating a Key Pair.

    • Inherit Password From Image (supported for ECSs or PMs whose OSs are private images)

      Retain the password of the selected image. To use this option, ensure that you have set a password for the selected image.

    Storage Settings

    Configure storage resources on a node for the containers running on it. Select a disk type and configure its size based on service requirements. For details about EVS disks, see Disk Types and Performance.
    Table 3 Configuration parameters

    Parameter

    Description

    System Disk

    System disk used by the node OS. The value ranges from 40 GiB to 1024 GiB. The default value is 50 GiB.

    NOTE:

    General-purpose SSD V2 disks allow you to specify the disk IOPS and throughput. For details, see EVS performance data. General-purpose SSD V2 EVS disks are available only in clusters of v1.21.15-r0, v1.23.14-r0, v1.25.9-r0, v1.27.6-r0, v1.28.4-r0, or later versions.

    System Disk Encryption: System disk encryption safeguards your data. Snapshots generated from encrypted disks and disks created using these snapshots automatically inherit the encryption setting. Only the nodes of the Elastic Cloud Server (VM) type in certain regions support system disk encryption. For details, see the console.
    • Not encrypted is selected by default.
    • If you select Enabled (key) for System Disk Encryption, choose an existing key. If no key is available, click View Key List and create a key. After the key is created, click the refresh icon next to the text box.
    • If you select Enabled (KMS key ID) for System Disk Encryption, enter a KMS key (which can be shared by others) in the current region.

    System Component Storage

    Select a disk for storing system components.

    • Data Disk: added for storing container runtime and kubelet components by default. The disk size ranges from 20 GiB to 32768 GiB. The default value is 100 GiB. This data disk cannot be deleted or detached. Otherwise, the node will be unavailable.
    • System Disk: stores CCE resources such as downloaded images, ephemeral storage for containers, and container stdout logs. If the system disk is fully occupied, it will negatively affect the stability of the node.
    NOTE:

    In clusters of v1.23.18-r0, v1.25.13-r0, v1.27.10-r0, v1.28.8-r0, v1.29.4-r0, or later, you can select a disk for storing system components. If CCE Node Problem Detector is used, ensure that its version is 1.19.2 or later.

    Data Disk

    At least one data disk is required for the container runtime and kubelet components in clusters of a version earlier than v1.23.18-r0, v1.25.13-r0, v1.27.10-r0, v1.28.8-r0, or v1.29.4-r0. This data disk cannot be deleted or detached. Otherwise, the node will be unavailable.
    • Default data disk: used for container runtime and kubelet components. The disk size ranges from 20 GiB to 32768 GiB. The default value is 100 GiB.
    • Other common data disks: You can set the data disk size to a value ranging from 10 GiB to 32768 GiB. The default value is 100 GiB.

    In clusters of v1.23.18-r0, v1.25.13-r0, v1.27.10-r0, v1.28.8-r0, v1.29.4-r0, or later, if System Component Storage is set to System Disk, you have the option not to add the default data disk. In this case, all data disks are common ones: You can set the data disk size to a value ranging from 10 GiB to 32768 GiB. The default value is 100 GiB.

    NOTE:
    • If the node flavor is disk-intensive or ultra-high I/O, one data disk can be a local disk.
    • Local disks may break down and do not ensure data reliability. Store your service data in EVS disks, which are more reliable than local disks.
    • General-purpose SSD V2 disks allow you to specify the disk IOPS and throughput. For details, see EVS performance data. General-purpose SSD V2 EVS disks are available only in clusters of v1.21.15-r0, v1.23.14-r0, v1.25.9-r0, v1.27.6-r0, v1.28.4-r0, or later versions.

    Advanced Settings

    Expand the area and configure the following parameters:

    • Data Disk Space Allocation: allocates space for container engines, images, and ephemeral storage for them to run properly. For details about how to allocate data disk space, see Space Allocation of a Data Disk.
    • Data Disk Encryption: Data disk encryption safeguards your data. Snapshots generated from encrypted disks and disks created using these snapshots automatically inherit the encryption setting. BMS nodes do not support data disk encryption, and this option is available only in certain regions. For details, see the console.
      • Not encrypted is selected by default.
      • If you select Enabled (key) for Data Disk Encryption, choose an existing key. If no key is available, click View Key List and create a key. After the key is created, click the refresh icon next to the text box.
      • If you select Enabled (KMS key ID) for Data Disk Encryption, enter a KMS key (which can be shared by others) in the current region.

    Adding data disks

    A maximum of 16 data disks can be attached to an ECS and 10 to a BMS. By default, a raw disk is created without any processing. You can also click Expand and select any of the following options:

    • Default: By default, a raw disk is created without any processing.
    • Mount Disk: The data disk is attached to a specified directory.
    • Use as PV: applicable when there is a high performance requirement on PVs. The node.kubernetes.io/local-storage-persistent label is added to the node with PV configured. The value is linear or striped.
    • Use as ephemeral volume: applicable when there is a high performance requirement on emptyDir.
    NOTE:
    • Local PVs are supported only when the cluster version is v1.21.2-r0 or later and the Everest add-on version is 2.1.23 or later. Version 2.1.23 or later is recommended.
    • Local EVs are supported only when the cluster version is v1.21.2-r0 or later and the Everest add-on version is 1.2.29 or later.
    Local PVs and local EVs can be written in the following modes:
    • Linear: A linear logical volume integrates one or more physical volumes. Data is written to the next physical volume when the previous one is used up.
    • Striped: A striped logical volume stripes data into blocks of the same size and stores them in multiple physical volumes in sequence. This allows data to be concurrently read and written. A storage pool consisting of striped volumes cannot be scaled-out. This option can be selected only when multiple volumes exist.

    Network Settings

    Configure networking resources to allow node and containerized application access.
    Table 4 Configuration parameters

    Parameter

    Description

    Virtual Private Cloud

    The VPC to which the cluster belongs by default, which cannot be changed.

    Node Subnet

    The node subnet selected during cluster creation is used by default. You can choose another subnet instead.

    • Multiple subnets: You can select multiple subnets in the same VPC for nodes. Newly added nodes will preferentially use the IP addresses from the top-ranking subnet.
    • Single subnet: Only one subnet is configured for your node pool. If the IP addresses of a single subnet are insufficient, configure multiple subnets. Otherwise, a node pool scale-out may fail.

    Node IP Address

    Random allocation is supported.

    Associate Security Group

    Security group used by the nodes created in the node pool. A maximum of five security groups can be selected.

    When a cluster is created, a node security group named {Cluster name}-cce-node-{Random ID} is created and used by default.

    Traffic needs to pass through certain ports in the node security group to ensure node communications. Ensure that you have enabled these ports if you select another security group. For details, see How Can I Configure a Security Group Rule in a Cluster?

    NOTE:

    After a node pool is created, its associated security group cannot be modified.

    Advanced Settings

    Configure advanced node capabilities such as labels, taints, and startup command.
    Table 5 Advanced configuration parameters

    Parameter

    Description

    Resource Tag

    You can add resource tags to classify resources.

    You can create predefined tags on the TMS console. The predefined tags are available to all resources that support tags. You can use these tags to improve the tag creation and resource migration efficiency. For details, see Creating Predefined Tags.

    CCE will automatically create the "CCE-Dynamic-Provisioning-Node=Node ID" tag.

    Kubernetes Label

    A key-value pair added to a Kubernetes object (such as a pod). After specifying a label, click Add Label for more. A maximum of 20 labels can be added.

    Labels can be used to distinguish nodes. With workload affinity settings, container pods can be scheduled to a specified node. For more information, see Labels and Selectors.

    Taint

    This parameter is left blank by default. You can add taints to configure anti-affinity for the node. A maximum of 20 taints are allowed for each node. 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 contain 1 to 63 characters, starting with a letter or digit. Only letters, digits, hyphens (-), underscores (_), and periods (.) are allowed.
    • Effect: Available options are NoSchedule, PreferNoSchedule, and NoExecute.

    For details, see Managing Node Taints.

    NOTE:

    For a cluster of v1.19 or earlier, the workload may have been scheduled to a node before the taint is added. To avoid such a situation, select a cluster of v1.19 or later.

    Synchronization for Existing Nodes

    After the options are selected, changes to resource tags and Kubernetes labels/taints in a node pool will be synchronized to existing nodes in the node pool.

    New Node Scheduling

    Default scheduling policy for the nodes newly added to a node pool. If you select Unschedulable, newly created nodes in the node pool will be labeled as unschedulable. In this way, you can perform some operations on the nodes before pods are scheduled to these nodes.

    Scheduled Scheduling: After scheduled scheduling is enabled, new nodes will be automatically scheduled after the custom time expires.

    • Disabled: By default, scheduled scheduling is not enabled for new nodes. To manually enable this function, go to the node list. For details, see Configuring a Node Scheduling Policy in One-Click Mode.
    • Custom: the default timeout for unschedulable nodes. The value ranges from 0 to 99 in the unit of minutes.
    NOTE:
    • If auto scaling of node pools is also required, ensure the scheduled scheduling is less than 15 minutes. If a node added through Autoscaler cannot be scheduled for more than 15 minutes, Autoscaler determines that the scale-out failed and triggers another scale-out. Additionally, if the node cannot be scheduled for more than 20 minutes, the node will be scaled in by Autoscaler.
    • After this function is enabled, nodes will be tainted with node.cloudprovider.kubernetes.io/uninitialized during a node pool creation or update.

    Max. Pods

    Maximum number of pods that can run on the node, including the default system pods. Value range: 16 to 256

    This limit prevents the node from being overloaded with pods.

    This number is also decided by other factors. For details, see Maximum Number of Pods That Can Be Created on a Node.

    ECS Group

    An ECS group logically groups ECSs. The ECSs in the same ECS group comply with the same policy associated with the ECS group.

    Anti-affinity: ECSs in an ECS group are deployed on different physical hosts to improve service reliability.

    Select an existing ECS group, or click Add ECS Group to create one. After the ECS group is created, click the refresh icon.

    Pre-installation Command

    Installation script command, in which Chinese characters are not allowed. The script command will be Base64-transcoded.

    The script will be executed before Kubernetes software is installed. Note that if the script is incorrect, Kubernetes software may fail to be installed.

    Post-installation Command

    Installation script command, in which Chinese characters are not allowed. The script command will be Base64-transcoded.

    The script will be executed after Kubernetes software is installed, which does not affect the installation.

    NOTE:

    Do not run the reboot command in the post-installation script to restart the system immediately. To restart the system, run the shutdown -r 1 command to restart with a delay of one minute.

    Agency

    An agency is created by the tenant administrator on the IAM console. Using an agency, you can share your cloud server resources with another account, or entrust a more professional person or team to manage your resources.

    If no agency is available, click Create Agency on the right to create one.

    User-defined node name prefix and suffix

    Custom name prefix and suffix of a node in a node pool. After the configuration, the nodes in the node pool will be named with the configured prefix and suffix. For example, if the prefix is prefix- and the suffix is -suffix, the nodes in the node pool will be named in the format of "prefix-Node pool name with five-digit random characters-suffix".

    NOTICE:
    • A prefix and suffix can be customized only when a node pool is created, and they cannot be modified after the node pool is created.
    • A prefix can end with a special character, and a suffix can start with a special character.
    • A node name consists of a maximum of 56 characters in the format of "Prefix-Node pool name with five-digit random characters-Suffix".
    • A node name does not support the combination of a period (.) and special characters (such as .., .-, or -.).
    • This function is available only in clusters of v1.28.1, v1.27.3, v1.25.6, v1.23.11, v1.21.12, or later.

    Kubernetes Node Name

    The Kubernetes node name is the value of metadata.labels.kubernetes.io/hostname in the YAML file of the node. The following two values are supported:
    • Node private IP (default)
    • Cloud server name: Use the custom cloud server name configured in node settings. Cloud server names may be duplicate. To prevent name conflicts, CCE randomly adds a five-digit random suffix to the end of each cloud server name.
      NOTICE:
      • This function is available only when the cluster version is v1.23.4-r0 or later.
      • The name of a cloud server can be specified as the name of a Kubernetes node only when the cloud server is created or managed. After the cloud server is created or managed, the Kubernetes node name cannot be changed. For details, see ECS Names, Node Names, and Kubernetes Node Names.
      • Existing nodes in the cluster still use the private IP address as the Kubernetes node name. Newly created or accepted nodes can use cloud server names.

        In this scenario, some Kubernetes node names may be inconsistent with node private IP addresses, and adaptation is required. For example, when configuring node affinity, you cannot use the node private IP address as the node name to configure a scheduling policy.

        To change the Kubernetes node name of the existing nodes to the cloud server name, remove these nodes from the cluster and accept them again. Before doing so, learn about the possible impacts on services when removing or accepting a node.

  4. Click Next: Confirm. Ensure that you have read and understood the Image Management Service Statement .
  5. Click Submit.

Related Operations

By default, the total number of nodes in a node pool is set to 0 upon creation. You will need to manually increase the number of nodes. For details, see Scaling a Node Pool.