The accepts_build_workloads flag
Every node has an accepts_build_workloads flag. It is a routing preference, not a placement rule and not a guarantee. Set it from the node’s detail page in the dashboard, with the CLI, or with PUT /api/v1/nodes/{id}/workloads:
- It does not move apps or databases already running on the node.
- It does not stop a build from running on a node without it. If no node that accepts builds is online, the build runs on the primary node instead of failing, so a build node going offline never fails a deploy.
How a build picks its node
For each build, the control plane looks at every registered node withaccepts_build_workloads set:
- If none has it set, the build runs locally, as on a fresh single-node install.
- If at least one is online, the online one with the lexicographically smallest ID runs the build. This is a fixed tie-break, not load-based scheduling. Levelrail does not do bin-packing, affinity or autoscaling.
- If some have it set but none is online, the build falls back to the primary node.
Mark a node build-only
A build on a node that already serves traffic competes with that traffic for CPU and disk for as long as the build runs. To keep builds off your production containers:1
Enable builds on a secondary node
--accepts-app=true instead if the node should also run apps.2
Optionally disable builds on the primary
nodes provision --role build or nodes ssh-provision --role build is set up as a build node when it enrolls. See Node provisioning.
The Nodes page suggestion
On a single-node install, the Nodes page can suggest adding a second node when that node’s CPU or disk use has been high for a sustained period. It reuses the existing node resource usage alert (APP_ALERT_NODE_CPU_THRESHOLD_PERCENT) and the disk space alert, with no separate threshold. It appears only when telemetry is configured and only while there is exactly one node.
See also
- Multi-node: enrolling nodes and managing placement.
- Observability: the node alerts behind the suggestion.