Per-Node V2 Configuration Labels
The Longhorn V2 data engine supports per-node configuration via Kubernetes node labels. These labels allow you to override cluster-wide settings on individual nodes, enabling heterogeneous configurations where different nodes have different CPU, memory, or transport requirements.
| Label | Values | Description |
|---|---|---|
node.longhorn.io/nvmf-transport | tcp, rdma | NVMe-oF transport type for the instance manager. Auto-detected by the longhorn-manager based on RDMA hardware. See RDMA Transport Support. |
node.longhorn.io/spdk-cpu-mask | Hex string (e.g. 0xFF) | CPU mask for SPDK reactor threads. Overrides the cluster-wide data-engine-cpu-mask setting. |
node.longhorn.io/spdk-memory-size | Decimal MiB (e.g. 16384) | Hugepage memory size for SPDK in MiB. Overrides the cluster-wide data-engine-memory-size setting. |
node.longhorn.io/spdk-interrupt-mode | true, false | Enable/disable SPDK interrupt mode. Overrides the cluster-wide data-engine-interrupt-mode-enabled setting. Forced to false when nvmf-transport=rdma (RDMA poll groups cannot use fd-based interrupt wakeup). |
node.longhorn.io/v2-im-cpu-request | Cores (e.g. 4) or millicores (e.g. 4000m) | CPU request for the V2 instance manager pod on this node. Overrides the default CPU request. |
node.longhorn.io/disable-v2-data-engine | true, false | Disable the V2 data engine on this node. See Selective V2 Data Engine Activation. |
Per-node labels take precedence over cluster-wide settings. The resolution order for each setting is:
The exception is spdk-interrupt-mode: if nvmf-transport=rdma, interrupt mode is forced to false regardless of any other override, because SPDK’s RDMA poll groups cannot use fd-based interrupt wakeup.
kubectl label node <node-name> node.longhorn.io/spdk-cpu-mask=0xFF
kubectl label node <node-name> node.longhorn.io/spdk-memory-size=16384
kubectl label node <node-name> node.longhorn.io/v2-im-cpu-request=4
kubectl label node <node-name> node.longhorn.io/spdk-interrupt-mode=true
kubectl label node <node-name> node.longhorn.io/spdk-cpu-mask-
Check which labels are applied to a node:
kubectl get node <node-name> --show-labels | tr ',' '\n' | grep node.longhorn.io
Check the effective SPDK configuration on an instance manager:
kubectl -n longhorn-system get instancemanager <im-name> -o jsonpath='{.status.conditions}' | jq .
© 2019-2026 Longhorn a Series of LF Projects, LLC. Documentation Distributed under CC-BY-4.0.
For website terms of use, trademark policy and other project policies please see lfprojects.org/policies.