Manage Nodes on Huawei DCS
This document explains how to manage worker nodes using Cluster API Machine resources.
To upgrade the Kubernetes version of the nodes, see Upgrade Kubernetes on Huawei DCS.
TOC
PrerequisitesOverviewNode Management OperationsScaling Worker NodesAdding Worker NodesRemoving Worker NodesChanging Machine InfrastructureUpdating Bootstrap TemplatesManaging Node Pools Using the Web UIViewing Node PoolsAdding a Worker Node PoolDeleting a Worker Node PoolViewing Conditions (Control Plane Only)TroubleshootingA new workerMachine stays in Provisioning and the DCS VM stays in creatingNext StepsPrerequisites
Important Prerequisites
- The control plane must be deployed before performing node operations. See Create Cluster for setup instructions.
- Ensure you have proper access to the DCS platform and required permissions.
- To manage the nodes of the
globalcluster itself, the provider must be installed onglobalfirst; see Manage Nodes on Alauda OS Clusters.
Configuration Guidelines When working with the configurations in this document:
- Only modify values enclosed in
<>brackets - Replace placeholder values with your environment-specific settings
- Preserve all other default configurations unless explicitly required
Overview
Worker nodes are managed through Cluster API Machine resources, providing declarative and automated node lifecycle management. A worker node pool is built from four resources:
- IP-Hostname Pool Configuration - Network settings for worker nodes
- Machine Template Setup - VM specifications
- Bootstrap Configuration - Node initialization and join settings
- Machine Deployment - Orchestration of node creation and management
To add another worker node pool with YAML, follow Deploy Worker Nodes on the cluster creation page.
Node Management Operations
This section covers common operational tasks for managing worker nodes, including scaling, machine infrastructure changes, and bootstrap template updates.
Cluster API Framework Node management operations are based on the Cluster API framework. For detailed information, refer to the official Cluster API documentation.
Scaling Worker Nodes
Worker node scaling allows you to adjust cluster capacity based on workload demands. The Cluster API manages the node lifecycle automatically through the MachineDeployment resource.
Adding Worker Nodes
Increase the number of worker nodes to handle increased workload or add new capacity.
Use Case: Scale up cluster to add more compute resources
Prerequisites:
- Verify the IP pool has sufficient available IP addresses for new nodes
- Ensure the DCS platform has adequate resources to provision new VMs
Procedure:
-
Check Current Node Status
View the current machines in the cluster:
-
Extend IP Pool
Before scaling up, add new IP configurations to the pool for the additional nodes.
INFOIP Pool Expansion The IP pool must contain at least as many entries as the desired replica count. Add new IP entries for each additional worker node you plan to deploy.
Add IP entries to the pool:
First, export the current pool configuration to preserve existing entries:
Then use the following command to add new IP configurations. The
poolarray must include all existing entries plus the new entries:WARNINGImportant Notes
- The
poolarray must include all existing entries plus the new entries you want to add - Copy the existing entries from the exported YAML to avoid data loss
kubectl patch --type='merge'replaces the entirespec.poolarray, so copy every existingpersistentDiskblock unchanged, includingisThinif it is present, unless you are intentionally adding new disks- Ensure each new entry has unique
ip,hostname, andmachineNamevalues - If new worker nodes also need the platform-required
/var/cpaasdisk, declare it in each new entry'spersistentDisk - Network parameters (
mask,gateway,dns) typically match existing entries
Example: Adding 2 new nodes to an existing pool of 3 nodes
- The
-
Verify IP Pool Capacity
After extending the IP pool, verify it has sufficient entries for the desired replica count:
Check that the pool contains at least as many entries as the desired replica count.
-
Scale Up the MachineDeployment
Update the
replicasfield to the desired number of nodes:Example: Scale from 3 to 5 nodes
-
Monitor the Scaling Progress
Watch the machine creation process:
The Cluster API controller will automatically create new machines based on the MachineDeployment template.
-
Verify Nodes Joined the Cluster
Switch to the target cluster context and verify the new nodes:
The new nodes should appear in the list and transition to
Readystatus.
Rolling Update Behavior When scaling up, new nodes are created immediately without affecting existing nodes. This ensures zero-downtime scaling.
Removing Worker Nodes
Decrease the number of worker nodes to reduce cluster capacity or remove underutilized resources. The Cluster API supports two removal strategies:
- Random removal: Reduce replicas, the platform randomly selects and deletes machines
- Targeted removal: Mark specific machines for deletion, then reduce replicas (recommended for IP recovery)
IP Recovery Scenario When you need to recycle specific machine IPs (e.g., for reassignment or IP pool management), use the targeted removal method. The deletion annotation ensures the platform deletes the marked machines, not random ones.
Data Loss Warning Scaling down removes nodes and their associated VMs. Ensure:
- Workloads can tolerate node loss through proper replication
- No critical data is stored only on the nodes being removed
- Applications are designed for horizontal scaling
Declared persistent disks in DCSIpHostnamePool.spec.pool[].persistentDisk are not deleted just because a Machine is replaced. They remain available for reuse while the corresponding IP slot stays in the pool. Removing the IP slot from the pool, deleting the pool, or deleting the cluster can trigger persistent-volume cleanup.
Random Removal
Use Case: Scale down cluster where any node can be removed (no specific IP requirements)
Procedure:
-
Identify Current Machine Status
View the current machines in the MachineDeployment:
-
Scale Down the MachineDeployment
Update the
replicasfield to reduce the node count:Example: Scale from 5 to 3 nodes
The Cluster API controller will randomly select and delete machines to match the desired replica count.
-
Monitor the Removal Progress
Watch the machine deletion process:
The Cluster API controller will:
- Drain the selected nodes (evict pods if possible)
- Delete the underlying VMs from the DCS platform
- Remove the machine resources
-
Verify Nodes Removed
Switch to the target cluster context:
The removed nodes should no longer appear in the list.
Targeted Removal
Use Case: Remove specific machines (e.g., for IP recovery, replace unhealthy nodes)
Procedure:
-
Identify Machines to Remove
View the current machines:
Note the
<machine-name>of the machines you want to remove. -
Annotate Machines for Deletion
Mark the specific machines for deletion:
Repeat for each machine you want to remove.
Example: Remove two specific machines
-
Scale Down the MachineDeployment
After annotating the machines, reduce the replica count:
INFOReplica Count Must Match Annotated Machines Reduce replicas by exactly the number of annotated machines.
- If you reduce by fewer, not all annotated machines will be removed
- If you reduce by more, additional machines will be randomly selected for deletion
Example: If you annotated 2 machines, reduce replicas by exactly 2 (e.g., from 5 to 3)
The platform will delete the annotated machines, not randomly selected ones.
-
Monitor the Removal Progress
Watch the machine deletion process:
-
Verify Nodes Removed
Switch to the target cluster context:
The removed nodes should no longer appear in the list.
Changing Machine Infrastructure
To change the machine specification of worker nodes (CPU, memory, disk, VM template), create a new machine template, then point the MachineDeployment at it. The worker nodes are replaced one by one.
-
Create a New Machine Template
Export the
DCSMachineTemplatereferenced by yourMachineDeploymentto a new file:In the new file:
- Set
metadata.nameto a unique name - Modify the required values (
spec.template.spec.vmTemplateName,spec.template.spec.vmConfig.dcsMachineCpuSpec.quantity,spec.template.spec.vmConfig.dcsMachineMemorySpec.quantity,spec.template.spec.vmConfig.dcsMachineDiskSpec) - Remove the server-generated metadata (
resourceVersion,uid,generation,creationTimestamp,managedFields, thekubectl.kubernetes.io/last-applied-configurationannotation) and the entirestatusfield - Leave
spec.template.spec.providerIDunset
Keep pool-managed persistent disks, including
/var/cpaas, inDCSIpHostnamePool.spec.pool[].persistentDiskand additional NICs inDCSIpHostnamePool.spec.pool[].additionNic[]. UsedcsMachineDiskSpeconly for the system disk and template-local disks.Apply the new template:
- Set
-
Update Machine Deployment
Point the
MachineDeploymentat the new template: -
Monitor the Rolling Update
-
Worker nodes are replaced one by one with the new specification
-
Any disks declared in
DCSIpHostnamePool.spec.pool[].persistentDiskare detached from the old VM and reattached to the replacement VM. If the pool uses persistent disks, keepspec.strategy.rollingUpdate.maxSurgeat0on theMachineDeployment -
Monitor the progress:
-
To change the machine specification of control plane nodes, use the same steps and patch KubeadmControlPlane.spec.machineTemplate.infrastructureRef.name instead.
To move the nodes to the Alauda OS image of a new Kubernetes version, follow Upgrade Kubernetes on Huawei DCS instead.
If you are migrating an existing cluster from the old template-disk layout to pool-managed persistent disks, follow Migrate Existing Huawei DCS Clusters to Pool-Managed Persistent Disks before you rely on upgrade-time data preservation.
Updating Bootstrap Templates
Bootstrap templates (KubeadmConfigTemplate) are used by MachineDeployment and MachineSet resources. Changes to existing templates do not automatically trigger rollouts of existing machines; only new machines use the updated template.
Update Process:
-
Export Existing Template
-
Modify Configuration
- Update the desired fields in the exported YAML
- For Kubernetes 1.35 or later, add the required kubelet patch settings to
/etc/kubernetes/patches/kubeletconfiguration0+strategic.json - Change the
metadata.nameto a new unique name - Remove extraneous metadata fields (
resourceVersion,uid,creationTimestamp, etc.)
-
Create New Template
-
Update MachineDeployment
- Modify the MachineDeployment resource
- Update
spec.template.spec.bootstrap.configRef.nameto reference the new template - Apply the changes to trigger a rolling update
Template Rollout Behavior Existing machines continue using the old bootstrap configuration. Only newly created machines (during scaling or rolling updates) will use the updated template.
Managing Node Pools Using the Web UI
Adding, deleting, and viewing node pools through Fleet Essentials are not affected by the upgrade limitations described in Fleet Essentials Boundary.
Node pools provide a declarative way to manage groups of nodes with identical configurations. You can view, add, and delete worker node pools through the web UI.
Requirement: This workflow requires Fleet Essentials. The persistentDisk declaration on DCSIpHostnamePool remains YAML-only and is not exposed in the node-pool UI.
If the node pool relies on pool-managed persistent disks, prepare or update the corresponding DCSIpHostnamePool entry with YAML before you use the web UI workflow here.
Navigation: Clusters → Clusters → Select cluster → Node Pools Tab
Viewing Node Pools
The Node Pools Tab displays all node pools in the cluster:
Control Plane Node Pool:
- Fixed at 3 replicas for high availability
- Displays Kubernetes version with upgrade indicator if available
- Shows Conditions link for detailed status
Worker Node Pools:
- Customizable replica counts
- Individual Kubernetes version management
- Scale and upgrade operations
Node Pool Card Information:
Adding a Worker Node Pool
Navigation: Node Pools Tab → Click Add Worker Node Pool
Form Fields:
Validation:
- Pool name must be unique within the cluster
- IP Pool must have sufficient available IP addresses (≥ Replicas)
- maxSurge/maxUnavailable constraints must be satisfied
- If the node pool relies on persistent disks, keep
maxSurge = 0so Machines are replaced one by one
Tip: Prefix the pool name with the cluster name followed by a hyphen (e.g., mycluster-worker-1) to avoid naming conflicts.
After creation, new nodes appear in the Nodes Tab. The number of nodes equals the configured Replicas value.
Deleting a Worker Node Pool
Steps:
- Click the delete icon on the Worker Node Pool card
- Confirm deletion in the dialog
Deleting a worker node pool permanently removes all associated nodes and machines. Ensure workloads can tolerate the loss of these nodes through proper replication.
Viewing Conditions (Control Plane Only)
Click the Conditions link on the Control Plane Node Pool card to view detailed status information.
Conditions List:
Troubleshooting
A new worker Machine stays in Provisioning and the DCS VM stays in creating
The diagnostic flow is identical for control-plane and worker Machine objects — when a DCSMachine reaches Provisioning with status.cdRomFile already set (DCS API auth and ISO upload succeeded), but the underlying DCS VM never schedules to a host, the failure is on the DCS platform side and not in the controller.
See Infrastructure → Troubleshooting: VM stuck in creating for the full diagnostic ladder, which covers:
- Confirming the symptom is a placement stall (not a slow boot).
- Checking datastore free space.
- Checking host CPU / memory utilisation and overcommit ratios.
- Coordinating with the DCS platform team to rebalance load when a single DCS Host is saturated.
- Escalation path when the deploy task is genuinely deadlocked.
For control-plane high availability across multiple physical hosts, see Infrastructure → Cross-Host High Availability for Control Plane.
The same diagnostic applies whether the stuck node is the first control-plane node of a fresh cluster, a new worker added through MachineDeployment scaling, or a replacement worker created during a rolling update.