Why Are People Moving Away from Kubernetes? The Real Reasons Behind the Exodus
Kubernetes won the container war. That's settled. But winning doesn't mean everyone's happy about it.
I'm Nishaant Dixit, founder of SIVARO. We build data infrastructure and production AI systems. For the last six years, I've watched teams adopt Kubernetes, struggle with Kubernetes, and in some cases, abandon Kubernetes entirely. The pattern is so common now that "why are people moving away from kubernetes?" has become one of the most asked questions in our industry.
Here's the uncomfortable truth: Kubernetes is over-engineered for 80%% of the teams running it. And the remaining 20%%? They're starting to question whether the complexity tax is worth it.
Let me show you what I've seen on the ground.
The Complexity Tax Is Real
You know what happens when you give a startup Kubernetes on day one?
They spend two months setting it up. Then they hire someone to maintain it. Then they realize their three-microservice application could run fine on two VMs with Docker Compose.
One Reddit thread put it bluntly: "Kubernetes is great if you've outgrown simpler solutions. Most people haven't."
I've seen this play out at least five times. A team gets funded. They read about how Google runs everything on Borg (Kubernetes' predecessor). They think "if it's good enough for Google, it's good enough for us." They're wrong.
Kubernetes itself describes its architecture as "a portable, extensible, open source platform for managing containerized workloads and services." That's accurate. But "managing" here means you're now responsible for:
- Control plane availability
- etcd backups and performance
- Network policies and CNI plugins
- Ingress controllers and service meshes
- Storage classes and CSI drivers
- RBAC and security policies
- Autoscaling configurations
- Monitoring and alerting for all of the above
Each of these is a reasonable concern at scale. Each of them is a distraction when you're trying to ship product.
The "But We Need Portability" Lie
The most common justification I hear: "Kubernetes lets us move between clouds."
In practice? I've seen exactly one team actually migrate between clouds. It took them four months, and they ended up rewriting half their manifests anyway because cloud-specific load balancers and storage classes don't abstract cleanly.
Red Hat's definition emphasizes Kubernetes as "an open source platform that helps manage containerized applications." The key word is "manage." Not "simplify."
The Specific Problems That Drive Teams Away
Let me get specific about what breaks.
1. Operational Overhead That Compounds
Running a production Kubernetes cluster isn't a set-it-and-forget-it operation. It's a second full-time job.
Consider what a 10-node cluster requires:
Day 1:
- Node upgrades (every 3 months)
- etcd maintenance
- Certificate rotation
- DNS troubleshooting
- Storage debugging
Week 1:
- Pods stuck in CrashLoopBackOff
- Node pressure due to disk space
- Network policy conflicts
- RBAC permissions broken again
Month 1:
- Version upgrades required
- API deprecations breaking manifests
- CNI plugin issues after upgrade
- Metrics server stopped reporting
I'm not exaggerating. One HN discussion had a comment that stuck with me: "I didn't need Kubernetes, and you probably don't either." The thread is full of stories exactly like this.
2. Cost Runs Away From You
Kubernetes doesn't just cost in engineering time. It costs in actual dollars.
The control plane for a small cluster on GKE: ~$75/month. On EKS: ~$73/month. On AKS: free (but you pay for the VMs).
Then you need etcd volumes, load balancers for the API server, extra nodes for system workloads, monitoring infrastructure, logging pipelines... A simple three-node cluster can easily run $500-800/month before you deploy a single application workload.
Ona, a company that left Kubernetes entirely, documented their reasoning. They found that for their team of 20 engineers, the cognitive overhead and operational cost of maintaining K8s wasn't justified by the benefits. They moved to a simpler container orchestration approach and cut their infrastructure costs by 40%%.
3. The Developer Experience Gap
Here's what developers actually want:
- Deploy code
- See it running
- Debug when it breaks
- Move on
Here's what Kubernetes gives them:
- Write a Deployment, Service, ConfigMap, Secret, Ingress, HPA, PDB, NetworkPolicy, and ServiceAccount
- Debug why the pod is in CrashLoopBackOff (hint: it's always a config typo)
- Learn kubectl commands
- Install Helm, then learn Helm templating
- Deal with RBAC errors
- Wait for image pulls
Cloud Native Computing Foundation data shows that while Kubernetes adoption continues growing, so does the complexity of managing it. The average organization running Kubernetes uses 7+ tools alongside it.
When Does Kubernetes Actually Make Sense?
I'm not anti-Kubernetes. I run it in production at SIVARO for specific workloads. But I'm honest about where it belongs.
You should consider Kubernetes when:
- You have 50+ microservices
- Your team has dedicated platform/infra engineers
- You need horizontal autoscaling across multiple availability zones
- You're running stateful workloads that need complex orchestration
- You have multiple teams deploying independently
If that sounds like your situation, great. Kubernetes was designed for you.
But if you're a team of 5-15 engineers running 3-10 services? This talk makes the case clearly: Kubernetes is probably overkill.
The Alternatives People Are Moving To
So where are teams going when they leave Kubernetes?
Option 1: Managed Container Services
AWS ECS, Google Cloud Run, Azure Container Apps. These give you container orchestration without managing control planes.
I've moved two clients from self-managed K8s to Cloud Run. Both saw:
- 60%% reduction in infrastructure costs
- 80%% reduction in ops time
- Happier developers who could ship faster
The tradeoff? You're locked into a cloud provider. But most teams were already locked in. And vendor lock-in with a working product beats "portable" but broken.
Option 2: Nomad
Hashicorp's Nomad is simpler. Significantly simpler. One binary, no control plane to manage, no etcd, no complex networking.
A team I advised migrated from K8s to Nomad + Consul + Vault. Their words: "It feels like cheating. We just write jobs and they run."
Nomad handles:
- Batch jobs
- Long-running services
- GPU workloads (for ML)
It doesn't handle:
- Automatic pod rescheduling (you manage this)
- Built-in service mesh (use Consul)
- Complex autoscaling (you configure it)
For teams that don't need Kubernetes' full feature set, Nomad is a breath of fresh air.
Option 3: Raw VMs + Docker + Systemd
This sounds primitive. It's not.
I've seen teams deploy to 10 VMs with Docker Compose and systemd units. They use Ansible or Terraform for provisioning. They have CI/CD that SSHes in and deploys new containers.
This setup:
- Costs less
- Is simpler to debug (ssh + docker logs)
- Requires less specialized knowledge
- Can handle surprising amounts of traffic
One fintech startup I know runs 200K requests/second on 12 VMs with this setup. No Kubernetes. No orchestration layer. Just nginx, docker, and careful capacity planning.
The Kubernetes Haters Guide makes a similar point: "Kubernetes solves a specific set of problems at a specific scale. Most people don't have those problems."
Option 4: Serverless
Why orchestrate containers at all? Serverless platforms like AWS Lambda handle scaling, availability, and deployment for you.
The catch: cold starts, execution time limits, state management. But for event-driven workloads, API backends, and data processing, serverless is often cheaper and simpler.
How We Run Things at SIVARO
Let me show you what actually works for us.
We run a hybrid approach:
For batch data processing (200K events/sec):
- Kubernetes on spot instances
- Custom autoscaler that watches Kafka consumer lag
- StatefulSets with local SSDs for performance
For customer-facing APIs:
- Cloud Run
- Auto-scaled to zero at night
- Costs us $200/month
For internal tools and experiments:
- Docker Compose on a single VM
- SSH + screen sessions for debugging
- Literally zero infrastructure cost
Here's a deployment pattern we use for the batch processing system:
yaml
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: event-processor
spec:
replicas: 3
selector:
matchLabels:
app: event-processor
template:
spec:
containers:
- name: processor
image: sivaro/event-processor:latest
resources:
requests:
memory: "8Gi"
cpu: "4"
limits:
memory: "16Gi"
cpu: "8"
volumeMounts:
- name: local-ssd
mountPath: /data
volumeClaimTemplates:
- metadata:
name: local-ssd
spec:
accessModes: ["ReadWriteOnce"]
storageClassName: ssd-storage
resources:
requests:
storage: 500Gi
Notice what's missing: no HPA, no Service Mesh, no complex networking. We keep it minimal because we need to understand exactly what each pod does.
For the Cloud Run API, it's even simpler:
yaml
# cloudbuild.yaml
steps:
- name: 'gcr.io/cloud-builders/docker'
args: ['build', '-t', 'gcr.io/$PROJECT_ID/api:latest', '.']
- name: 'gcr.io/cloud-builders/gcloud'
args: ['run', 'deploy', 'api',
'--image', 'gcr.io/$PROJECT_ID/api:latest',
'--region', 'us-central1',
'--platform', 'managed',
'--min-instances', '0',
'--max-instances', '10']
That's it. Push code, get deployed, pay per request.
The Real Reason People Are Moving Away
I've been talking about complexity, cost, and developer experience. But those are symptoms. The root cause is something deeper.
Kubernetes made a promise: "Abstract away infrastructure complexity."
The reality: It replaced infrastructure complexity with Kubernetes complexity.
When you run on raw VMs, you deal with:
- OS updates
- Disk space
- Network config
- Process management
When you run on Kubernetes, you deal with:
- etcd cluster health
- API server availability
- CNI plugin compatibility
- RBAC permissions
- Ingress controller conflicts
- Service mesh overhead
- Version upgrade cascading failures
- Helm chart template errors
- Custom resource definition breakage
- Admission webhook issues
You haven't eliminated complexity. You've shifted it to a different layer, one that requires more specialized knowledge to debug.
Google's own documentation acknowledges this: "Kubernetes abstracts away the underlying infrastructure, but it introduces its own set of concepts and complexities."
When Leaving Is the Right Call
Here's my framework for deciding:
Leave Kubernetes if:
- Your team is < 20 engineers
- You run < 10 services
- You don't have dedicated platform engineers
- Your uptime requirements are 99.9%% (not 99.99%%)
- You're spending more time on K8s issues than product features
Stay on Kubernetes if:
- You have multiple teams deploying independently
- You need complex autoscaling across regions
- You're running stateful distributed systems
- Your team has Kubernetes expertise on staff
- You've already absorbed the complexity tax
FAQ
Q: Is Kubernetes dying?
No. Kubernetes is growing. But the growth is concentrated in enterprises that need its features. Small and mid-size teams are the ones moving away.
Q: What's the single biggest reason people leave Kubernetes?
Operational overhead. Maintaining a production K8s cluster requires constant attention. Most teams don't have the bandwidth.
Q: Is it possible to run Kubernetes cost-effectively for small teams?
Yes, with managed services like K3s or MicroK8s on cheap VMs. But you'll still pay the cognitive overhead.
Q: What's the simplest alternative to Kubernetes?
Depends on your needs. For APIs: Cloud Run or Lambda. For batch jobs: Nomad. For simple deployments: Docker Compose + VMs.
Q: Should I learn Kubernetes if I'm a junior engineer?
Yes. But learn it to understand distributed systems concepts, not because you'll use it everywhere.
Q: Can you run Kubernetes on a single node?
Yes. Minikube, K3s, and MicroK8s all support single-node setups. But why would you? Docker Compose is simpler for local development.
Q: What about Kubernetes for machine learning workloads?
This is one area where Kubernetes genuinely shines. GPU scheduling, job queuing, and distributed training benefit from K8s' abstraction layer.
Q: Is serverless a replacement for Kubernetes?
For some workloads. Cold starts and execution limits make it unsuitable for latency-sensitive or long-running tasks.
Q: How do you decide between Kubernetes and alternatives?
Map your requirements. If you need 99.99%% uptime, multiple regions, and 50+ services, Kubernetes makes sense. If not, don't.
Q: What's the future of container orchestration?
I think we'll see more specialized tools. Less "one platform to rule them all," more "here's a simple tool for your specific use case."
The Bottom Line
Why are people moving away from kubernetes? Because they adopted it for the wrong reasons.
Kubernetes is a powerful tool for a specific job. It's not the default infrastructure for every team and every workload. The industry is finally realizing that, and the pendulum is swinging back toward simpler solutions.
At SIVARO, we use Kubernetes where it makes sense and avoid it everywhere else. That pragmatic approach saves us money, time, and sanity.
The best tool is the one that solves your problem without creating new ones. For most teams, that's not Kubernetes.
Nishaant Dixit — Founder of SIVARO. Building data infrastructure and production AI systems since 2018. Built systems processing 200K events/sec.