Thanks to the advent of container technology, developers can easily package up an application and ship it all out as one package, without the overhead of a traditional virtual machine. But to build complex applications, chances are you’ll need tools to manage and orchestrate your containers. That’s where Kubernetes comes in. Often described as the “Linux of the cloud,” Kubernetes grew to become the most widely used container orchestration platform. Beyond providing basic mechanisms for deployment, maintenance and scaling of applications, Kubernetes established itself as a prime example of the growth and success that collaborative open source communities can achieve.
The origins of Kubernetes
Kubernetes originated back in the fall of 2013 as founders Craig McLuckie, Joe Beda and Brendan Burns worked on public cloud infrastructure at Google. At this time, the notion of container orchestration did not exist in the cloud and the enterprise. Enter Docker, the tool that enables developers to run, create and manage containers on a single operating system. The Docker tooling and experience popularized a new “cloud native” approach to application packaging and maintenance, laying the groundwork for bringing a cloud native application experience to a broader audience.
Craig, Joe and Brendan recognized Docker as a critical component in the development of cloud native infrastructure, but they also identified the clear need for an orchestrator that could deploy and manage large numbers of containers across a fleet of machines, as opposed to just one. They also recognized that this orchestrator would inevitably be open source. At this point, the team began to develop a prototype — the project that would eventually become known as Kubernetes. In 2014, Kubernetes was open sourced and the rest is history.
Kubernetes as a container orchestration tool
Containers are a packaging format in which applications are abstracted from the environment in which they actually run. Known as containerization, this process represents the packaging of an entire runtime environment—the application plus its dependencies (libraries and binaries, other configuration files)—into one package, or container, that is decoupled from the infrastructure platform on which it’s built. This creates a predictable environment isolated from other environments and their effects.
As an open source project, Kubernetes is now the de facto method for container orchestration, referring to the automated arrangement, coordination and management of software containers. But just how powerful is Kubernetes as a container orchestration tool?
Imagine that your current software infrastructure is just running on the content located in a few containers. Odds are that you can manage everything on your own. But what if your application continues to grow? As you continue to add more functionality, your software environment will become more complicated to maintain, eating up too much CPU and RAM. So, you decide to split your application into smaller chunks, each responsible for a specific microservice. You then decide to add a caching layer to increase performance, process tasks asynchronously and quickly share data between services. Then, you might want to run multiple instances of each microservice spanning multiple servers to make it highly available in a production environment. You then find yourself facing the following challenges:
- Service discovery
- Load balancing
- Secrets/configuration/storage management
- Health checks
- Auto-scaling/restart/healing of containers and nodes
- Zero downtime deploys
This is where container orchestration tools like Kubernetes come into play. While other main container orchestration players like AWS ECS and Docker Swarm exist, Kubernetes comes out on top with regards to boasting the largest community and most popularity. The open source platform enables the automation of deployments, scaling and operations of application containers across clusters of hosts, providing container-centric infrastructure. In addition to addressing the challenges listed above, Kubernetes is also portable, configurable and modular while enabling features like auto-placement, auto-restart, auto-replication and auto-healing of containers.
But perhaps the most profound aspect of Kubernetes? Its community! Let’s take a look at how it’s grown over the last six years.
The growth of the Kubernetes community
When Kubernetes made its debut in June of 2014, it contained the basic features necessary for a container orchestration tool (replication to deploy multiple instances of an application, load balancing and service discovery to route traffic to these replicated containers, etc.). Its founders spent the first year building, expanding, polishing and fixing Kubernetes into the project released as a 1.0 at OSCON in 2015. From there, the OpenShift team joined Craig, Joe and Brendan, lending significant engineering and real-world expertise to the project.
In its infancy, Kubernetes had roughly 20 actively contributing developers. But when the Cloud Native Computing Foundation (CNCF) accepted Kubernetes as its first project, that number shot to roughly 400. Kubernetes now has over 3,000 active contributors, representing a contributor increase of over 14,000% since inception and one 7x higher since acceptance. In a little over four years since joining CNCF, Kubernetes boasts 35,000 contributors, 148,000 code commits, 83,000 pull requests, 1.1 million contributions and over 2,000 contributing companies. Let’s observe how, with the aid of CNCF, Kubernetes enjoys such profound growth and brings together an inspired community of contributors.
Manifesting growth through a collaborative open source community
It’s no easy feat to manifest the type of growth that Kubernetes continues to experience over the years. As cloud native adoption becomes mainstream, it’s important to understand where and how these cloud native technologies are being embraced. That’s why CNCF conducts its annual survey aimed at discerning the patterns and highlighting the changes taking place among users of open source technologies. This year’s survey found that the number of actively contributing companies (including the likes of Google, IBM, VMware, Microsoft and more) increased by over 2,000% since the project’s inception.
Beyond this exponential growth, the community built around Kubernetes works successfully across geographic, linguistic and corporate boundaries, signifying a collaborative achievement in-and-of-itself. The community of engineers, designers, product managers, documentation writers and others who work together do so without traditional first-line managers to organize people and processes. In turn, this makes reinforcing positive and professional behavior all the more important.
“One of the things that the containerization model does on top of an orchestrator like Kubernetes is democratizes an aspect of development and engineering at a code level… But that same democratization started happening within the project by having some active discussion about what it takes to take all these functions that historically would have been done by Googlers and democratize those out into the community.”
Tim Pepper, Sr. Staff Engineer, VMware Open Source
“There are many people working behind the scenes to make sure that the Kubernetes community remains safe through proactive moderation and code of conduct enforcement while also helping us have fun together at community meetings and contributor summits.”
Dawn Foster, Director of Open Source Community Strategy, VMware Open Source
When enterprises adopt Kubernetes, they inherit a dependency on the health of the Kubernetes open source project, which depends on the community who is building it. So, how has Kubernetes fostered a healthy, successful open source community? Apart from the main best practices that facilitate a community of good open source citizens (clear standards, professional behavior, a way to problem solve and discuss architectural issues and prioritize features), Kubernetes also implements a code of conduct that communicates expected behavior for project contributions and lays the foundation for an open, welcome and productive space.
The Kubernetes community also organizes itself into SIGs, or special interest groups. One of these SIGs is specifically committed to the contributor experience. Its mission is to improve the quality of life for all Kubernetes contributors, providing new and prospective members of the community with a valuable resource as they become part of the Kubernetes journey.
“By making the deliberate step to say ‘We want a flourishing community around the [Kubernetes] project’, it stood a better chance of happening…For myself, it made it much easier to get involved in the community, and I see that through a bunch of others as well in their experiences. The specific programs that the contributor experience SIG creates and delivers, it makes it easier for people to come to the project.”
Tim Pepper, Sr. Staff Engineer, VMware Open Source
“Kubernetes really shines when it comes to bringing new contributors into the community with dedicated programs like the New Contributor Workshop, Meet our Contributors, and other mentoring opportunities.”
Dawn Foster, Director of Open Source Community Strategy, VMware Open Source
Another viable proof point of Kubernetes’ collaborative community is the recently created Usability SIG, which seeks to understand the users of Kubernetes as opposed to its creators. As an open source community of creators, it can be challenging to distinguish whether or not something is being built for the creators rather than the end users. This SIG looks to tackle this challenge by kicking off efforts around user research, conducting studies on jobs to be done and baking in better defaults. In an effort to both understand and better serve end users, SIG Usability encourages any researchers, designers or other interested parties to join in and contribute their perspectives. Making the Kubernetes community one where this kind of cross-collaboration effort can happen brings enormous value to its users and the organizations they belong to.
Joining an open source project – especially an established one like Kubernetes – might seem daunting at first. However, prospective contributors should take comfort in knowing that the Kubernetes community fosters collaboration and inclusivity. Plus, there are multiple steps you can take to maximize your chances of making an impact in open source. If you’re interested in contributing, check out this video of VMware’s Dawn Foster and Jorge Castro from last year’s KubeCon in San Diego, CA , offering a sneak-peek into a typical week in the life of the Kubernetes community:
To learn more about Kubernetes and stay up-to-date on new open source projects and developments, explore our blog and follow us on Twitter (@vmwopensource).