Skip to main content
  1. Blog/

What Enterprises Get Wrong About Kubernetes

I have been involved in enterprise Kubernetes adoptions for over seven years — first supporting customers at Docker, then designing platforms as a Solutions Architect at Mirantis. In that time, I have watched organizations succeed, fail, and mostly struggle somewhere in the middle.

The technology works. The problems are almost never about the technology.

Here are the patterns I see repeatedly.

Treating Kubernetes as a lift-and-shift tool

The most common mistake is treating Kubernetes like a virtualization platform. Teams take their existing monolithic applications, wrap them in containers, throw them into a cluster, and expect magic.

Kubernetes is not VMware. It does not make poorly architected applications resilient. It does not fix deployment processes that were broken before containers existed. What it does is expose the weaknesses in your application architecture, your operational practices, and your team structure — at scale.

I have seen teams spend six months building a cluster, only to discover that their stateful applications crash on pod restarts, their logging pipeline collapses under distributed load, and their network configuration cannot support Kubernetes networking models. The cluster was not the problem. The assumption that Kubernetes would absorb those problems was.

The solution is uncomfortable but honest: do not adopt Kubernetes until you understand what it demands. It demands applications that can handle ephemeral infrastructure. It demands teams that understand networking, storage, and observability at a deeper level. It demands operational maturity.

Underinvesting in the platform team

Every successful Kubernetes deployment I have seen has one thing in common: a dedicated platform team that owns the cluster, not the applications.

Enterprises that treat Kubernetes as “the DevOps team’s project” fail. The DevOps team (if it exists) is already overloaded. Kubernetes is not something you add to an existing workload. It is a new layer of infrastructure that requires dedicated ownership — someone who wakes up when the cluster is unhealthy, who understands etcd backup strategies, who knows when to upgrade and when to wait.

The organizations that do this well have a platform team of at least three to five people for a production deployment. They have clear boundaries: the platform team owns the cluster, the control plane, the ingress layer, the observability stack. Application teams own their containers, their deployments, their resource requests and limits.

This separation sounds simple. In practice, most organizations resist it. They want Kubernetes to be “self-service” without building the self-service layer. They want developers to “just use kubectl” without providing guardrails. They want agility without investment.

Ignoring day-2 operations

Kubernetes clusters do not deploy themselves, and they do not maintain themselves.

I have walked into engagements where the cluster was built beautifully — RBAC configured, network policies tight, monitoring dashboards polished — and the team had no idea how to upgrade it. The cluster was running a version that was two releases behind. The etcd database had never been backed up. Certificate rotation was a manual process documented in a wiki page that was last updated eighteen months ago.

Day-2 operations in Kubernetes are harder than day-1. Upgrading a cluster without disrupting running workloads requires planning. Certificates expire. etcd grows. Node failures happen. The difference between a well-run cluster and a neglected one is the discipline of ongoing maintenance.

This is not unique to Kubernetes. Every infrastructure platform requires maintenance. But Kubernetes has more moving parts than most, and the velocity of upstream changes is high. If you cannot commit to staying current, you should think carefully about whether Kubernetes is the right choice.

Not defining ownership

Who owns the namespace? Who decides resource limits? Who is responsible when a pod is evicted?

These questions sound administrative. They are actually architectural. Without clear ownership, Kubernetes clusters become chaotic. Namespaces proliferate. Resource quotas are never set. Everyone has cluster-admin because nobody wants to figure out RBAC.

The best-run clusters I have seen have a clear ownership model. Each namespace has an owner. Each owner understands their resource footprint. RBAC is restrictive by default. Changes go through a review process — not because the platform team wants to control everything, but because in a production environment, an unconstrained kubectl delete --all is a business continuity risk.

Practical advice

If you are starting an enterprise Kubernetes adoption, here is what I would tell you:

First, invest in the team before the cluster. Hire or train people who understand Linux, networking, and distributed systems — not just Kubernetes syntax. The certification is not the capability.

Second, start with a small, non-critical workload. Run it for three months. Learn what breaks. Then expand. The organizations that succeed are the ones that treat Kubernetes adoption as a gradual capability-building exercise, not a migration project.

Third, automate everything you can before you go production. Cluster provisioning, certificate renewal, backup verification, upgrade testing — if it is manual, it will fail at the worst possible moment.

Kubernetes is a powerful platform. But it is not a shortcut. It is an investment in operational discipline, team capability, and architectural thinking. Enterprises that understand this succeed. Enterprises that do not — well, they keep my calendar full.

Related