Kubernetes was open sourced by Google in 2014. This container orchestration engine is based on Google’s Borg technology that’s been running for many years. Indeed, Google ran Kubernetes for more than 10 years, before containers became hot. Google had been powering its own web services with it.
Putting things into perspective, Kubernetes was actually late to the container cluster manager/orchestration party. As you may recall Apache Mesos first entered the market in 2009. It began as technology without a container role, until those who needed to make containers scale put two and two together.
Despite Kubernetes only being out of beta for a short time, more people now brag about their Kubernetes skills than they do about Apache Mesos, Docker Swarm or Cloud Foundry. Further validating the containers orchestration engine, Microsoft deepened its investment and commitment to Kubernetes in early April with the acquisition of Deis, a Kubernetes services and support startup.
The hype and demand can also be measured by the Stack Overflow questions that mention the different container cluster managers. Indeed, Kubernetes dominated the category, as the chart from Apprenda reflects in Figure 1.
So, let’s declare this technology a winner, and look at what we need to do to make it work within our enterprises.
Kubernetes consists of several architectural components, including pods, labels, replication controllers and services. They do the following:
- Pods are ephemeral units that manage one or more tightly coupled containers.
- Replication controllers create new pod “replicas” from a pod template to ensure that a configurable number of pods are running.
- Services offer a low overhead way to route requests to a logical set of pod back ends in the cluster, using label driven selectors.
So, if you’re looking to run Kubernetes to manage clusters of your containers, what will be the core decisions that you have to make? In my opinion, they include the following:
- To cloud or not to cloud? Keep in mind that you can run Kubernetes on premises, as well as within public clouds. Although, Google’s cloud is the logical choice, there are Kubernetes capabilities on the AWS and Microsoft cloud as well. Of course, all of the normal advantages apply, such as not having to buy and configure servers when leveraging a public cloud.
- DevOps or Not? Considering that Kubernetes is part of both development and operations, you have to make a call as to whether or not it can fit into the DevOps processes and tool sets. For the most part, if you’re dealing with containers, and working with net new applications, or if you’re containerizing existing applications, then it will indeed be a part of DevOps.
- Internet training, versus hard hiring? Kubernetes is a hot technology, as we can see from the charts above. But, you need the Kubernetes talent in-house in order to actually create working container orchestration-based systems using Kubernetes. So, where do you get the people? This is really a build vs. buy decision, and you need to consider the cost of training your existing staff versus hiring from the outside or leveraging consultants. Any path will be expensive.
It’s About Value
Core to the above, understanding the technology and prepping for the decisions are only half the battle. You need to get good at quickly defining the value of this technology considering the cost of the transition and the cost of the people needed to both build and maintain containers and container cluster managers, such as Kubernetes.
A few key points that you can make to your leadership:
- Kubernetes allows the container-based applications to scale by clustering the containers within a container manager where they can be scheduled, orchestrated, and managed. This reduces operations cost by about half when compared to not using a cluster manager.
- Understand the value of DevOps. DevOps using containers and container cluster managers is about 20 percent more effective. This is due to your ability to reuse containers and drives better architecture practices within container-based applications.
- Kubernetes can be run on a public cloud as a native service, so there is no need to purchase hardware or software to host Kubernetes.
Kubernetes is a success due to the fact that it solves a problem in a better way than the other container cluster managers on the market. At least, it does if you consider the market picking this technology as a validation of the technology itself.
So, assuming that you’re moving in the direction of Kubernetes, you must consider both the operational impact, as well as the impact on the humans in the organization. In other words, you need to understand how to make both a technology and a business case. It is my hope that these ideas and information give you a good start.