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

Creating a Node

Prerequisites

  • At least one cluster has been created.
  • A key pair has been created for identity authentication upon remote node login.

    If you use a password to log in to a node, skip this step. For details, see Creating a Key Pair.

Constraints

  • The node has at least 2 vCPUs and 4 GiB of memory.
  • To ensure node stability, a certain number of CCE node resources will be reserved for Kubernetes components (such as kubelet, kube-proxy, and docker) based on the node specifications. Therefore, the total number of node resources and the number of allocatable node resources for your cluster are different. The larger the node specifications, the more the containers deployed on the node. Therefore, more node resources need to be reserved to run Kubernetes components. For details, see Node Resource Reservation Policy.
  • Networks including VM networks and container networks of nodes are all managed by CCE. Do not add or delete ENIs, or change routes and IP addresses. Otherwise, services may be unavailable. For example, the NIC named gw_11cbf51a@eth0 on the node is the container network gateway and cannot be modified.
  • If you want to modify the specifications of a purchased node, stop the node and perform the operations described in General Operations for Modifying Specifications. You can also purchase a new node and delete the old one.
  • During the node creation, software packages are downloaded from OBS using the domain name. A private DNS server must be used to resolve the OBS domain name. Therefore, the DNS server address of the subnet where the node resides must be set to the private DNS server address so that the node can access the private DNS server. When you create a subnet, the private DNS server is used by default. If you change the subnet DNS, ensure that the DNS server in use can resolve the OBS domain name.
  • Once a node is created, its AZ cannot be changed.
  • Nodes purchased in the pay-per-use billing mode will be deleted after you delete them on the Nodes page on the CCE console. Yearly/monthly-billed nodes in a cluster cannot be deleted on the CCE console. You can choose Billing Center > My Orders in the upper right corner of the page to unsubscribe from the nodes.
  • Services may be compromised by node process ID limits. Evaluate whether to adjust the maximum number of process IDs. For details, see Changing Process ID Limits (kernel.pid_max).
  • When IPv4/IPv6 dual stack is enabled, DHCP unlimited lease cannot be enabled for the selected node subnet.

Procedure

After a cluster is created, you can create nodes for the cluster.

  1. Log in to the CCE console.
  2. In the navigation pane of the CCE console, choose Clusters. Click the target cluster name to access its details page.
  3. In the navigation pane, choose Nodes. On the page displayed, click the Nodes tab and then Create Node in the upper right corner. Configure node parameters.

    Configurations

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

    Parameter

    Description

    Billing Mode

    The following billing modes are supported:
    • Yearly/Monthly

      You must specify the required duration if Yearly/Monthly is selected. You can choose whether to select Auto-renew based on site requirements. Your order will automatically renew on a monthly or yearly basis, depending on if you purchased by month or by year.

    • Pay-per-use

      Resources will be billed based on usage duration. You can provision or delete resources at any time.

    AZ

    AZ where the node is located. Nodes in a cluster can be created in different AZs for higher reliability. The value cannot be changed after the node is created.

    Select Random to deploy your node in a random AZ based on the selected node flavor.

    An AZ is a physical region where resources use independent power supply and networks. AZs are physically isolated but interconnected through an internal network. To enhance workload availability, create nodes in different AZs.

    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): Containers run on virtual cloud servers. Only the ECSs that can be bound with multiple NICs are supported.
    • ECS (physical machine): A QingTian-backed bare metal server is used as a cluster node.

    Specifications

    Select node specifications that best fit your service needs.

    The available node flavors vary depending on AZs. Obtain the flavors displayed on the console.

    NOTE:

    Kunpeng (Arm) nodes can be added to CCE clusters. The specifications displayed on the node creation page prevail.

    Container Engine

    CCE clusters support Docker and containerd in some scenarios.
    • Nodes running CentOS, Ubuntu, or EulerOS 2.9 support containerd. Arm nodes running EulerOS 2.5 or EulerOS 2.8 do not support containerd.
    • VPC network clusters of v1.23 and later versions support containerd. Tunnel network clusters of v1.23.2-r0 and later versions support containerd.
    • For a CCE Turbo cluster, both Docker and containerd are supported. 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.

    Node Name

    Name of the node. When nodes (ECSs) are created in batches, the value of this parameter is used as the name prefix for each ECS.

    The system generates a default name for you, which can be modified.

    A node name must start with a lowercase letter and cannot end with a hyphen (-). Only digits, lowercase letters, and hyphens (-) are allowed.

    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.

    Storage Settings

    Configure storage resources on a node for the containers running on it. Set the disk size according to site requirements.
    Table 2 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.

    Encryption: System disk encryption safeguards your data. Snapshots generated from encrypted disks and disks created using these snapshots automatically inherit the encryption setting. This function is available only in certain regions.
    • Encryption is not selected by default.
    • After selecting Encryption, you can select an existing key in the displayed dialog box. 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 Encryption text box.

    Data Disk

    At least one data disk is required for the container runtime and kubelet. The data disk cannot be deleted or uninstalled. Otherwise, the node will be unavailable.

    • First data disk: used for container runtime and kubelet components. The value ranges from 20 GiB to 32768 GiB. The default value is 100 GiB.
    • Other 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.
    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.

    Advanced Settings

    Click Expand to configure the following parameters:

    • Data Disk Space Allocation: After selecting Set Container Engine Space, you can specify the proportion of the space for the container engine, image, and ephemeral storage on the data disk. The container engine space is used to store the working directory, container image data, and image metadata for the container runtime. The remaining space of the data disk is used for pod configuration files, keys, and EmptyDir. For details about how to allocate data disk space, see Data Disk Space Allocation.
    • Encryption: Data disk encryption safeguards your data. Snapshots generated from encrypted disks and disks created using these snapshots automatically inherit the encryption setting. This function is available only in certain regions.
      • Encryption is not selected by default.
      • After selecting Encryption, you can select an existing key in the displayed dialog box. 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 Encryption text box.

    Adding data disks

    A maximum of four data disks can be added. By default, raw disks are 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 Persistent Volumes and Local EVs support the following write 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, allowing 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 3 Configuration parameters

    Parameter

    Description

    VPC/Node Subnet

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

    Node IP Address

    IP address of the specified node. By default, the value is randomly allocated.

    EIP

    An ECS without a bound EIP cannot access the Internet or be accessed by public networks.

    The default value is Do not use. Use existing and Auto create are supported.

    Advanced Settings

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

    Parameter

    Description

    Kubernetes Label

    A key-value pair added to a Kubernetes object (such as a pod). 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.

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

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

    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.

    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

    Pre-installation script command, in which Chinese characters are not allowed. The script command will be transcoded using Base64, and the number of characters after transcoding cannot exceed 2048.

    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

    Pre-installation script command, in which Chinese characters are not allowed. The script command will be transcoded using Base64, and the number of characters after transcoding cannot exceed 2048.

    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 account administrator on the IAM console. By creating 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.

    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 Table 1. 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:
      • The name of a node ECS can be specified as the name of a Kubernetes node only when the node ECS is created (managed). After the server is created or accepted into the cluster, the name of the Kubernetes node 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.

        If you want to change the Kubernetes node name to cloud server name, you can remove this node from the cluster and accept it again. Before doing so, learn about the possible impacts on services when removing a node and accepting a node.

  4. Configure the number of nodes to be purchased. Then, click Next: Confirm. Confirm the configured parameters, price, and specifications. Ensure that you have read and understood the Image Management Service Statement.
  5. Click Submit.

    If the node will be billed on a yearly/monthly basis, click Pay Now and follow on-screen prompts to pay the order.

    The node list page is displayed. If the node status is Running, the node is created successfully. It takes about 6 to 10 minutes to create a node.

  6. Click Back to Node List. The node is created successfully if it changes to the Running state.

ECS Names, Node Names, and Kubernetes Node Names

  • ECS name: the name of an ECS on the ECS page. You can customize an ECS name when creating the ECS (node).
  • Node name: the name of a node on the CCE console, which can be synchronized with the ECS name on the ECS console. However, after the Kubernetes node name is specified, the change of the ECS name cannot be synchronized to the node name.
  • Kubernetes node name: value of metadata.labels.kubernetes.io/hostname in the YAML file of the node. The name of a node ECS can be specified as the name of a Kubernetes node only when the node ECS is created (managed). After the creation (management) is complete, the name of the Kubernetes node cannot be changed.

Figure 1 shows the synchronization relationship between ECS names, node names, and Kubernetes node names.

Figure 1 Relationship between node names

Related Operations

Create a node injection script.