HashiCorp Nomad
HashiCorp Nomad is a workload orchestrator: a cluster scheduler that places and keeps applications running across a fleet of machines. It runs containers, binaries, Java apps, and other workloads through pluggable task drivers, using one declarative job format instead of a container-only control plane.
itCloud native tools and technologies | OpenSkills.info
Course pathWalk it in order
Look it upDip in anytime
Go furtherLeaves this page
Don't Panic
Don't Panic — HashiCorp Nomad
Nomad is HashiCorp's workload orchestrator: you declare what should run, and it keeps placing that work on machines until reality matches the declaration. It is the "make sure this is running somewhere sensible" layer, not the "own the entire cloud-native universe" layer.
Before Nomad (and friends), operators pinned apps to named hosts and hoped the hosts stayed polite. Container platforms fixed a lot of that for Linux containers, then shrugged at Windows services, Java archives, batch pipelines, and plain binaries. Nomad's bet is one job format for that mixed pile, executed through task drivers (plugins that actually start Docker, exec, Java, QEMU, and so on).
Three ideas carry most of the weight.
First, servers and clients. Servers store cluster state and run the scheduler. Clients are the machines that execute work. A production region usually runs three or five servers so Raft can keep a quorum; clients can be numerous. A datacenter is a placement label inside a region, not a second control plane.
Second, the job hierarchy: job → group → task. Tasks in a group are co-located on one client. When Nomad assigns a group to a client, that assignment is an allocation. Job type (service, batch, system, sysbatch) picks which scheduler personality you get.
Third, placement is two acts: feasibility (can this node run it?) then ranking (which feasible node is best?). Ranking leans on bin packing: fill machines densely without exhausting any resource dimension. That is great for utilization and slightly rude to your blast radius, which is why spreads and rack metadata exist.
The surprise for Kubernetes-shaped brains: Nomad refuses to become your service mesh, secret engine, and ingress platform. It composes with Consul, Vault, and Terraform on purpose. Native Nomad services can cover basic discovery; they do not retire Consul when you already standardized on the catalog or need a mesh.
Pending allocations with idle CPU are usually inventory lies (missing driver, bad constraint), not a plea to buy hardware. Read allocation events before you autoscale.
Next: the Intro for the architecture walk; Slides for the decision map; Cheatsheet when you need the tables; Practice and Exercise when you want a local nomad agent -dev loop; Field Notes when you want the scars without the brochure.
Where this skill leads
Relevant careers
See how this topic contributes to broader role-level skill maps.
Sources
- https://developer.hashicorp.com/nomad/docs
Supports
- Nomad documentation home and navigation into architecture, jobs, drivers, and operations
- https://developer.hashicorp.com/nomad/docs/what-is-nomad
Supports
- Nomad is a flexible workload orchestrator for containerized and legacy applications
- Single binary combining resource management and scheduling with no external coordination store
- Composes with Terraform, Consul, and Vault rather than absorbing those concerns
- Comparison points versus Kubernetes, ECS, and Terraform
- Multi-region federation and mixed workload drivers as differentiators
- https://developer.hashicorp.com/nomad/docs/architecture
Supports
- Regions contain servers and clients; datacenters are placement groupings inside a region
- Servers form a Raft consensus group with a leader; recommend three or five servers
- Clients register resources, attributes, and drivers over RPC and run allocations
- Federated regions do not share jobs, clients, or state; gossip forwards requests
- Bin packing maximizes resource utilization while satisfying constraints
- https://developer.hashicorp.com/nomad/docs/concepts/scheduling/scheduling
Supports
- Jobs, nodes, allocations, and evaluations are the four primary scheduling components
- Evaluations are created on desired or emergent state change
- Feasibility filtering then ranking; bin packing primary; job anti-affinity applied
- Schedulers include service, batch, system, sysbatch, and core
- Leader plan queue protects against oversubscription under optimistic concurrency
- https://developer.hashicorp.com/nomad/docs/job-specification
Supports
- Jobspec is HCL parsed by CLI and submitted as JSON
- Hierarchy job → group → task; groups are co-located on one client
- Example covering datacenters, service type, update, network ports, Consul service, Docker task
- https://developer.hashicorp.com/nomad/docs/job-specification/job
Supports
- Job types service, system, batch, sysbatch
- Parameters for datacenters, node_pool, namespace, region, priority, update, vault, periodic, parameterized
- https://developer.hashicorp.com/nomad/docs/drivers
Supports
- Task drivers execute tasks and provide resource isolation
- Isolation effectiveness depends on driver and OS; client-to-task interface is not a security boundary
- Bundled and community/plugin drivers extend workload support
- https://developer.hashicorp.com/nomad/docs/commands
Supports
- CLI contexts and NOMAD_ADDR, NOMAD_TOKEN, NOMAD_NAMESPACE, TLS-related environment variables
- https://developer.hashicorp.com/nomad/docs/concepts/variables
Supports
- Nomad Variables store encrypted configuration in Nomad state
- ACL path policies gate access; tasks get implicit access under nomad/jobs paths
- Variables are for small config, not a full Vault replacement
- https://developer.hashicorp.com/nomad/docs/other-specifications/volume/csi
Supports
- CSI volume create/register workflow and volume specification fields
- https://developer.hashicorp.com/nomad/docs/autoscaling
Supports
- Nomad Autoscaler is a separate agent for horizontal application and cluster scaling
- Dynamic Application Sizing is Enterprise
- https://github.com/hashicorp/nomad/blob/v0.1.0/CHANGELOG.md
Supports
- Nomad 0.1.0 initial release dated 2015 Sep 28
- https://github.com/hashicorp/nomad/blob/v0.3.2/CHANGELOG.md
Supports
- Nomad 0.3.2 released 2016 Apr 22 among early 0.3 line
- https://www.hashicorp.com/en/blog/announcing-hashicorp-nomad-0-11-beta
Supports
- Nomad 0.11 beta introduced CSI and autoscaling-related capabilities
- https://www.hashicorp.com/blog/announcing-general-availability-of-hashicorp-nomad-1-0
Supports
- Nomad 1.0 GA on 2020 Dec 8 with namespaces in OSS, HCL2, Dynamic Application Sizing
- https://www.hashicorp.com/blog/hashicorp-nomad-meets-the-2-million-container-challenge
Supports
- Two million container challenge alongside 1.0; prior million container challenge on 0.3.1 in 2016
- About 1500 containers per second across roughly 6000 hosts and 10 AWS regions in about 22 minutes
- https://github.com/hashicorp/nomad/releases/tag/v1.4.0
Supports
- Nomad 1.4.0 on 2022 Oct 4 added Variables and native service checks
- https://www.hashicorp.com/blog/nomad-1-4-adds-nomad-variables-and-updates-service-discovery
Supports
- Nomad Variables encrypted at rest; native service discovery health checks
- Nomad 1.3 released May 2022 with native service discovery expansion
- https://github.com/hashicorp/nomad/blob/main/CHANGELOG.md
Supports
- Ongoing release history including 1.11 and 2.0 lines
- https://developer.hashicorp.com/nomad/docs/release-notes
Supports
- Support lifecycle notes for Nomad version lines after IBM alignment
- https://blog.cloudflare.com/how-we-use-hashicorp-nomad/
Supports
- Cloudflare chose Nomad for edge management services for lightness, Consul integration, and drivers
- Rack-aware distinct_property constraints; Consul discovery; CPU limits soft when host has spare capacity
- Dedicated mount for Nomad data directory to contain disk use
- https://github.com/jippi/awesome-nomad
Supports
- Curated ecosystem list used to select Awesome Links entries
- https://github.com/hashicorp/nomad-autoscaler
Supports
- Official Autoscaler project and version compatibility notes
- https://github.com/hashicorp/nomad-pack
Supports
- Official Nomad Pack packaging tool
