Create and manage LINGJUN node pools

更新时间:
复制 MD 格式

This topic describes how to add a LINGJUN node pool to an ACK Managed Cluster Pro Edition.

The LINGJUN node pool feature for ACK Managed Cluster Pro Edition is a whitelisted feature. To enable it, contact the Container Service team through your customer service manager (PDSA).

LINGJUN node pools

  • A LINGJUN node pool in an ACK Managed Cluster Pro Edition has a one-to-one mapping with a node group of the Intelligent Computing LINGJUN Service (LINGJUN bare metal cluster). This means a node group from a LINGJUN cluster corresponds to a single LINGJUN node pool in an ACK Managed Cluster Pro Edition, and a LINGJUN node can belong to only one LINGJUN node pool. By organizing nodes into LINGJUN node pools, you can apply different management policies to the LINGJUN nodes within your ACK Managed Cluster Pro Edition.

  • ACK Managed Cluster Pro Edition manages LINGJUN nodes through LINGJUN node pools. It supports node pool lifecycle management and lets you add or remove nodes in batches. It provides management and O&M capabilities nearly identical to those for ECS node pools, including node configuration, node O&M, scheduling applications to specific node pools, as well as monitoring, diagnostics, and automated O&M.

  • To provide enhanced cloud-native AI capabilities for your LINGJUN nodes, install the cloud-native AI suite. LINGJUN node pools support topology-aware scheduling for multi-GPU configurations and provide shared GPU scheduling and isolation through a GPU container virtualization solution. For AI and high-performance computing (HPC) tasks, they support scheduling policies such as Gang, Capacity, and Binpack. They also support dataset orchestration and access acceleration.

Billing

When you use a LINGJUN node pool in an ACK Managed Cluster Pro Edition, the total cost consists of three parts: cluster management fees + LINGJUN node management fees + cloud product resource fees.

Note

Starting from August 5, 2025, the LINGJUN node management capability will end its free public preview and begin commercial billing. For more information, see [Billing Announcement] LINGJUN Node Management Billing Announcement. During the public preview period, the features of LINGJUN node pools are free to use. However, other fees for ACK Managed Cluster Pro Edition, such as cluster management fees and cloud product resource fees, still apply. For more information, see Billing overview.

Before you begin

Before you create a LINGJUN node pool, complete these prerequisites:

  • LINGJUN cluster and nodes:

    • LINGJUN cluster: You have created a basic LINGJUN cluster of the Lite type and scaled out nodes in a LINGJUN node group. For more information, see Create a LINGJUN cluster.

    • LINGJUN node

      • OS kernel version: 5.10 or later.

      • OS cgroup version: Kubernetes started supporting cgroup v2 in version 1.26 and deprecated support for cgroup v1 in version 1.35. If your cluster version is 1.35 or later, nodes must use an OS image with cgroup v2. Nodes with cgroup v1 cannot be added to the ACK cluster.

        When you upgrade an ACK cluster from a version earlier than 1.35 to 1.35 or later, you must use an OS with cgroup v2; otherwise, the cluster upgrade will fail. For more information, see Migrate nodes to cgroup v2.

  • ACK Managed Cluster Pro Edition:

    • Cluster type: A Pro Edition cluster located in the same region and VPC as the LINGJUN bare metal cluster.

    • Cluster version: 1.31 or later. Only IPv4 single-stack clusters are supported. IPv6 dual-stack clusters are not supported. To upgrade the cluster, see Manually upgrade a cluster.

    • Network plugin: Only Terway is supported.

      • The underlying network configurations of different LINGJUN instance types vary, and earlier versions of Terway might be incompatible. Before creating a new LINGJUN node pool, upgrade Terway (both terway-controlplane and terway-eniip) to the latest version.

      • Ensure that the Pod vSwitch used by the LINGJUN node pool in the ACK cluster include the availability zone where the LINGJUN cluster is located.

        You can configure the ACK cluster's Pod vSwitch when you create the cluster. After the ACK cluster is created and before adding LINGJUN nodes, you can also configure them by modifying the terway-eniip parameter PodVswitchId. For instructions, see Modify pod vSwitches.
    • Components:

      • Install the ack-rdma-device-plugin component from the Component Management page.

      • If your LINGJUN nodes use LINGJUN connection, you must request to be added to the whitelist for the ACK VPD CNI component. Then, install the ACK VPD CNI component from the Component Management page before you create the LINGJUN node pool.

        When you create a node pool that includes nodes with LINGJUN connection, ACK automatically performs two actions: it adds the CIDR block of the LINGJUN group to the cluster's security group and allows inbound access, and it adds the label alibabacloud.com/lingjun-network-type: vpd to the node pool. Do not delete this label.
    • ECS nodes: The cluster must have an ECS node pool with active ECS nodes (we recommend at least 3 for high availability) to deploy some ACK control plane components.

Create a LINGJUN node pool

You can configure the node pool, including basic, network, and storage settings, in the console. Pay close attention to settings that cannot be changed after creation, especially those related to availability and networking. Creating a node pool does not affect the nodes or workloads in existing node pools.

Before you create

  • By default, LINGJUN node pools store container runtime data on the system disk. Ensure you reserve enough space for the container runtime directory. Insufficient disk space can lead to pod evictions or node failures.

  • New LINGJUN node pools default to using the Terway exclusive ENI mode for VPC network communication. Confirm that the maximum number of pods per node meets your business requirements.

  • Nodes in a LINGJUN node pool carry the taint node-role.alibabacloud.com/lingjun: NoSchedule by default. This prevents system components (other than DaemonSets) from being scheduled to LINGJUN nodes and consuming resources.

    If a pod needs to be scheduled to a LINGJUN node, you can add a toleration for this taint to the pod. This ensures that only specific workloads are scheduled to LINGJUN nodes. You can also replace it with a custom taint to achieve the same effect based on your business needs.

    You can remove the taint after ensuring your components meet the minimum version requirements. However, if you remove the taint, system components or other workloads may be scheduled to the LINGJUN nodes, consuming expensive GPU node resources.

  • For the complete list of default labels applied to the node pool, see the Node labels configuration description below. Do not delete these default labels.

Procedure

  1. On the Clusters page, click the name of the target cluster. In the left-side navigation pane, choose Nodes > Node Pools.

  2. Click ... > Create Lingjun Node Pool and follow the on-screen instructions to create the LINGJUN node pool.

    After the node pool is created, you can modify some configuration items by editing the node pool. In the table below, Modifiable indicates whether a configuration item can be changed after creation.

    Configuration details

    • Basic configuration

      Parameter

      Description

      Modifiable

      Node Pool Name

      A custom name for the node pool.

      Yes

      Region

      The region of the current cluster is selected by default and cannot be changed.

      No

      Configure Managed Node Pool

      Whitelisted feature

      Enable managed node pools to use ACK's automated O&M capabilities.

      Yes

      Container Runtime

      Only containerd is supported.

      No

    • Lingjun Resources

      Parameter

      Description

      Modifiable

      Lingjun Cluster

      You can select a LINGJUN cluster of the Lite type that is in the same VPC as the ACK cluster.

      No

      Lingjun Group

      You can select a LINGJUN group that is in the same VPC as the LINGJUN node pool and is not associated with any other LINGJUN node pool.

      No

    • Volumes

      Custom data disk configuration is a whitelisted feature. To enable it, contact the Container Service team through your PDSA.
      Important
      • During a node pool upgrade, if nodes have different storage configurations, they are initialized according to each node's actual configuration.

      • To ensure stability, reserve sufficient space for the container runtime directory. Local storage carries a risk of data loss. We strongly recommend mounting a cloud disk for the container runtime directory.

      Parameter

      Description

      Modifiable

      System Disk

      The cloud disk system disk configuration for nodes in the current LINGJUN group. This is not displayed for nodes with local system disks.
      If Configure local disk mounting for the container runtime directory is not selected, the container runtime directory defaults to the system disk.

      Important

      If container runtime data is stored on the system disk, insufficient disk space can lead to pod evictions or node failures. For stability, ensure you reserve ample space on the system disk or configure a separate data disk for the container runtime.

      See Node disk space is insufficient due to DiskPressure for solutions to insufficient node disk space.

      N/A

      Data Disk

      The local data disk used by the LINGJUN node. If you select Configure local disk mounting for the container runtime directory, the local disk will be mounted to the directories used by the container runtime, including /var/lib/container, /var/lib/containerd, /var/lib/kubelet, and /var/log/pods.

      You can configure Initialization Settings: Choose a file system format (ext4 or xfs). This only affects unformatted local disks.

      Important
      • The mount directory must be empty. If you mount to a non-empty directory, the original files become inaccessible.

      • Local storage carries a risk of data loss. We strongly recommend using a cloud disk to mount the container runtime directory. When this feature is enabled, do not simultaneously configure the container runtime directory by using ACK Pre-defined Custom Data or LINGJUN custom data (UserData), as this may cause issues.

      • When a LINGJUN node undergoes offline maintenance (replacement with a standby machine), data on the local disk is lost. This clears container runtime information for kubelet and containerd, causing the node to enter an abnormal state. After maintenance is complete, you must manually remove the node from the node pool and re-add it using Add Existing Node.

      Yes

    • Advanced Options (Optional)

      Parameter

      Description

      Modifiable

      Taints

      Add key-value taints to nodes. A valid taint key includes an optional prefix and a name. If a prefix is specified, separate it from the name with a forward slash (/).

      Expand to view details

      • Key: The name must be 1–63 characters long, start and end with a letter, digit, or character [a-z0-9A-Z], and can contain letters, digits, hyphens (-), underscores (_), and periods (.).

        If a prefix is specified, it must be a DNS subdomain, meaning a series of DNS labels separated by periods (.), up to 253 characters long, ending with a forward slash (/).

      • Value: Can be empty, up to 63 characters long, must start and end with a letter, digit, or character [a-z0-9A-Z], and can contain letters, digits, hyphens (-), underscores (_), and periods (.).

      • Effect:

        • NoSchedule: Prevents new pods that do not tolerate this taint from being scheduled to the node, but does not affect pods already running.

        • NoExecute: Prevents new pods that do not tolerate this taint from being scheduled to the node and evicts any running pods that do not tolerate this taint.

        • PreferNoSchedule: ACK tries to avoid scheduling pods to nodes with taints they cannot tolerate, but does not enforce this strictly.

      Yes

      Node Labels

      Important

      When you create a LINGJUN node pool, ACK automatically adds a label to enable exclusive ENI mode. Do not delete this label after creation.

      Do not delete the default labels that are automatically added to the LINGJUN node pool:

      • service.alibabacloud.com/exclude-node

      • alibabacloud.com/lingjun-worker

      • alibabacloud.com/lingjun-hpnzone

      • alibabacloud.com/lingjun-zoneid

      • alibabacloud.com/lingjun-network-type: vpd

      • alibabacloud.com/lingjun-machine-type

      • k8s.aliyun.com/exclusive-mode-eni-type: eniOnly

      Add key-value labels to nodes. A valid key includes an optional prefix and a name. If a prefix is specified, separate it from the name with a forward slash (/).

      Expand to view details

      • Key: The name must be 1–63 characters long, start and end with an alphanumeric character [a-z0-9A-Z], and can contain letters, digits, hyphens (-), underscores (_), and periods (.).

        If a prefix is specified, it must be a DNS subdomain, meaning a series of DNS labels separated by periods (.), up to 253 characters long, ending with a forward slash (/).

        The following prefixes are reserved by Kubernetes core components and cannot be specified

        • kubernetes.io/

        • k8s.io/

        • Prefixes ending with kubernetes.io/ or k8s.io/. For example, test.kubernetes.io/.

          Exceptions:

          • kubelet.kubernetes.io/

          • node.kubernetes.io

          • Prefixes ending with kubelet.kubernetes.io/.

          • Prefixes ending with node.kubernetes.io.

      • Value: Can be empty, up to 63 characters long, must start and end with an alphanumeric character [a-z0-9A-Z], and can contain letters, digits, hyphens (-), underscores (_), and periods (.).

      Yes

      Container Image Acceleration

      Supported only for containerd runtime version 1.6.34 or later.

      Newly added nodes automatically detect whether container images support on-demand loading. If supported, containers start faster by default using on-demand loading, reducing application startup time. For details, see Use on-demand loading to accelerate container startup.

      Yes

      Custom Node Name

      Whitelisted feature, not applicable to non-LINGJUN node pools
      • Description: Synchronizes the Hostname of a LINGJUN node directly as the NodeName.

      • Example: If the instance Hostname is test, the node's NodeName is test.

      No

      Pre-defined Custom Data

      Before nodes join the cluster, run the specified instance pre-user User-Data script.

      Example: If the pre-user data is touch /tmp/pre-script, the combined script execution order on the node is as follows.

      #!/bin/bash
      # Input instance pre-user data executes here
      touch /tmp/pre-script
      
      # ACK node initialization script executes here

      Yes

      User Data

      After nodes join the cluster, run the specified instance user User-Data script.

      Example: If the instance user data is touch /tmp/post-script, the combined script execution order on the node is as follows.

      #!/bin/bash
      # ACK node initialization script executes here
      
      # Input instance user data executes here
      touch /tmp/post-script
      Successful cluster creation or node scale-out does not guarantee successful execution of the instance user script. Log on to the node and run grep cloud-init /var/log/messages to view execution logs.

      Yes

Add existing LINGJUN nodes

If you need to add LINGJUN nodes from a LINGJUN group to your ACK cluster as worker nodes, or re-add removed worker nodes to a LINGJUN node pool, you can add them in batches from the associated group in the ACK console. Once added, you can manage them from the node pool.

Adding a LINGJUN node does not replace its original operating system, system disk, or data disks. All stored data is retained.

Prerequisites

  • The nodes to be added must already be in the LINGJUN group associated with this node pool and must not be in another node pool.

  • The LINGJUN node's OperatingState must be "Using".

Procedure

  1. On the ACK Clusters page, click the name of your cluster. In the left navigation pane, click Nodes > Node Pools.

  2. On the Node Pools page, click ⋮ > Add Existing Node and configure the following parameters as prompted:

    • Add Existing Lingjun Node: Select the instances to add from the instance list. Select Show Unavailable Instances to view instances that are currently unavailable.

    • Data Disk: Select how to mount the data disk.

      Only available if the custom data disk configuration whitelist is enabled.
      • Configure by Node Pool: Initializes and mounts the data disk by using the node pool's preset data disk configuration.

        If the node pool has no preset data disk configuration, the node's original configuration is retained.
      • No Initialization: Does not initialize the data disk, retaining its original configuration.

        Important
        • If storage configurations differ across nodes, the system initializes their data disks based on each node's actual storage configuration during a node pool upgrade, rather than using a uniform configuration.

        • When you use the node pool configuration, the mount directory must be empty. If you mount to a non-empty directory, the original files become inaccessible.

    After the nodes are added, ACK automatically adds the following tags to the LINGJUN node instances, which you can view in the Intelligent Computing LINGJUN Service console:

    • ack.aliyun.com: The ID of the ACK Managed Cluster Pro Edition that manages the node.

    • ack.alibabacloud.com/nodepool-id: The ID of the LINGJUN node pool that manages the node.

Remove LINGJUN nodes

When a node is no longer needed, you can remove it from the node pool. This operation may affect your services, so perform this operation during off-peak hours.

Notes

  • Draining nodes:

    • If there are pods on the node, select Drain Node. The pods will be migrated to other nodes. Ensure your cluster has sufficient resources to accommodate them.

    • If your application is configured with a Pod Disruption Budget (PDB), draining may fail, which prevents the node from being removed. We recommend handling this manually beforehand.

    • If an application fails to start on another node after being drained, the removal task ignores this and continues.

    • When you remove a node in an abnormal state, do not select Drain Node, as this may cause the removal to fail.

  • Node state after removal:

    Removing a LINGJUN node only removes it from the LINGJUN node pool. It does not remove the node from the LINGJUN group, nor does it automatically release the node or cancel its subscription.

    Deleting an ACK cluster or LINGJUN node pool does not release the LINGJUN node instances. The service also does not automatically scale in the nodes from the LINGJUN group. Monitor the billing status of your LINGJUN nodes to avoid extra charges.

    For other node and group management tasks, use the Intelligent Computing LINGJUN Service console.

    Removal is an asynchronous operation. You can check the progress in the node list.

Procedure

  1. On the ACK Clusters page, click the name of your cluster. In the left navigation pane, click Nodes > Node Pools.

  2. Click the name of the target LINGJUN node pool and remove nodes on the Nodes page.

    • Remove a single node: Locate the target node, and in the Actions column, select More > Remove.

    • Remove nodes in batches: Select the target nodes and click Batch Remove at the bottom of the page.

  3. Choose whether to Drain Node. Carefully read the on-screen notes and complete the operation as prompted.

Terway exclusive ENI mode

When using Terway, LINGJUN node pools support only the exclusive ENI mode (supported since Terway v1.14.4). To ensure compatibility with the varying underlying networks of different LINGJUN instance types, ensure your Terway version is v1.16.1 or later. If your version is earlier, see Upgrade components to upgrade terway-eniip.

When you create a LINGJUN node pool, ACK automatically adds the label k8s.aliyun.com/exclusive-mode-eni-type: eniOnly to the node pool to enable the exclusive ENI mode. Do not delete this label. For more information, see Configure exclusive ENI network mode for a node pool.

If your LINGJUN node pool does not have this label, it is using the shared ENI network mode.
Important

When LINGJUN nodes use the shared ENI network mode for VPC communication, some older LINGJUN images may experience intermittent pod network connectivity issues. Recreating the pod can temporarily restore service. To resolve this issue permanently, we recommend upgrading the Terway component to the latest version during off-peak hours and recreating the LINGJUN node pool in exclusive ENI mode to add the LINGJUN nodes.

RDMA

To enable Remote Direct Memory Access (RDMA) communication for LINGJUN nodes, manually install the ack-rdma-device-plugin component from the Component Management page.

The network modes available for pods depend on the IP version of the computing network of the LINGJUN bare metal cluster associated with the LINGJUN node pool. For more information, see Use RDMA networks on LINGJUN nodes for pods.

Computing network IP version

Description

IPv4

Only hostNetwork mode is supported.

IPv6

  • hostNetwork mode: Default.

  • non-hostNetwork mode: To enable this mode, in the configuration of the ack-rdma-device-plugin component, enable the option to allow Pods to use RDMA in non-hostNetwork mode.

Upgrade components

When you create a new ACK Managed Cluster Pro Edition, it uses the latest component versions by default. When creating a LINGJUN node pool in an existing cluster, if you are using the following components, upgrade them to the specified versions.

Component name

Minimum version requirement

Kube Scheduler

v1.31

terway-eniip

v1.16.1

The underlying network configurations of different LINGJUN instance types vary, and earlier versions of Terway might be incompatible. Before you create a LINGJUN node pool, upgrade Terway (both terway-controlplane and terway-eniip) to the latest version.

CoreDNS

v1.11.3.5-5321daf49-aliyun

Nginx Ingress Controller

v1.11.4-aliyun.2

ack-pod-identity-webhook

v0.2.1

security-inspector

v0.16.1.0-gea4d02f-aliyun

alicloud-monitor-controller

v1.8.4

ack-arms-prometheus

v1.1.31

logtail-ds

v2.1.6

csi-provisioner

v1.32.2

csi-plugin

v1.32.2

aliyun-acr-acceleration-suite

v0.2.10

ack-ai-installer (Applications > Cloud-native AI Suite Installation)

v1.12.2

Common O&M scenarios

This section describes ACK procedures for common LINGJUN node O&M scenarios.

Scenario

Description

Move a LINGJUN node to another group

  1. ACK: Remove the LINGJUN node from the ACK cluster.

    Depending on your business needs, you can choose whether to Drain Node when removing it. Draining succeeds only if another node in the cluster can accommodate the evicted pods. Confirm that you have sufficient resources before draining.

  2. LINGJUN: Scale in the node from the original group, create a new group, and then scale out the node to the new group.

  3. ACK: When you create a new LINGJUN node pool, associate it with a new group. For nodes that are scaled out on the LINGJUN side (the node status in the LINGJUN console changes to In Use), add them back to the LINGJUN node pool by following the steps in Add Existing Nodes.

Restart a LINGJUN node

  1. LINGJUN: Restart the node.

  2. ACK: No action is required. The node is temporarily offline during the restart. After the restart is complete (the node status in the Lingjun Console changes to In Use), the node status in the ACK cluster automatically changes to Ready.

Reinstall a LINGJUN node

  1. ACK: Remove the LINGJUN node from the ACK cluster.

    Depending on your business needs, you can choose whether to Drain Node when removing it. Draining succeeds only if another node in the cluster can accommodate the evicted pods. Confirm that you have sufficient resources before draining.

  2. LINGJUN: Reinstall the node.

  3. ACK: After the LINGJUN node is reinstalled (the node status in the LINGJUN console changes to In Use), add the node back to the LINGJUN node pool as described in Add Existing Node.

LINGJUN offline maintenance (standby replacement)

  1. LINGJUN: In a CMS O&M event, use the LINGJUN ApproveOperation capability to grant authorization and approve the repair operation.

  2. ACK:

    • If the container runtime data directory is mounted on a cloud disk, no action is required on the ACK side. After the LINGJUN node is repaired (the node status in the LINGJUN console changes to In Use), the node status in the ACK cluster automatically changes to Ready.

    • If the container runtime data directory is mounted on a local disk, the LINGJUN node is replaced during offline maintenance, and data on the local disk is not preserved. This causes information for container runtimes, such as kubelet and containerd, to be deleted, and the node status becomes abnormal. After the LINGJUN node maintenance is complete (the node status in the LINGJUN console changes to In Use), you must manually remove it from the LINGJUN node pool and then add it back to the LINGJUN node pool by using the Add Existing Node feature.

Related operations

  • Use shared GPU scheduling.

    To use shared GPU scheduling on LINGJUN nodes in an ACK Managed Cluster Pro Edition to enable GPU sharing and isolation, you must first enable the KubeGPU feature in the LINGJUN bare metal cluster, and then install ack-ai-installer in the ACK cluster. For usage details, see Use shared GPU scheduling.

  • Enable the Binpack scheduling policy.

    When you run model training jobs in a LINGJUN node pool, you can enable the Binpack policy for pod scheduling. This policy prioritizes co-locating pods to reduce cross-machine communication latency during training. For information on how to enable binpack in the Kube Scheduler component, see Customize scheduler parameters.

  • Use topology-aware scheduling in a LINGJUN node pool.

    To use topology-aware scheduling in a LINGJUN node pool, install Kube Scheduler and upgrade it to v1.31 or later. For detailed instructions, see Use topology-aware scheduling.

FAQ

Node not ready after repair

A LINGJUN node underwent offline maintenance for a hardware issue, but after the repair is complete, its status is still Not Ready in the ACK cluster.

  • Cause: During offline maintenance, the LINGJUN node's machine is replaced. Data on local disks is lost, which clears container runtime information for components like kubelet and containerd, causing the node to enter an abnormal state.

  • Solution: After the repair is complete, you must manually remove the node from the node pool and then re-add it using Add Existing Node.