Thanks to adoption by high-profile business, such as Google and Netflix, containerisation has become increasingly popular amongst developers. There are many ways to manage containers but Google's system, Kubernetes, is beginning to pull ahead from the rest for a number of reasons.
Now two months after the release of Kubernetes 1.3, we look at the features and benefits of Google’s container orchestration engine and why it is fast becoming the default for SaaS and application hosting.
What is Kubernetes?
Kubernetes is an open-source system, developed by Google, that allows developers to manage containerised applications. After benefiting from 15 years of Google R&D, Kubernetes has overcome stiff competition from the likes of Docker Swarm through its unique approach to containerisation.
How is Kubernetes Different?
Creating a Modular Work Environment
With Google’s influence over Kubernetes’ marketing, it’s hard to know which features are unique and which have just been rebranded. Once you cut through the jargon, you're left with a few unique features designed to create an independent and dynamic work environment:
- ‘Pods’ are groups of containers that run in a shared context and on the same host - acting as the “atomic unit of a container cluster”. Containers within pods can all see each other on 'localhost' because they share the same network namespaces, allowing them to communicate with each other. The creation of pods is essentially an extension of the containerisation methodology. It offers a way to further decouple and regroup the relevant elements together to enable multiple teams of developers to work separately from each other – a structure that allows for easier team expansion.
- Kubernetes’ labelling system is simple, but ultimately makes a lot of sense when it comes to organising pods. Assigning labels to pods based on the key values to your team enables you to issue queries which cuts through the numerous pods in your system. What’s more, labelling makes ‘reconciliation loops’ possible.
- ‘Reconciliation loops’ automate the process of creating, health checking and deleting pods based on a desired state. This desired state is set by the developer using Kubernetes’ ‘replication controller’, which is in turn based on labels. For example, the developer would create a pod template based on a set of labels, then the replication controller would build a reconciliation loop that could continually add or delete pods to reach the desired number of pods. The replication controller is best utilised after undertaking disruptive maintenance on your application hosting system, such as a kernel upgrade, as it will automatically replace pods that got deleted.
Building a Community
Many people would say that the features above aren’t that different to those offered by Kubernetes’ competitors, such as Docker Swarm. Instead, they may argue that Kubernetes' advantage comes from the vast community it has built.
Since the introduction of Kubernetes as a public source over two years ago, Kubernetes has built an impressive community which is now managed by the Cloud Native Computing Foundation. To put it in perspective, Kubernetes now boasts:
- A higher number of professional mentioning Kubernetes in their LinkedIn profile than any other equivalent containerisation company
- 1,000+ community contributors and 34,000 commits – five times that of nearest rival Mesos
- A large Slack and Stack Overflow community who engage in Q&As, subsequently filling in the gaps missing from Kubernetes’ current support documentation
The key to this expansion is most evident when comparing Google's strategy for subsidiary management to Docker's. Google took a hands-off approach, allowing Kubernetes’ community to flourish as members collaborated with whoever they choose. On the other hand, Docker’s strategy restricted competitors from collaborating around a Docker standard, meaning they have struggled to build a community to support their efforts.
In summary, Google’s R&D resources and their encouragement of community building has resulted in Kubernetes amassing a whole host of benefits for it's users. Its therefore no surprise that Kubernetes is fast becoming the containerisation company of choice for developers.
To learn more about how containers can benefit your application hosting, download our Introduction to Containerisation eGuide.