almessadi.
Back to Index

When Kubernetes Is the Wrong Performance Trade_

Kubernetes is the right default for most systems, but extremely latency-sensitive workloads may need simpler networking, tighter CPU control, or bare metal.

PublishedMarch 29, 2024
Reading Time6 min read

Kubernetes is a good default for most web platforms.

It gives teams repeatable deployment, resource isolation, service discovery, and a mature operational model. For the typical API, worker fleet, or internal platform, those benefits outweigh the overhead.

The mistake is turning that into a universal rule.

There are workloads where orchestration overhead, virtualized networking, and noisy-neighbor behavior are not rounding errors. They are the workload.

What the Platform Adds

Kubernetes does not just run your process. It wraps it in a broader execution model:

  • container networking
  • service routing
  • kube-proxy or eBPF-based packet handling
  • cgroups and CPU scheduling
  • overlay networks in many environments

For most applications, this overhead is acceptable.

For systems that care about tight tail latency, packet pacing, or direct NIC interaction, it may not be.

The Real Decision Is About Determinism

The issue is usually not average latency. It is variance.

Some workloads care much more about jitter than about throughput:

  • packet processing
  • low-latency trading
  • specialized telemetry ingestion
  • user-space networking with DPDK or similar approaches

In those systems, the benefits of the Kubernetes control plane may be less important than:

  • fixed CPU placement
  • fewer network layers
  • less scheduler noise
  • more predictable hardware access

That is where simpler deployment models, dedicated hosts, or bare metal start to make sense.

Most Teams Should Not Read This as "Leave Kubernetes"

For normal SaaS systems, the opposite conclusion is usually correct.

If your product bottleneck is database latency, unbounded retries, slow object storage, or expensive application logic, moving off Kubernetes is probably not the fix.

The bar for leaving the platform should be high.

A Better Way to Evaluate It

Before you blame Kubernetes, check:

  • Are you measuring tail latency, not just averages?
  • Is the bottleneck network, CPU scheduling, or something else entirely?
  • Would node affinity, CPU pinning, or dedicated nodes solve enough of the issue?
  • Are you using a CNI and routing model that matches the workload?

Sometimes the right answer is not "bare metal instead of Kubernetes". It is "a smaller, more specialized cluster with stricter placement rules."

When Bare Metal Becomes Reasonable

Bare metal or dedicated hosts become more defensible when:

  • the workload is extremely latency-sensitive
  • the process needs direct hardware control
  • you can justify the operational cost
  • the team can support a more bespoke runtime model

That is a narrow slice of systems. It is real, but narrow.

Kubernetes is an orchestration system, not a promise of perfect hardware determinism. If the workload needs the latter, be willing to choose the simpler stack.

Further Reading