Is Kubernetes- Boring or Boon?
Tags: aws, kubernetes, eks, thoughtleadership
Published: 2021-12-06 10:08:42

Is Kubernetes boring, tedious or boon? I have heard both sides of arguments in favour and many a times not so much in favour of K8S. Kubernetes is a popular technology these days. Every IT company is promoting it, end users/customers either using it or talking about it or evolving with it, Open-source users and contributors love it and there are so many jobs in market that require this skill set (both JD and package wise 😉). Certainly, there is time to check what is clicking and what is not?
This article presents an independent view and reality check on what makes Kubernetes tick and what it is failing to give? 
**Read on and please do share your constructive views/likes/comments.**

Let's first understand few basics and background to set the context right:

## What is Kubernetes? 
In simplest words it is Container Orchestration Platform. This technology is created to take care of containers lifecycle management with ease and for maximum containerization benefits. 
It was an internal project developed and used by Google initially and then donated the project to The Cloud Native Computing Foundation (CNCF) at the time of CNCF inception. Since Kubernetes adopted by CNCF this has grown in leaps and bounds and still growing with loads of contributions from open-source community. There are many managed Kubernetes services/ platform flavours that have been laid out on top of native Kubernetes by companies like Red Hat, IBM, Google, AWS, Azure, VMWare and many more.

## CNCF Philosophy - Maintainer of Kubernetes
CNCF is always working on adoption of various cloud native technology paradigm by fostering and sustaining an ecosystem of open-source in most vendor-neutral way. Their philosophy is to democratize the technology patterns to make those innovations accessible for everyone. This also includes Kubernetes which is one of the most popular and already graduated projects of CNCF. We also need to note, as per CNCF charter, they value fast is better than slow, open code, conduct and technology, fair, strong technical identity, clear boundaries, scalable, platform agnostic.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/juoo7vcioqr7ddftqh26.png)
> Picture source: Released by CNCF in 2020

Now given this background let's evaluate this technology based on two major criterias:
## Adoption vs. Ease of Adoption
How far this technology actually adopted by organizations, techies and how easy it is to use and adopt by business. Both these parameters are important to understand for successful adoption of any technology and so is true for Kubernetes.

## What makes it Popular?
1. **Open-Source Superpower** - Kubernetes being CNCF maintained project it has got super power of development and nurturing by open-source community which means best of all open minds shaping the future in very systematic way.
2. **Most Vendor Neutral Technology**- Due to Open-source power this technology is not locked and blocked by any vendor or cloud provider. There is no dependencies on any specific people or organizations. All can use it and shape it up further. In fact features like operator framework makes it possible to add customized functionalities to the Kubernetes and help extend it faster.
3. **Pace of Innovation** - Kubernetes and relative set of technologies are keeping everyone on their toes be it individuals, organizations, and end users by the way of number of super charged advancements and releases that CNCF gives.
4. **End User Beneficial** - Important aspect of Kubernetes is that it weaves many things together that promote cloud adoption and cloud native applications and therefore helping end user to innovate for new challenging situations and provide more and more tools to use by developers and Operations as well as exceptional benefits to their customers.

## What makes it difficult and tedious?

1. **Designing and implementing a production grade application **- To reap benefits of K8S one needs to put lot of efforts in collating all required application life cycle elements such as application sizing, converting them to containers, storing them to registry, using proper services communication or mesh, observability, version management, deploying security solutions, setting up access, continuous integration, performance etc. All this and much more needs to be taken care before application starts reaping benefits of Kubernetes features and be production ready.
2. **Architectural complexity** -Kubernetes architecture comes with few mandatory components that are provided for working of Kubernetes cluster and container orchestration features. Rest all features gets bundled either through other CNCF projects or Vendor services. There are also standards and interfaces that kubernetes provides such container runtime interface (CRI), container networking interface (CNI), container storage interface (CSI), Infrastructure options, container engines options (docker, CRI-O, RKT etc.), service mesh options (Istio, Linkerd, AWS AppMesh etc.) and many more. These choices come with burden of selection, installation and maintaining such custom cluster configuration. This all makes bringing up and maintaining a "Well Architected Kubernetes Ready Platform" complex.
3. **Hard for Developers and SysOps** -Due to all above reasons it's hard for developers, it lacks the development agility and takes long ramp-up curve to understand and utilize it in entirety. Not just for developers even administrators or Ops need to know lot of things to maintain such a cluster and its run time issues with  CLI tools such as kubectl, etcdctl, systemctl, YAML/JSON, helm charts and what not? 

Based on above _**let's summarise for Adoption vs. Ease of Adoption**_. Its clear that adoption is tough due to continuous evolution and variety of options to choose from that comes with Kubernetes. Even though there are products like RedHat OpenShift in market that have overcome many shortcomings by bundling developer centric platforms with packaging of services that makes it complete. However, such options do come with cost involved and licensing etc. So, the big question is Simplification of Native Kubernetes: Shall we attempt or not? - When I asked this question about simplification during a panel discussion to CNCF stalwarts during one of the KubeCon. The answer I got, "Its left to managed service providers to address the gaps (as areas mentioned above in pros and cons)". 

In my view (independent view) we need to balance between Adoption and Ease of Adoption 

**<u>Adoption:</u>** 
a) Organizations need to catch up fast on adopting the new and creating their eco-system that is agile and learning/ improving continuously. There is no two ways about the same. b) There was a time when similar kind of critiquing and confusion was around Linux (Linux vs. Windows days). Linux was not easy. It had multiple flavours, CLI, open-source contributions, less of developer centricity and mostly similar questions and doubts as we have today with Kubernetes. However, we all know what is Linux today and still advancing in technology and strengthening year on year. While both popular OS exists today that is linux as well as windows. We are widely using Linux everywhere and windows has learnt to be compatible with Linux in so many ways c) Hence instead of missing the wave of Kubernetes, its favourable learning/leveraging it in whatever capacity individuals or organizations can do that.

**<u>Ease of Adoption:</u>** 
While we understand companies/individuals need to learn and constantly adapt. But.. a) There are many business problems that take priority rather than every company turns into an IT company (in a way it's happening already 😉). b) On other hand as there is great emphasis on reducing carbon footprint by CNCF and many open-source contributors. Imagine how much efforts and resources would be saved across platforms, cloud providers, customers, developers, administrators -  if Kubernetes bundling and maintenance is simplified. c) This is an area that should be relooked into by CNCF to make the native kubernetes releases to be adopted faster, updated with ease and for faster application setup/development management. Focus should be there to simplifying Kubernetes packaging and architecture. There can be complete bundling for all required application lifecycle features (minimal bundle/s) to choose from while taking care of container lifecycle features. Therefore, even if Kubernetes is mature or maturing further, it would be great to see CNCF addressing these aspect for everyone.