Kubernetes uses labels and taints to manage and schedule resources in clusters. For more information about the introduction and usage notes for labels, see Labels and Selectors. For background on how taints and tolerations work, see Taints and Tolerations in the Kubernetes documentation.
Nodes with specialized hardware, such as GPUs, are expensive to run. To keep general workloads off these nodes and reserve them for pods that actually need the hardware, apply taints to the nodes. A taint tells the Kubernetes scheduler to avoid or evict pods that don't have a matching toleration.
ACK lets you manage node taints and labels directly from the console.
Use cases
-
Dedicated nodes: Reserve a group of nodes for specific teams or workloads by tainting them so only pods with the right toleration are scheduled there.
-
Hardware-specific scheduling: Ensure pods that require GPUs or other specialized hardware are the only ones placed on nodes that have that hardware.
-
Pod eviction: Add a
NoExecutetaint to drain pods from a node. Pods without a matching toleration are evicted from the node. If you want to retain a pod on the node, add a toleration that matches the NoExecute taint to the pod.
Taint effects
Each taint has an effect that controls how the scheduler treats pods without a matching toleration:
| Effect | Behavior for new pods | Behavior for running pods |
|---|---|---|
NoSchedule |
Not scheduled to the node | Not evicted |
NoExecute |
Not scheduled to the node | Evicted (if no matching toleration is present) |
PreferNoSchedule |
Scheduler attempts to avoid the node; this is a soft requirement | Not evicted |
Prerequisites
Before you begin, ensure that you have:
-
Access to the ACK console
-
Sufficient permissions to manage node labels and taints
Manage node labels
Labels identify and classify nodes. Use them as selectors to target specific nodes for operations or scheduling.
Add a label
-
Log on to the ACK console. In the left navigation pane, click Clusters.
-
On the Clusters page, click the cluster name. In the left navigation pane, choose Nodes > Nodes.
-
Click Manage Labels and Taints. On the Labels tab, select the target nodes and click Add Label.
-
In the Add dialog box, set Name and Value, then confirm.
After the label is added, it appears in the Labels column on the node list.
Work with labels in the node list
-
Click a label to filter the node list and show only nodes that have that label.
-
Click the
icon next to a label to delete it.
Some Kubernetes-native labels cannot be deleted. If you delete one, the system automatically re-adds it to the node.
Manage node taints
Add a taint
-
Log on to the ACK console. In the left navigation pane, click Clusters.
-
On the Clusters page, click the cluster name. In the left navigation pane, choose Nodes > Nodes.
-
Click Manage Labels and Taints. On the Taints tab, select the target nodes and click Add Taint.
-
In the Add dialog box, set Name, Value, and Effect, then confirm.
| Parameter | Description |
|---|---|
| Name | 1–63 characters; letters, digits, hyphens (-), underscores (_), and periods (.); must start and end with a letter or digit. To use a prefixed key, add a DNS subdomain prefix (max 253 characters) followed by a forward slash (/). |
| Value | Optional. Max 63 characters; letters, digits, hyphens (-), underscores (_), and periods (.); must start and end with a letter or digit. |
| Effect | NoSchedule, NoExecute, or PreferNoSchedule. See Taint effects for behavior details. |
For the full taint format specification, see Taints and Tolerations concepts in the Kubernetes documentation.
Verify the taint
After adding the taint, confirm it is applied:
-
On the Nodes page, find the target node in the list.
-
Check the Taints column — the new taint should appear there.
-
Click the taint to filter the node list and verify only nodes with that taint are displayed.
Remove a taint
In the Taints column, click the
icon next to the taint you want to remove.
What's next
-
To configure labels and taints at the node pool level (applied to all nodes in a pool), see Create and manage a node pool.
-
To schedule pods to specific nodes using labels or the
nodeSelectorfield, see Schedule pods to specific nodes.