Articles

Kubernetes vs Nomad: Choosing an Orchestrator

Kubernetes is the feature-rich default for container orchestration; HashiCorp's Nomad trades some of that breadth for a simpler operational model.

Chisato Chisato · · 3 min read
Data center server racks with cabling

Kubernetes and Nomad both schedule and run workloads across a cluster of machines, restarting failed tasks and placing new ones where capacity exists — but Kubernetes does it with a large, tightly integrated ecosystem built specifically around containers, while Nomad does it with a single small binary that schedules containers, VMs, or plain executables with the same scheduler.

What they have in common

Both tools solve the core orchestration problem: given a fleet of machines and a set of workloads with resource requirements, decide what runs where, keep it running, and reschedule it elsewhere if a node fails. Both support declarative configuration, rolling updates, health checks, and horizontal scaling. If your only requirement is “run containers reliably across many machines,” either one can do it.

Where Kubernetes goes further

Kubernetes was built around Pods, Deployments, and Services as first-class objects, and its ecosystem has grown a purpose-built primitive for nearly every operational need: ConfigMaps and Secrets for configuration, Jobs and CronJobs for batch work, StatefulSets for ordered, stable workloads, the Horizontal and Vertical Pod Autoscalers, NetworkPolicies, and RBAC for fine-grained access control. Its extension model — admission controllers, the Operator pattern, custom resource definitions — means the ecosystem keeps growing rather than requiring the core project to absorb every new capability. Nearly every managed cloud offering, CI/CD tool, and observability platform assumes Kubernetes as the deployment target, which itself becomes a reason to choose it: the path of least resistance runs through it almost everywhere.

That breadth is also Kubernetes’s most common criticism. A production cluster typically touches a dozen or more distinct concepts before you’ve deployed your first real workload, and the learning curve is real even for teams with prior Docker experience.

Where Nomad is simpler

Nomad ships as a single binary with a much smaller conceptual surface: jobs, task groups, and tasks, plus a handful of scheduler types. It doesn’t try to be a full platform — service discovery, secrets management, and networking are deliberately left to companion tools (Consul and Vault, in HashiCorp’s own stack, though nothing requires using them) rather than being built in. Operationally, this often means fewer moving parts to run and monitor for a team that doesn’t need Kubernetes’s full feature set.

Nomad’s other distinguishing feature is workload flexibility: the same scheduler can run Docker containers, raw executables, Java applications, VMs via Podman or QEMU, and more, through pluggable task drivers. Kubernetes is built specifically around the container abstraction; if a meaningful part of your workload isn’t a container at all, Nomad’s driver model avoids having to containerize it just to get scheduling and health checks.

Kubernetes vs Nomad

KubernetesNomad
Core abstractionPods, Deployments, ServicesJobs, task groups, tasks
Workload typesContainers (primarily)Containers, VMs, raw binaries, more
Built-in scopeNetworking, secrets, RBAC, autoscaling, and moreScheduling only; networking/secrets via companion tools
Operational complexityHigher — many concepts to learnLower — smaller conceptual surface
Ecosystem and toolingVery large; the de facto standardSmaller, more HashiCorp-centric
Managed cloud supportUbiquitous (EKS, GKE, AKS, and more)Limited compared to Kubernetes
Best fitContainer-heavy workloads, teams wanting the ecosystemMixed workload types, teams wanting operational simplicity

Making the call

Choose Kubernetes when your workloads are container-native, you want managed offerings and a deep tooling ecosystem to lean on, or you’re already using a service mesh or GitOps pipeline built around it — which describes most greenfield cloud-native projects today. Choose Nomad when your workloads mix containers with non-container processes, your team is small enough that Kubernetes’s operational overhead outweighs its feature set, or you’re already invested in the HashiCorp stack and want a scheduler that shares its operational model with tools like Terraform.

Neither choice is permanent, and neither is exclusive: some organizations run Nomad for batch and legacy workloads alongside Kubernetes for their container-native services, using each where its tradeoffs fit best.

The takeaway

Kubernetes and Nomad both orchestrate workloads across a cluster, but Kubernetes commits to a much larger, container-focused feature set and ecosystem, while Nomad stays deliberately small and workload-agnostic. Pick Kubernetes for the ecosystem and the container-native default; pick Nomad when operational simplicity or mixed workload types matter more than having every feature built in.

Chisato Chisato · · 4 min read

Kubernetes Init Containers Explained

Init containers run to completion before a pod's main containers start, making them the standard way to handle setup steps and startup ordering.

#Kubernetes #DevOps #Cloud
Chisato Chisato · · 4 min read

Helm vs Kustomize for Kubernetes Config

Helm templates and packages Kubernetes manifests with a templating language; Kustomize patches plain YAML declaratively, with no templates at all.

#Kubernetes #DevOps #Cloud