Manage Lingjun nodes as a group through a Lingjun node pool: create the pool, add and remove nodes, upgrade kubelet, and handle common O&M scenarios.
Applicable scope
Lingjun cluster type: Basic Lingjun Cluster Service (Lite).
ACK cluster type: ACK managed Pro cluster, version 1.31 or later. If an upgrade is required, see Manually upgrade a cluster.
Lingjun node pool of the ACK cluster:
OS kernel version: 5.10 or later.
OS cgroup version: The Kubernetes community has supported cgroup v2 since 1.26 and deprecated cgroup v1 in 1.35. If the cluster version is 1.35 or later, the nodes must use an OS image that uses cgroup v2. Nodes that use a cgroup v1 OS cannot be added to the ACK cluster.
When you upgrade an ACK cluster earlier than 1.35 to 1.35 or later, the nodes must use an OS that uses cgroup v2. Otherwise, the cluster upgrade fails. For more information, see Migrate nodes to cgroup v2.
ACK cluster network:
Only IPv4 single-stack clusters are supported. IPv6 dual-stack clusters are not supported.
Only the Terway exclusive ENI mode is supported.
Make sure that the Pod vSwitch used by the Lingjun node pool of the ACK cluster includes the zone where the Lingjun cluster resides.
The Pod vSwitch of the ACK cluster can be configured when you create the cluster. After you create the ACK cluster and before you add Lingjun nodes, it can also be configured by modifying the PodVswitchId parameter of terway-eniip. For the procedure, see Modify the vSwitch for Pods.
ACK cluster add-on versions:
When you create a ACK managed Pro cluster, the latest add-on versions are used by default. If you create a Lingjun node pool in an existing cluster that already uses any of the following add-ons, upgrade the add-ons to the specified versions.
Prerequisites
Create a Lingjun cluster. Select Basic Lingjun Cluster Service and add nodes to a Lingjun node group.
Create an ACK managed cluster. Select the Pro edition. The cluster must be in the same region and the same VPC as the Lingjun cluster.
Create an ECS node pool. This can be configured when you create the ACK managed cluster. Keep at least three ECS nodes to deploy some ACK control components for high availability.
Install ACK cluster add-ons.
On the Add-ons page, install the ack-rdma-device-plugin add-on.
If the Lingjun nodes use Lingjun Link, you must separately apply for the allowlist of the ACK VPD CNI add-on. Before you create a Lingjun node pool, install the ACK VPD CNI add-on on the Add-ons page.
If the Lingjun nodes are PPU nodes, you must additionally install the ack-ppu-device-plugin and ack-ppu-exporter add-ons.
ImportantWhen you create a node pool that contains Lingjun-connected nodes, ACK automatically adds the CIDR blocks of the Lingjun group to the cluster security group and allows inbound access. ACK also adds the label
alibabacloud.com/lingjun-network-type: vpdto the node pool. Do not remove this label.
Create a Lingjun node pool
Configure node pool settings in the console, including basic settings, network settings, and storage settings. Some settings, especially those related to node pool availability and networking, cannot be modified after the node pool is created. Creating a node pool does not affect the nodes or workloads in existing node pools.
Notes before creation
By default, a Lingjun node pool stores container runtime data on the system disk. Make sure that sufficient free space is reserved for the container runtime directory. Insufficient disk space can cause pods to be evicted or nodes to become abnormal.
New Lingjun node pools support only the Terway exclusive ENI mode for VPC network communication. Make sure that the limit on the number of pods per node meets your business requirements.
Nodes in a Lingjun node pool carry the taint
node-role.alibabacloud.com/lingjun: NoScheduleby default, which prevents system components (except DaemonSets) from being scheduled to Lingjun nodes and occupying resources. If you want pods to be scheduled to Lingjun nodes, add a toleration for this taint to the pods so that only specific workloads are scheduled to Lingjun nodes. Alternatively, replace it with a custom taint that suits your requirements to achieve the same effect.The taint can be removed after the add-ons meet the minimum version requirements. However, after the taint is removed, system components or other workloads may be scheduled to Lingjun nodes and occupy resources of expensive GPU nodes.
For the complete list of labels that a node pool carries by default, see the description of the node labels setting. Do not remove the default labels.
Procedure
-
On the ACK Clusters page, click the name of your cluster. In the left navigation pane, click .
Click ... > Create Lingjun Node Pool and follow the on-screen instructions to create the Lingjun node pool.
After the node pool is created, some settings can be modified by editing the node pool. In the following tables, Modifiable indicates whether a setting can be modified after the node pool is created.
Basic settings
Setting
Description
Modifiable
Node Pool Name
The custom name of the node pool.
Yes
Region
By default, the region where the current cluster resides is selected and cannot be changed.
No
Configure Managed Node Pool
Allowlist feature
Enable the managed node pool to use the automated O&M capabilities provided by ACK.
Yes
Container Runtime
Only containerd is supported.
No
Lingjun Resources
Setting
Description
Modifiable
Lingjun Cluster
Select a Lite-type Lingjun cluster that is in the same VPC as the ACK cluster.
No
Lingjun Group
Select a Lingjun group that is in the same VPC as the Lingjun node pool and is not associated with a Lingjun node pool.
No
Worker RAM Role
Specify a worker RAM role for the Lingjun node pool. After configuration, newly scaled-out nodes in the Lingjun group automatically inherit this role.
You must select a Lingjun group first. Only Lingjun instance types that use a cloud disk as the system disk support configuring a worker RAM role. If the selected Lingjun group does not support this feature, this setting is not displayed.
Default Role: uses the worker RAM role that is automatically created by ACK and whose trusted entity is Lingjun Intelligent Computing. If this role does not exist in the cluster, it is automatically created and bound to this node pool when you create the node pool.
Custom Role: uses a specified RAM role. Only RAM roles whose trust policy includes Lingjun Intelligent Computing (
eflo-controller.eflo.aliyuncs.com) as a trusted service can be selected. For more information, see Use custom worker RAM roles.
If the selected Lingjun group already has a RAM role configured, this setting automatically selects Custom Role and is fixed to the current RAM role of the group. It cannot be changed or switched back to Default Role.
ImportantIf the Lingjun group already has a RAM role configured, the RAM role of the node pool must be consistent with that of the associated Lingjun group. Otherwise, the creation of the Lingjun node pool fails.
Newly scaled-out nodes in the group automatically inherit the RAM role of the group. Existing nodes in the group are not affected.
After the node pool is created, do not modify the RAM role of the Lingjun group. Otherwise, the node pool may malfunction.
No
Volumes
The custom data disk configuration is an allowlist feature. This feature mounts the container runtime directory to a local data disk. To enable this feature, contact the Container Service team through your customer service manager (PDSA).
ImportantDuring a node pool upgrade, if the storage configurations of nodes are inconsistent, each node is initialized separately based on its actual configuration.
To ensure stability, make sure that sufficient free space is reserved for the container runtime directory. Local storage has a risk of data loss. Mount the container runtime directory to a cloud system disk.
Advanced Options (Optional)
The mount directory must be empty. After a non-empty directory is mounted, the original files become inaccessible.
Lingjun node pools support mounting the container runtime directory only to a local data disk, not to a cloud data disk. If the container runtime directory is on a local disk, note the following behavior when a Lingjun node is taken offline for maintenance (standby replacement). The local disk data is not retained, which may cause the container runtime information such as kubelet and containerd to be erased and the node state to become abnormal. To avoid the manual recovery this requires, mount the container runtime directory to a cloud system disk instead.
When you enable this feature, do not simultaneously configure the container runtime directory through the ACK Pre-defined Custom Data feature or the Lingjun custom data (UserData) feature. Otherwise, the node may not work as expected.
service.alibabacloud.com/exclude-nodealibabacloud.com/lingjun-workeralibabacloud.com/lingjun-hpnzonealibabacloud.com/lingjun-zoneidalibabacloud.com/lingjun-network-type: vpdalibabacloud.com/lingjun-machine-typek8s.aliyun.com/exclusive-mode-eni-type: eniOnlyDescription: Directly syncs the hostname of a Lingjun node to its NodeName.
Example: If the instance hostname is
test, the node's NodeName will betest.
Setting
Description
Modifiable
System Disk
The cloud system disk configuration of the nodes in the current Lingjun group. When a local system disk is used, the specific configuration is not displayed here.
If you do not select Configure local disk mounting for the container runtime directory, the container runtime directory is mounted to the system disk (local system disk or cloud system disk) by default.
ImportantWhen container runtime data is stored on the system disk, insufficient disk space can cause pods to be evicted or nodes to become abnormal. To ensure stability, make sure that sufficient free space is reserved on the system disk, or configure a dedicated data disk for the container runtime. See Insufficient disk space - DiskPressure for the solutions to insufficient node disk space.
Not applicable
Data Disk
The local data disks used by Lingjun nodes. After you select Configure local disk mounting for the container runtime directory, a random local data disk is mounted to the container runtime directories, such as
/var/lib/container,/var/lib/containerd,/var/lib/kubelet, and/var/log/pods.Configure the Initialization Settings: select the file system format (ext4 or xfs). This takes effect only on unformatted local disks.
ImportantYes
Setting
Description
Modifiable
Taints
Add key-value taints to the node. A valid taint key consists of an optional prefix and a name. If a prefix is present, it is separated from the name by a forward slash (/).
Yes
Node Labels
ImportantWhen you create a Lingjun node pool, ACK automatically adds labels to the node pool to enable the exclusive ENI mode. Do not remove them after creation.
Do not remove the following default labels of a Lingjun node pool:
Add key-value labels to the node. A valid Key consists of an optional prefix and a name. If a prefix is present, the prefix and name are separated by a forward slash (/).
Yes
Container Image Acceleration
This feature is only supported for containerd runtimes of version 1.6.34 and later.
Newly added nodes will automatically detect if a container image supports on-demand loading. If it does, it will use on-demand loading by default to accelerate container startup, reducing application startup time. For more information, see Use on-demand loading of container images to accelerate container startup.
Yes
Custom Node Name
Whitelisted feature, not applicable to non-Lingjun node pools
No
Pre-defined Custom Data
Before a node joins the cluster, the specified pre-customization User-Data script will be run.
For example, if you specify the pre-customization data as
touch /tmp/pre-script, the combined script on the node will be executed in the following order.#!/bin/bash # The input instance pre-customization data is executed here touch /tmp/pre-script # The ACK node initialization script is executed hereYes
User Data
After a node joins the cluster, the specified instance User-Data script will be run.
For example, if you specify the instance user data as
touch /tmp/post-script, the combined script on the node will be executed in the following order.#!/bin/bash # The ACK node initialization script is executed here # The input instance user data is executed here touch /tmp/post-scriptSuccessful cluster creation or node scale-out does not guarantee that the instance user data script executed successfully. You can log on to the node and run
grep cloud-init /var/log/messagesto view the execution logs.Yes
Terway exclusive ENI mode
Lingjun node pools support only the Terway exclusive ENI mode (supported by Terway since v1.14.4). To accommodate the underlying network differences of different Lingjun instance types and images, upgrade Terway to v1.16.8 or later. See the minimum version requirements 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 remove this label after creation. For more information, see Configure exclusive ENI mode for a node pool.
If a Lingjun node pool does not have this label, the node pool uses the shared ENI network mode.
When Lingjun nodes use VPC network communication in the shared ENI mode, intermittent pod network failures may occur on some older Lingjun images. To temporarily restore your services, recreate the pods. To permanently resolve this issue, upgrade Terway to the latest version during off-peak hours, and then add Lingjun nodes by creating a Lingjun node pool in the exclusive ENI mode.
Add existing Lingjun nodes
In the Container Service console, batch-add Lingjun nodes from the associated Lingjun group to a Lingjun node pool. Use this operation to add group nodes to an ACK cluster as worker nodes, or to return previously removed worker nodes to the pool. Added nodes are then managed at the node pool level.
Adding Lingjun nodes does not replace the original OS, system disk, or data disks of the nodes, and the stored data is retained.
Applicable scope
The node instances to be added must already be in the Lingjun group associated with this node pool and must not have joined other node pools.
The OperatingState of the Lingjun nodes must be Using.
Procedure
-
On the ACK Clusters page, click the name of your cluster. In the left navigation pane, click .
On the Node Pools page, click ⋮ Add Existing Nodes and follow the on-screen instructions to complete the following settings:
Add Existing Lingjun Node: Select the instances to be added from the instance list. Select Show Unavailable Instances to view unavailable instances.
Data Disk: Select how to mount the data disks.
Available only when the custom data disk configuration allowlist is enabled
Configure by Node Pool: Use the data disk configuration preset by the node pool to initialize and mount the data disks.
If the node pool has no preset data disk configuration, the original configuration of the nodes is retained.
No Initialization: Do not initialize the data disks and retain the original data disk configuration of the nodes.
ImportantIf the storage configurations of nodes are different, during a node pool upgrade, the system initializes the data disks separately based on the actual storage configuration of each node, rather than using a unified configuration.
When you use the configure-by-node-pool option, the mount directory must be empty. After a non-empty directory is mounted, the original files become inaccessible.
After the nodes are added, ACK automatically adds the following labels to the Lingjun node instances. View them in the Lingjun Intelligent Computing console:
ack.aliyun.com: the ID of the ACK managed Pro cluster 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, remove it from the node pool. The removal may affect your services. Perform this operation during off-peak hours.
Notes
Drain nodes:
If pods exist on a node, select Drain Node and make sure that the cluster has sufficient resources. The pods are automatically migrated to other nodes.
If your applications have Pod Disruption Budgets (PDBs) configured, the draining may fail, which causes the removal to fail. Handle this manually in advance.
After draining, if your applications cannot start properly on other nodes, the removal task proceeds regardless.
When you remove nodes in an abnormal state, do not select Drain Node. Otherwise, the removal may fail.
Node state after removal:
Removing a Lingjun node only removes the node from the Lingjun node pool. It does not remove the node from the Lingjun group, nor does it automatically release or unsubscribe the node.
Lingjun node instances added to a node pool are not released when the ACK cluster or the Lingjun node pool is deleted, nor are they automatically scaled in from the Lingjun group. Pay attention to the billing status of the Lingjun nodes to avoid additional costs.
To perform more management operations on nodes and groups, go to the Lingjun Intelligent Computing console.
The removal is an asynchronous operation. Check the removal progress in the node list.
Procedure
-
On the ACK Clusters page, click the name of your cluster. In the left navigation pane, click .
Click the name of the target Lingjun node pool, and remove nodes on the Nodes page.
Remove a single node: Find the target node, and in the Actions column of the node, choose .
Batch remove nodes: Select the target nodes and click Batch Remove at the bottom of the page.
Choose whether to Drain Node, read the notes on the page, and then follow the on-screen instructions.
Upgrade the kubelet version
The kubelet and container runtime versions of Lingjun node pools can be upgraded. Before the upgrade, run pre-checks to identify risks that may affect the upgrade. After you initiate an upgrade, the system automatically performs pre-checks and skips nodes that fail the checks.
kubelet upgrade: upgrades the kubelet of the nodes in the node pool to the same version as the control plane.
Container runtime upgrade: upgrades the container runtime of the nodes to the latest version.
The upgrade is available only for Lingjun node pools that contain nodes.
-
On the ACK Clusters page, click the name of your cluster. In the left navigation pane, click .
In the Actions column of the target Lingjun node pool, choose
Kubelet Update and follow the on-screen instructions to complete the following settings:Basic information
Setting
Description
kubelet and runtime upgrade information
Displays the current version and the available upgrade versions of kubelet and the container runtime.
Update Nodes
Specify the nodes to be upgraded (all nodes or some nodes).
Update Method
An in-place upgrade updates the required components directly on the original nodes. The system disk is not replaced, the nodes are not re-initialized, and the data on the original nodes is not affected.
Ignore Warnings
Whether to proceed if the precheck reports warnings. For example, a pod uses a
hostPathpointing to the system disk.Batch Update Policy
Setting
Description
Maximum Number of Nodes per Batch
During the upgrade, nodes are upgraded sequentially based on the configured maximum parallelism.
Automatic Pause Policy
The pause policy during node upgrades.
Interval Between Batches
When the automatic pause policy is set to Do Not Pause, choose whether to set a time interval between upgrade batches, and specify the interval duration. Valid values: 5 to 120 minutes.
Click Precheck. If the check fails, troubleshoot the issues based on the solutions provided on the page and continue after the check passes.
Click Start Update and follow the on-screen instructions to complete the upgrade.
During the upgrade, you can:
Pause: Puts the node pool in an intermediate state. Avoid other cluster operations and complete the upgrade promptly. Upgrades paused for more than seven days are automatically terminated, and related events and logs are cleared.
You cannot roll back kubelet or container runtime versions on already-upgraded nodes.
Cancel: Cancels the upgrade. After clicking Cancel, you cannot roll back kubelet or container runtime versions on already-upgraded nodes.
Common O&M scenarios for Lingjun nodes
The following describes the corresponding ACK-side procedures for Lingjun nodes in various O&M scenarios.
Scenario | Description |
Move a Lingjun node to a different group |
|
Restart a Lingjun node |
|
Reinstall a Lingjun node |
|
Lingjun offline maintenance (standby replacement) |
|
More operations
Use the RDMA feature
To enable Remote Direct Memory Access (RDMA) network communication for pods on Lingjun nodes, first manually install the ack-rdma-device-plugin add-on on the Add-ons page. For usage instructions, see Use RDMA networks for pods on Lingjun nodes.
Use PPU nodes in a Lingjun node pool
To Use PPUs in a Lingjun node pool, first manually install the ack-rdma-device-plugin and ack-ppu-device-plugin add-ons on the Add-ons page. To use PPU monitoring, install the ppu-device-plugin add-on.
Use PPU supernodes with network topology-aware scheduling
To enable ACK topology-aware scheduling to schedule tasks to PPU supernodes that support ICN Link, first manually install the ack-ppu-device-plugin add-on on the Add-ons page. For usage instructions, see Use Zhenwu PPU M890 supernodes with network topology-aware scheduling.
FAQ
Why does a node remain in the Not Ready state after maintenance?
Symptom: A Lingjun node is taken offline for maintenance due to hardware issues, but after the maintenance is complete, the node state in the ACK cluster is still Not Ready.
Cause: During the offline maintenance of the Lingjun node, machine replacement is performed. The local disk data is not retained, which may cause the container runtime information such as kubelet and containerd to be erased and the node state to become abnormal.
Solution: After the maintenance is complete, you must manually remove the node from the node pool and re-add it to the Lingjun node pool by adding existing nodes.