Google is a cruiserweight when it comes to containers — it runs literally billions of them every week. So when something container-related comes out of Google you'd be wise to take a look — the company knows what it's talking about.
That's particularly true of Kubernetes, the open-source container cluster management system that was designed at Google before being handed over to the Cloud Native Computing Foundation.
Kubernetes aims to provide a platform for automating deployment, scaling and operations of application containers across clusters of hosts. That's how it describes itself. We might call it a container management system.
There's been just one problem with Kubernetes — up till now there's been complaints that it's been spectacularly difficult to get up and running.
This may explain in part why so many container management systems have hit the scene that are based on Kubernetes but which also offer a proprietary overlay of software to make the system easier to deploy and run (as well as delivering other features.)
Making Kubernetes Easier to Install and Use
It's something the project has been acutely aware of, according to Aparna Sinha, a product manager at Google who works on Kubernetes. "One of our top user requests has been making Kubernetes itself easier to install and use," she says.
And so the good news. "We've taken that feedback to heart," says Sinha.
How? The latest version of Kubernetes, version 1.4, was released at the end of September. And in it is the fruit of the labors of over 20 contributors who came together to greatly simplify the Kubernetes user experience, according to Sinha. Improvements have been made throughout the system, including installation, startup, certificate generation, discovery, networking, and application deployment.
Perhaps the biggest innovation is the introduction of a new tool called "kubeadm," which provides a way for users to provision nodes, install Kubernetes and boot strap a cluster on a public cloud, a private cloud, or on a bare-metal cloud. It reduces bootstrapping to two commands, with no complex scripts involved: once Kubernetes is installed, "kubeadm init" starts the master while "kubeadm join" joins the nodes to the cluster.
Installing Kubernetes has also been made easier by packaging Kubernetes with its dependencies on major Linux distros, including Red Hat's and Ubuntu Xenial, so it's possible to install Kubernetes with little more than an "apt-get install" or a "yum install."
As Google well knows, cloud-native applications are often built to run in containers. But existing applications don't always make easy bedfellows with containers.
In particular, stateful applications like databases or ones that use batch processing don't always play nicely, but in Kubernetes 1.4 there are a number of new features designed to make deploying stateful applications less traumatic.
An example is ScheduledJob, which has been introduced (albeit in Alpha release) so users can run batch jobs at regular intervals. And Init-containers (Beta release) addresses the need to run one or more containers before starting the main application — for example, to sequence dependencies when starting a database or multi-tier app, Sinha says.
Other New Features and Enhancements in Kubernetes 1.4
There's also a feature that enables cluster administrators to expose multiple storage provisioners and allows users to select them using a new Storage Class API object. Kubernetes 1.4 also adds curated and pre-tested Helm charts for common stateful applications such as MariaDB, MySQL and Jenkins, which will be available for one-command launches using version 2 of the Helm Package Manager.
There's more in the update too, including the ability to build applications with clusters that span regions and clouds, security enhancements including support for the AppArmor security system, and a new Kubernetes dashboard UI that has 90% CLI parity.
Of course, there's no shortage of container management systems to choose from these days: Rancher, Docker Swarm, ContainerX, Mesosphere Marathon, Azure Container Service, CoreOS's Tectonic, which is built on Kubernetes, and even Google Container Engine, which is also built on Kubernetes, to name but a few.
Many of these container management mongers push the story that Kubernetes is too raw and difficult to use by itself, and that you'd be better off using something with a proprietary finish to take the edges off Kubernetes. While they may have a case, with version 1.4 Kubernetes is showing its working hard to address this issue.
Paul Rubens is a technology journalist and contributor to ServerWatch, EnterpriseNetworkingPlanet and EnterpriseMobileToday. He has also covered technology for international newspapers and magazines including The Economist and The Financial Times since 1991.