The tooling around Linux containers has matured to the point that they are now a viable method of software packaging and deployment. The developer side of the containers equation has gotten a lot of emphasis. However, in order for containers to be a complete solution, they must not only be easy to build, but easy to deploy reliably at scale.
A company that arguably has more experience than any other company in deploying Linux containers at scale is Google. They have been running containers in their own datacenters for over a decade, contributing to the upstream Linux kernel in the areas of cgroups and namespaces. Using an internal system named Borg, Google deploys about 2 billion containers per week.
Deploying containers at that scale for that long tends to separate good container clustering design patterns from bad. Google generalized those good patterns into a container orchestrator they thought would be generally useful to others using the popular docker node-level container manager. In June 2014, Kubernetes was released.
Since that time, Kubernetes' growth has exploded by almost any metric. There have been over 17,000 commits from over 800 unique contributors. Many new projects are leveraging Kubernetes as a base for other projects like Red Hat's Openshift. Contributing companies include Red Hat, IBM, CoreOS, and Intel. Kubernetes is not only open source, but open design. All new features go through a public proposal process which allows members of the community to play a part in directing the project.
Kubernetes seeks to solve the challenge of deploying containers at scale. It has a modular and decoupled design to enable fault tolerance and scalability. Cluster resources are defined declaratively, in yaml or json formatted resource definition files, and Kubernetes components work in an asynchronous way to converge the actual cluster state with the user-declared desired state. Users interact with Kubernetes through a well-defined API.
I will be presenting on Kubernetes at Texas Linux Fest on July 9, 2016 in the Austin Convention Center. Things attendees will learn are:
- Why containers? (The Isolation Problem)
- What is a Linux container?
- What is Kubernetes? (Architecture, Resource types (pods, deployments, services, etc), and Networking)