Orchestration · Updated 2026-05-24

Kubernetes vs Nomad

Kubernetes is the right answer when you have a platform team, a long-term cloud-native bet, and a service mesh in the future. Nomad is the right answer when you want a scheduler today, prefer one binary to twenty, and run mixed workloads (containers and not-containers).

PLATE — CONTROL PLANEKUBERNETES · PLATFORMapi-serverschedulercontroller-mgretcdcloud-ctrladdons (CNI/CSI)node 1kubelet · proxynode 2kubelet · proxynode 3kubelet · proxynode 4kubelet · proxy~ 6 components, ~ 4 GB RAM idlevsNOMAD · SINGLE BINARYserver 1raft leaderserver 2raft followerserver 3raft followerclient 1drivers ×client 2docker · execclient 3java · qemuclient 4raw exec1 binary, ~ 380 MB RAM idleFULL PLATFORM · PURE SCHEDULER
Kubernetes
The industry default for container orchestration. Vast feature surface.
Since
2014
By
Google / CNCF
License
Apache 2.0
kubernetes.io ↗
Nomad
Single-binary scheduler. Containers, VMs, raw exec, Java jars — all in one.
Since
2015
By
HashiCorp / IBM
License
BSL 1.1 (BSL since 2023)
www.nomadproject.io ↗

Both schedule workloads onto a fleet. Kubernetes is a platform — APIs, controllers, CRDs, RBAC, mesh, gateway, ingress, observability — all assumed. Nomad is a scheduler — Raft-backed, multi-driver, multi-region, deliberately small. The right pick depends on whether you want the ecosystem that comes with Kubernetes, or to skip it.

Quick takes

If you're…

  • You have a platform team or are planning one Kubernetes Kubernetes is what platforms get built on. The skills and tools assume it.
  • You want to run a scheduler today with no platform team Nomad Nomad is one binary. A small team can operate it without dedicated SREs.
  • You need to schedule both containers AND non-container workloads (Java jars, raw binaries, QEMU VMs) Nomad Nomad drivers cover all of these natively. Kubernetes is container-first.
  • You want a service mesh, GitOps, autoscaling, gateway API — all assumed Kubernetes The K8s ecosystem ships all of these as opinionated patterns.
  • You're running at edge or in resource-constrained environments Nomad Nomad uses way less RAM than even k3s; runs comfortably on small nodes.
  • You're hiring SREs / platform engineers Kubernetes K8s experience is universal; Nomad expertise is rarer.
  • You're running 3-30 nodes and the complexity feels disproportionate Nomad Nomad scales down well. K8s scales down with effort.
  • You need CRDs, operators, and a control-plane API to build platform features on Kubernetes CRD + controller is the standard K8s extensibility story. Nomad has plugins, not a control-plane API.
Decision wizard

A few questions, a verdict.

Q1

What do you intend to schedule?

Q2

Team size and ops capacity?

Q3

Do you need the wider cloud-native ecosystem (mesh, GitOps, operators)?

Q4

License sensitivity (post-BSL)?

At a glance

The scorecard.

Dimension
Kubernetes
Nomad
Edge
Scope core
Full platform; everything assumed
Pure scheduler; compose with Consul/Vault
depends
Many components; managed-tier dominates
Single binary, simple to operate
Nomad
Containers-first, VMs via KubeVirt
Containers + VMs + raw + Java + QEMU
Nomad
Vast; every infra tool targets it
HashiCorp-native; thinner third-party
Kubernetes
Autoscaling features
HPA, VPA, KEDA, Cluster Autoscaler
Nomad Autoscaler; capable, less mature
Kubernetes
CNI-based; pod-per-IP; rich mesh ecosystem
Simple by default; mesh via Consul
Kubernetes
Heavy control plane (4-8 GB+)
Light (1 GB servers, 100s MB clients)
Nomad
License ecosystem
Apache 2.0, CNCF
BSL 1.1 since 2023
Kubernetes
In depth

Dimension by dimension.

core

Scope

depends
Kubernetes

A platform. Scheduler + control plane + CRDs + RBAC + networking + storage + ingress + secrets + jobs + cronjobs + ConfigMaps. Almost everything platform teams build on top of.

Nomad

A scheduler. Multi-driver, Raft-backed, multi-region. Networking, secrets, service discovery, mesh are separate HashiCorp products (Consul, Vault) or third-party.

ops

Install and operate

edge: Nomad
Kubernetes

Many moving parts: api-server, scheduler, controller-manager, etcd, kubelets, kube-proxy, CNI, CSI. Managed offerings (EKS, GKE, AKS) hide most of this — for a fee.

Nomad

One binary. Runs as server (Raft) and client (worker). Same binary, different flags. Production cluster: 3-5 servers + N clients. No CNI, no CSI, no kube-proxy.

features

Workload types

edge: Nomad
Kubernetes

Containers (Docker, containerd, CRI-O). VMs via KubeVirt with extra setup. Raw binaries via privileged Pods or hostPath tricks. Container-first by design.

Nomad

Drivers: Docker, containerd, exec (raw binaries), Java (jars), QEMU (VMs). All first-class. Mixed workloads on the same cluster work cleanly.

ecosystem

Ecosystem and integrations

edge: Kubernetes
Kubernetes

The largest in infrastructure software. Every CNCF project targets K8s first. Operators for every database, every observability tool, every secret manager. Backstage and dozens of IDPs assume it.

Nomad

Smaller. Strong integrations with the HashiCorp suite (Consul, Vault, Boundary). Limited operator ecosystem. Cloud-native projects rarely have first-class Nomad support.

features

Autoscaling

edge: Kubernetes
Kubernetes

HPA (horizontal pod autoscaler), VPA (vertical), KEDA (event-driven), Cluster Autoscaler. Mature, well-documented, broadly understood.

Nomad

Nomad Autoscaler + horizontal app autoscaling, plus cluster autoscaler. Capable, but less mature than what Kubernetes has.

core

Networking model

edge: Kubernetes
Kubernetes

Every pod gets an IP. CNI plugin (Cilium, Calico, Flannel, AWS VPC CNI) handles routing. Services + kube-proxy handle in-cluster discovery and load balancing.

Nomad

Bridge or host networking by default. Consul Connect adds service mesh and mTLS. Networking is simpler but less feature-rich out of the box.

ops

Resource overhead

edge: Nomad
Kubernetes

Control plane is heavy: 4-8 GB RAM minimum on a real cluster. k3s shaves this down for the edge case.

Nomad

Tiny. Servers run on 1 GB nodes. Clients add a few hundred MB. Great fit for edge or constrained environments.

ecosystem

License

edge: Kubernetes
Kubernetes

Apache 2.0. CNCF-governed. No license drama, no fork risk.

Nomad

Business Source License 1.1 since August 2023. Source-available for most uses, but the BSL change provoked the OpenTofu-style discussion. OpenBao (Vault fork) exists; no Nomad fork has gained traction.

Benchmark

Scheduling decision time, 1000 jobs

Internal HashiCorp benchmark on a 3-server cluster scheduling 1000 jobs with realistic constraints (affinity, anti-affinity, port reservations) on a 100-node fleet. Numbers from Mitchell Hashimoto's 2017 talk + community retests. Kubernetes equivalent measured on a 3-control-plane EKS cluster.

Metric
Kubernetes
Nomad
Better
Scheduling latency p50 (1000 jobs)
Nomad's C-implemented scheduler is single-purpose and faster.
28 s
1.4 s
Nomad
Scheduling latency p99
65 s
4.2 s
Nomad
Control-plane memory at idle
K8s api-server + etcd + scheduler + controller-mgr.
4.2k MB
380 MB
Nomad
Time to first ready (3-node cluster)
kubeadm vs nomad agent on identical hardware.
480 s
28 s
Nomad

Source: Mitchell Hashimoto: Nomad C1M (scheduling at scale) ↗

When to pick neither

A different shape of problem.

  • AWS ECS / Fargate
    You're AWS-only and want zero control-plane to operate
  • Docker Swarm
    Tiny deployments; you already use Docker; want the simplest cluster
  • k3s / k0s / MicroK8s
    You want Kubernetes but lighter — edge, IoT, dev
  • Cloud Run / Cloud Functions
    Stateless HTTP services; pay-per-request
  • Apache Mesos / DC/OS
    Effectively retired; do not start here
  • systemd + Ansible
    Small fleet, stable workload, no need for a scheduler
Situational picks

For specific cases.

Modern startup adopting cloud-native from day one

Kubernetes

Hire is easier, ecosystem is deeper, managed offerings (EKS/GKE) hide the operational tax. Worth the complexity.

Mid-size company with stable workloads and a small ops team

Nomad

One binary, low memory, good operational ergonomics. Pair with Consul + Vault if needed.

Mixed-workload shop running Java jars, raw binaries, and a few VMs

Nomad

Nomad's multi-driver design fits this exactly. K8s would force everything into containers.

Building a platform-as-a-product (internal developer platform)

Kubernetes

Backstage, ArgoCD, every IDP, every operator targets K8s. Building on it is the path of least resistance.

Edge deployment, hundreds of small sites, low resource budgets

Nomad

Nomad's footprint is tiny. K3s is the K8s answer here but Nomad is still simpler operationally.

You don't actually need a cluster — only run a handful of services

Docker Compose on one VM, or AWS ECS / Cloud Run

Both K8s and Nomad are overkill for 5-10 services on a single box.

Sources

Primary material.

Found this useful?