Explaining abstract concepts as we all know, is complicated. How do you wrap your head around a concept such as a cluster?
Cluster is the core concept of Borg and later on Kubernetes. But what is it and why is it important?
Kelsey Hightower made his name describing concepts such as this into understandable metaphors.
In the same year, 2017, at the O’Reilly Software conference, he explained the reason why you would use something like Kubernetes. He used the game “Tetris”. Imagine your machine is a Tetris. Everything is automated but without awareness of CPU and memory. Now imagine the blocks all falling vertically without any changes. Very soon the game will be over and your machines will run over.
However, imagine you use kubernetes to schedule these “blocks“ of workloads, fitting them into the machine’s spare resources.
When blocks are moved to the best possible places, Tetris may be a never-ending game and so is your cluster capacity. The cluster mentality of knowing where to put a workload best is one of the greatest advantages when it comes to using Kubernetes. Kubernetes actually knows where to schedule the workload based on CPU and memory.
Kubernetes solved a lot of problems. It created a whole ecosystem and community around it. The rate of adoption and its ubiquity became a rallying point to many software engineers.
Docker helped make the containers mainstream however it introduced a problem. How do you use containers in production? Kubernetes solved that problem.
I'm your host Kassandra Russel and today, we will walk you through the adoption that Kubernetes went through. How it differentiated itself from other container orchestration systems.
We’re going to discuss the early growing pains Kubernetes have. Finally, we’ll talk about how kubernetes adoption best practices. Should you self host your own clusters or use a fully managed service? What is a good setup for a single cluster or multiple clusters?
Kubernetes gathers the best and brightest in the industry twice or thrice every year into a conference called KubeCon. Here is where we can measure the amount adoption Kubernetes had within the industry.
In 2016, the attendance of Kubecon was 1136 people, it quadrupled next year with 4000 people and doubled in 2018 with 8000 people. In 2019 it was at 10000 people.
According to CNCF or the cloud-native computing foundation. Kubernetes is the second biggest open-source project behind Linux.
The Cloud Native Computing Foundation is a Linux Foundation project that was founded in 2015. It gathers a group of companies and organizations sharing aspirations to build things upon Kubernetes and around its ecosystem. The founding members include Google, CoreOS, Mesosphere, Red Hat, Huawei, Intel, Cisco, IBM, Docker, Univa, VMware, and even the blue bird's social network, Twitter.
Usually, containers, kubernetes, and microservices are correlated with the Cloud Native way of building software.
The CNCF provides an official definition: Cloud-native technologies empower organizations to build and run scalable applications in modern, dynamic environments such as public, private, and hybrid clouds. Containers, service meshes, microservices, immutable infrastructure, and declarative APIs exemplify this approach.
If you build a cloud-native application, each part of your app should be packaged in its own container, dynamically orchestrated so each part is actively scheduled and managed to optimize resource utilization.
These techniques enable resilience, manageability, and observability. Combined with robust automation, they allow engineers to make high-impact changes frequently and predictably with minimal toil.
In order words, Cloud-Native implies you use containers, container orchestration, and microservices. Not only do you adopt Kubernetes but also you adopt the Cloud Native mindset which comes with Kubernetes.
Some companies implemented similar approaches and showed that the cloud-native way of building applications was helpful on a large scale.
The popular movie-streaming service Netflix, for instance, runs more than 600 services in production and deploys hundreds of times per day.
The ride-hailing company is another example, Uber runs actually, more than 1,000 services in production, and deploys several thousand times each week.
These companies, along with using open source tools like Kubernetes and Docker, built their own tools. As a matter of fact, Netflix built open-source tools, runtimes, and libraries like Hystrix, Chaos Monkey, Governator, Prana, Eureka, and Zuul. But it seems that not only Netflix is building similar technologies; if you take a look at the open-source projects on Github, you’ll notice the unceasingly increasing and big number of tools built around the containerization and orchestration. The dizzying array of technologies and applications causes issues with adopting this new mindset.
CNCF indexed a portion of these technologies. 1,390 tools with more than 2,000,000 Github stars, a market cap of $17.2T, and funding of $65.84B.