Skip to main content
Nodes are the worker machines that run containerized workloads. Manage node lifecycle, control scheduling, and configure taints and labels for workload placement.

Key Concepts

Node

A worker machine (physical or virtual) that runs pods.

Cordon

Mark a node as unschedulable to prevent new pods.

Drain

Safely evict all pods before maintenance.

Taint

Prevent pods from scheduling unless they have matching tolerations.

Required Permissions

ActionPermission
View nodesiam:project:infrastructure:kubernetes:read
Add/Remove nodesiam:project:infrastructure:kubernetes:write
Cordon/Drain/Uncordoniam:project:infrastructure:kubernetes:write
Manage taints/labelsiam:project:infrastructure:kubernetes:write

How to Add Nodes to a Cluster

1

Configure Nodes

First, configure nodes in cluster settings with hostname, IP, and role.
2

Click Add Node

Click Add Node in the header.
3

Select Nodes

Select available nodes from the list.
4

Join Nodes

Click Add Selected to join nodes to the cluster.
Nodes must be reachable via SSH and meet cluster requirements before joining.

How to Remove Nodes

1

Select Nodes

Use checkboxes to select nodes to remove.
2

Click Remove

Click Remove.
3

Confirm

Confirm removal. Nodes will be drained and removed.
Ensure other nodes have capacity for evicted pods before removing nodes.

How to Cordon a Node

Cordoning prevents new pods from being scheduled on a node. Existing pods continue running.
1

Find the Node

Locate the node in the list or detail page.
2

Click Cordon

Click Cordon from the actions menu.
3

Verify

The node shows a cordoned indicator.

How to Drain a Node

Draining evicts all pods from a node before maintenance.
1

Find the Node

Locate the node to drain.
2

Click Drain

Click Drain from the actions menu.
3

Confirm

Confirm the drain operation.
Drain behavior:
  • Regular pods are evicted and rescheduled
  • DaemonSet pods are skipped
  • Static pods are skipped
  • Pods with local storage may fail without force flag
Drain makes the node unschedulable. Use uncordon to allow scheduling again.

How to Uncordon a Node

1

Find the Cordoned Node

Locate the node showing cordoned status.
2

Click Uncordon

Click Uncordon from the actions menu.
3

Verify

The node can now accept new pods.

How to Add a Taint

Taints prevent pods from scheduling unless they have matching tolerations.
1

Open Node Detail

Click on a node to open details.
2

Click Add Taint

Click Add Taint in the Taints section.
3

Configure Taint

  • Key - Taint identifier (e.g., dedicated, gpu)
  • Value - Optional value (e.g., gpu-node)
  • Effect - Scheduling behavior
4

Add

Click Add Taint.
Taint effects:
EffectDescription
NoSchedulePods without toleration won’t be scheduled
PreferNoScheduleSystem tries to avoid scheduling pods without toleration
NoExecuteExisting pods without toleration will be evicted

How to Remove a Taint

1

Find the Taint

Locate the taint in the node detail page.
2

Click Remove

Click the delete icon on the taint.
3

Confirm

Confirm the removal.

How to Add a Label

Labels help organize nodes and enable workload targeting.
1

Open Node Detail

Click on a node to open details.
2

Click Add Label

Click Add Label in the Labels section.
3

Configure Label

  • Key - Label key (e.g., environment, tier)
  • Value - Label value (e.g., production, frontend)
4

Add

Click Add Label.

How to Remove a Label

1

Find the Label

Locate the label badge in the node detail page.
2

Click Remove

Click on the label to remove it.
3

Confirm

Confirm the removal.
Avoid removing system labels prefixed with kubernetes.io/ or node.kubernetes.io/ as they may affect cluster functionality.

Troubleshooting

  • Check kubelet is running on the node
  • Verify network connectivity to control plane
  • Check node conditions for memory, disk, or PID pressure
  • Review kubelet logs
  • Some pods may have PodDisruptionBudgets preventing eviction
  • Pods with local storage may not drain without force
  • Check drain summary for specific failures
  • Check if node is cordoned
  • Verify node has sufficient resources
  • Check for taints that may prevent scheduling
  • Ensure pods have matching tolerations
  • Verify you have write permission
  • Check key format is valid
  • System labels may be protected

FAQ

Cordon only marks the node as unschedulable. Drain both cordons AND evicts all pods.
Pods are gracefully terminated and rescheduled on other nodes. DaemonSet and static pods are skipped.
Taints on nodes repel pods. Tolerations on pods allow them to schedule on tainted nodes. A pod must tolerate all taints on a node to schedule there.
Yes, but ensure you have other masters for high availability. Removing the last master makes the cluster unavailable.