Skip to main content
πŸŽ“ Claude Code Masterclass Learn AI-assisted development on Udemy β€” plus the companion book on Leanpub & Amazon. Start Learning
Kubernetes vs Nomad: Container Orchestration
Platform Engineering

Kubernetes vs Nomad 2026: Container Orchestration

Kubernetes vs HashiCorp Nomad compared in 2026. Complexity, multi-workload support, scheduling, networking, and when Nomad is the simpler choice.

LB
Luca Berton
Β· 3 min read

Kubernetes orchestrates containers. Nomad orchestrates anything β€” containers, VMs, Java JARs, raw binaries. This fundamental difference drives the complexity and capability trade-off.

Architecture

Kubernetes

Kubernetes is a container-only orchestrator with a rich ecosystem:

  • API server, scheduler, controller manager, etcd
  • kubelet on every node
  • Container runtime (containerd/CRI-O)
  • CNI plugin for networking
  • CRDs for extensibility
  • Massive ecosystem of operators and tools

Nomad

Nomad is a multi-workload scheduler with minimal dependencies:

  • Single binary (server + client modes)
  • No etcd β€” built-in Raft consensus
  • Task drivers: Docker, Podman, exec, Java, QEMU, raw_exec
  • Optional Consul integration for service discovery
  • Optional Vault integration for secrets

Feature comparison

FeatureKubernetesNomad
Workload typesContainers onlyContainers, VMs, binaries, JARs
BinaryMultiple componentsSingle binary
ComplexityHigh (steep learning curve)Low-moderate
SchedulingPod-levelTask group-level
NetworkingCNI plugins (complex)Bridge, host, or Consul Connect
Service meshIstio, Cilium, LinkerdConsul Connect
Service discoveryDNS, ServicesConsul (external)
SecretsKubernetes Secrets, CSIVault (external)
StoragePV/PVC, CSI driversHost volumes, CSI
AutoscalingHPA, VPA, KEDA, KarpenterNomad Autoscaler
Multi-regionFederation (complex)Built-in (native)
EcosystemMassive (CNCF)Smaller (HashiCorp)
WindowsYes (limited)Yes (native)
GPU schedulingDevice pluginsDevice plugins
LicenseApache 2.0BSL 1.1

Job definitions

Kubernetes

apiVersion: apps/v1
kind: Deployment
metadata:
  name: web
spec:
  replicas: 3
  selector:
    matchLabels:
      app: web
  template:
    metadata:
      labels:
        app: web
    spec:
      containers:
        - name: web
          image: nginx:alpine
          ports:
            - containerPort: 80
          resources:
            requests:
              cpu: 100m
              memory: 128Mi
---
apiVersion: v1
kind: Service
metadata:
  name: web
spec:
  selector:
    app: web
  ports:
    - port: 80

Kubernetes needs a Deployment + Service + potentially Ingress, NetworkPolicy, HPA, PDB β€” multiple resources for one workload.

Nomad

job "web" {
  datacenters = ["dc1"]
  type        = "service"

  group "web" {
    count = 3

    network {
      port "http" { to = 80 }
    }

    service {
      name = "web"
      port = "http"
      provider = "consul"
    }

    task "nginx" {
      driver = "docker"
      config {
        image = "nginx:alpine"
        ports = ["http"]
      }
      resources {
        cpu    = 100
        memory = 128
      }
    }
  }
}

Nomad defines everything in one file β€” networking, service registration, and workload. Simpler, but fewer features.

Multi-workload scheduling (Nomad advantage)

Nomad can schedule non-container workloads:

# Run a Java application
task "api" {
  driver = "java"
  config {
    jar_path = "local/app.jar"
    jvm_options = ["-Xmx512m"]
  }
}

# Run a raw binary
task "worker" {
  driver = "raw_exec"
  config {
    command = "/usr/local/bin/worker"
    args    = ["--config", "/etc/worker.toml"]
  }
}

# Run a QEMU virtual machine
task "legacy" {
  driver = "qemu"
  config {
    image_path = "local/legacy-app.qcow2"
    accelerator = "kvm"
  }
}

Kubernetes cannot do this without heavy lifting (KubeVirt for VMs, custom operators for bare processes).

Operational complexity

AspectKubernetesNomad
Installkubeadm (multi-step) or managedSingle binary, one config
UpgradeRolling control plane + nodesRolling binary replacement
Debuggingkubectl describe, logs, eventsnomad alloc status, logs
NetworkingCNI plugins (Cilium, Calico)Simple bridge or host networking
Certificate managementComplex (kubeadm certs, cert-manager)Built-in TLS
Learning curve6-12 months to proficiency1-3 months

Nomad is genuinely simpler to operate. A production Nomad cluster can be maintained by a small team that would struggle with Kubernetes.

Ecosystem

This is Kubernetes’ decisive advantage:

CategoryKubernetesNomad
Operators/CRDs1,000+None (no CRD concept)
MonitoringPrometheus, Datadog, GrafanaPrometheus, Datadog
GitOpsArgoCD, FluxLevant (limited)
Service meshIstio, Cilium, LinkerdConsul Connect
Managed offeringsEKS, GKE, AKS, DOKSHCP Nomad (limited)
Job marketMassive demandNiche
CommunityCNCF (vendor-neutral)HashiCorp (BSL license)

If you need an operator for PostgreSQL, Redis, Kafka, or any other stateful workload β€” Kubernetes has it. Nomad does not have an operator pattern.

Decision guide

Choose Kubernetes when:

  • You run containers in production at scale
  • You need the ecosystem β€” operators, CRDs, managed services
  • Your team has or is willing to invest in Kubernetes expertise
  • You need managed Kubernetes (EKS, GKE, AKS)
  • Industry standard matters for hiring and tooling
  • You need advanced networking (service mesh, network policies)

Choose Nomad when:

  • You orchestrate mixed workloads β€” containers + VMs + binaries
  • Simplicity is a priority and your team is small
  • You already use the HashiCorp stack (Consul, Vault, Terraform)
  • Multi-region scheduling is a core requirement
  • You have legacy applications that cannot be containerized
  • You want a working orchestrator in days, not months

Free 30-min AI & Cloud consultation

Book Now