Why is Kubernetes So Damn Complicated? (2024)

Kubernetes is the de-facto standard for container orchestration. It has been since its introduction some six years ago.

But the one thing that is inescapable is Kubernetes complexity. It’s a difficult environment requiring asteeplearning curve to seize its real potential.

But why does it have to be so dang complicated?

The reason is simple. Kubernetes defines a complex infrastructure so that applications can be simple. All of those things that an application typically has to take into consideration, like security, logging, redundancy and scaling, are all built into the Kubernetes fabric.

Kubernetes is complex so the applications don't have to be

Put another way, the concept of infrastructure is divorced as much as possible from the applications and how they are constructed. Previously, a new application was essentially a custom solution. But an application in Kubernetes has no idea where it is running or how many copies are active. All of that is taken care of by configuration in Kubernetes itself. The application simply talks to well-defined APIs for the services needed.

So, once the Kubernetes infrastructure has been configured, the process of writing applications for it is relatively straightforward. All the application has to do is establish communications with other containers and process payload information. Gone are the days when you had to build new APIs for logging (for example) every time you built an application. In Kubernetes, you simply write to standard out and the data is added to the log.

To illustrate this point, here is anabstracteddepiction of an old monolithic application (below). Notice that things like logging and error handling are embedded in the application. The developer took all the responsibility for creating applications that were robust, scalable and observable. Long, tedious discussions would be held to design new APIs for things like logging and scalability, which had to be done because each application was a stand-alone entity requiring custom code.

Certainly, there was some opportunity to share libraries, but even then those libraries were custom creations requiring their own maintenance and support.

Why is Kubernetes So Damn Complicated? (1)

In contrast, here is an abstracted diagram (below) of the Kubernetes approach. Kubernetes creates a generalised environment in which there is automation available to handle things like deployment, scaling and management of applications.

Why is Kubernetes So Damn Complicated? (2)

All common facilities needed by any application - like error handling, scalability and redundancy - are now located inside the Kubernetes ecosystem. Capabilities that were once part of the application code are now external,so the application code can be much smaller and simpler than before. The application can concentrate on processing payload data and doesn’t have to concern itself with ancillary things like scaling and redundancy.

How is this possible? It relies on a technology called containerization. It's a large subject and I won't go into it in any detail here but, in essence, it is a way to configure small pieces of code in discrete chunks that can be independently executed. Using containerization, a large monolithic application can be broken into much smaller independent pieces.

By coordinating the chunks together they create the equivalent functionality of the monolithic application we talked about before. This is tremendously beneficial because the components that make up the overall application can be separated into discrete pieces which are independently maintained and deployed. By doing this, you can iterate on releases much faster and with greater efficiency.

Kubernetes’ role in all this is to be the master choreographer to coordinate how all of these separate components interact.

Kubernetes requires a lot of configuration

In order to do all this coordination among components, Kubernetes requires ahugeamountof configuration. There are many many different parameters and settings to manage in order to make the environment suitable. Again, the environment is now where the complexity lives and not so much in the applications. In this new paradigm the burden has shifted from managing complexity inside the application to managing complexity in the supporting ecosystem.

For example, historically an application developer would have to concern themselves with how to scale their application - the system administrator would be only loosely involved in such a question. With containerization and kubernetes this predicament is reversed (see below). The application developer certainly needs to design the application to accommodate scalability, but the actual process of scalability has to be externally configured. The emphasis shifted from an application development challenge to an environment administration challenge.

Why is Kubernetes So Damn Complicated? (3)

This highly configurable infrastructure approach has caused a lot of fallout. Ironically, this pursuit of a simplified application environment has led to an explosion of configurable items in the Kubernetes ecosystem. In fact, it has become so excessively complex that it threatens to overshadow the whole effort of application deployment. Ina recent survey, complexity was identified as the most challenging aspect of using containers in the Kubernetes environment.

Why is Kubernetes So Damn Complicated? (4)

To help illustrate what is meant by ‘complex’, here is a random excerpt from theKubernetesdocumentationconcerning a key/value storage object called aConfigMap:

"When a ConfigMap currently consumed in a volume is updated, projected keys are eventually updated as well. The kubelet checks whether the mounted ConfigMap is fresh on every periodic sync. However, the kubelet uses its local cache for getting the current value of the ConfigMap. The type of the cache is configurable using the ConfigMapAndSecretChangeDetectionStrategy field in theKubeletConfiguration struct.

A ConfigMap can be either propagated by watch (default), ttl-based, or by redirecting all requests directly to the API server. As a result, the total delay from the moment when the ConfigMap is updated to the moment when new keys are projected to the Pod can be as long as the kubelet sync period + cache propagation delay, where the cache propagation delay depends on the chosen cache type (it equals to watch propagation delay, ttl of cache, or zero correspondingly)."

Got that? This isn’t to condemn, but rather to illustrate the dense logic that goes into the cluster setup process. In the pursuit of flexibility, the Kubernetes environment has become almost infinitely configurable. While this flexibility is praiseworthy, the confusing permutations and combinations have become unwieldy. It requires an encyclopedic knowledge to take advantage of the most basic capabilities.

Harnessing Kubernetes’ complexity

If this is beginning to sound like an article to dissuade you from adopting Kubernetes, think again. In thesame surveyreferenced above, one of their key findings was that:

Kubernetes use in production has increased to 83%, up from 78% last year.

Clearly, in spite of its complexity Kubernetes has much to offer and continues to dominate container orchestration.

But how can you manage that complexity? What do you do? What if your needs are modest and you just want to get your web applications running in a highly resilient environment?

When it comes to installing Kubernetes, we “get it”. We understand the pain of trying to simply stand up a working cluster. Our engineers have a long history of working with and maintaining enabling tools (like KOps) to mitigate complexity as much as possible.

We’ve taken that experience and created a product calledWayfinder,which takes the complexity out of creating and maintaining Kubernetes clusters.

Why is Kubernetes So Damn Complicated? (2024)

FAQs

Why is Kubernetes So Damn Complicated? ›

Kubernetes requires a lot of configuration

Why is Kubernetes so confusing? ›

The major problem with Kubernetes is that it's architecture is designed for scale, it was originally built by Google to manage large clusters at scale. It is highly distributed by design, with microservices at its core.

What is the biggest problem with Kubernetes? ›

Security

Security is one of Kubernetes' greatest challenges because of its complexity and vulnerability. If not properly monitored, it can obstruct identifying vulnerabilities. When you deploy multiple containers, it's difficult to detect vulnerabilities. This provides an easy way for hackers to break into your system.

What is bad about Kubernetes? ›

If your app is monolithic

It's a single executable unit that is indivisible. Code changes for one component mean the entire application is rebuilt and redeployed. It's simple to build and debug but doesn't scale well, and it's also tough to make changes as the application gets more complex.

Is Kubernetes losing popularity? ›

As we mentioned in Part I of this series, Kubernetes is undoubtedly very popular and has become the de facto standard for container orchestration. Over the years, we've seen other competing products like Docker Swarm lose traction and eventually converge into supporting Kubernetes and its growing ecosystem.

What is Kubernetes for idiots? ›

It was originally developed by Google and is now maintained by the Cloud Native Computing Foundation (CNCF). Kubernetes provides a container-centric infrastructure, allowing users to organize and manage their applications using containers rather than directly deploying them on virtual machines or physical servers.

Why is Kubernetes so hard? ›

Kubernetes requires a lot of configuration

In order to do all this coordination among components, Kubernetes requires a huge amount of configuration. There are many many different parameters and settings to manage in order to make the environment suitable.

Why avoid Kubernetes? ›

Moreover, if your application stack is simple, not distributed, or doesn't require advanced features like auto-scaling, self-healing, and service discovery, Kubernetes might be an overkill. Its complexity and overhead may lead to more problems than solutions.

What could go wrong with Kubernetes for beginners? ›

  • The Basics of Kubernetes. ...
  • Ignoring Health Checks. ...
  • Mounting Host File Systems in Containers. ...
  • Using the 'Latest' Tag. ...
  • Deploying a Service to the Wrong Kubernetes Node. ...
  • Not Employing Deployment Models. ...
  • Duplicated Deployments. ...
  • Using Only One Kind of Container (i.e., Stateless) in Production Environments.
Feb 14, 2022

Will Kubernetes be replaced? ›

At the end, Kubernetes won't be the end of orchestration. It'll just be another platform that was replaced by something else. Think about it like this - Managed Kubernetes Services like Azure Kubernetes Service and AWS EKS already have the tools to put any label on Kubernetes that they want.

Does NASA use Kubernetes? ›

To overcome these challenges, NASA has deployed LIS using Docker containers, which allows installing an entire software package, along with all dependencies, within a working runtime environment, as well as Kubernetes, which orchestrates the deployment of a cluster of containers.

Is Kubernetes still relevant in 2024? ›

In the world of Kubernetes, security is still of utmost importance, and in 2024, significant steps will be taken to strengthen the platform. Improved encryption techniques, enhanced access controls, and runtime security are to be expected.

Does Kubernetes have a future? ›

In the not too distant future, I see Kubernetes offering multiple runtime environments, just as it offers multiple storage solutions today. Enabling running simple services in normal containers, but moving services with higher isolation needs to micro VMs.

How long does it take to understand Kubernetes? ›

If you add in lab time, reading, and exploring different ways to utilize Kubernetes, around 20 hours is a good enough timeframe to expect you'll be able to start working with Kubernetes in a work environment.

Is Kubernetes harder than Docker? ›

Installation, configuration, and learning curve

Compared to Docker Swarm, Kubernetes has a more complex installation and requires more manual effort.

Why would you not use Kubernetes? ›

Moreover, if your application stack is simple, not distributed, or doesn't require advanced features like auto-scaling, self-healing, and service discovery, Kubernetes might be an overkill. Its complexity and overhead may lead to more problems than solutions.

Top Articles
Latest Posts
Recommended Articles
Article information

Author: Pres. Carey Rath

Last Updated:

Views: 6270

Rating: 4 / 5 (41 voted)

Reviews: 80% of readers found this page helpful

Author information

Name: Pres. Carey Rath

Birthday: 1997-03-06

Address: 14955 Ledner Trail, East Rodrickfort, NE 85127-8369

Phone: +18682428114917

Job: National Technology Representative

Hobby: Sand art, Drama, Web surfing, Cycling, Brazilian jiu-jitsu, Leather crafting, Creative writing

Introduction: My name is Pres. Carey Rath, I am a faithful, funny, vast, joyous, lively, brave, glamorous person who loves writing and wants to share my knowledge and understanding with you.