If you read Kubernetes' description—"an open source system for automating deployment, scaling, and management of containerized applications" —you may think that getting started with Kubernetes is quite a daunting feat. But there are a number of great resources out there that make it easier to learn this container orchestration system.
Before we dive in, let's examine where Kubernetes started. In the Unix world, containers have been in use for a very long time, and today Linux containers are popular thanks to projects like Docker. Google created Process Containers in 2006; when it later realized it needed a way to maintain all those containers, it created Borg as an internal Google project. Many tools sprang from its users, including Omega, which was built by iterating on Borg. Omega maintained cluster states separate from the cluster members, thus breaking Borg's monolith. Finally, Kubernetes sprung from Google, and it is now maintained by the Cloud Native Computing Foundation's members and contributors.
Ways to learn Kubernetes
If you want an "explain it like I'm five" guide to Kubernetes and some of its primitives, take a look at "The Illustrated Children's Guide to Kubernetes," available as a video and a PDF, that features a cute little giraffe that represents a tiny PHP app that is looking for a home. Core Kubernetes primitives like pods, replication controllers, services, volumes, and namespaces are covered in the guide. It's a good way to wrap your mind around the why and how of Kubernetes. Fair warning though: It does not cover Kubernetes' networking components.
There are two areas where you can get started with Kubernetes. The first area is maintaining or operating the Kubernetes cluster itself. The second area is deploying and maintaining applications running in a Kubernetes cluster. This distinction provides compartmentalization when learning Kubernetes. To be proficient at Kubernetes, you should know both, but you can get started knowing one or the other.
To learn how Kubernetes' internals work, I recommend Kelsey Hightower's Kubernetes The Hard Way. It is a hands-on series of labs on bringing up Kubernetes with zero automation. If you want to know how to stand up all the pieces that make a full Kubernetes cluster, this is the path for you.
If you want start by deploying containerized apps to Kubernetes, Minikube is the way to go. Minikube is a tool that helps you deploy Kubernetes locally. You have to be able to run a hypervisor on your host, but most modern devices can. You can run Minikube on Linux, macOS, or Windows, so the sky's is the limit, although each OS has a different way of setting everything up for Minikube. Deploying Docker (or rkt) containers to Minikube is easy, and it makes your container more resilient in a Kubernetes cluster
If, after kicking the tires on Minikube, you feel it is missing a few components, I recommend Minishift or CoreOS Tectonic. Minishift is the Minikube of Red Hat OpenShift. OpenShift has a fantastic UI and many features that make Kubernetes a little better. CoreOS Tectonic is a more opinionated, enterprise-ready Kubernetes. Luckily, CoreOS Tectonic has a free sandbox version. The nice thing about CoreOS Tectonic is the networking and monitoring that come baked into this iteration of Kubernetes. CoreOS has been very thoughtful about the decisions made in Tectonic, and it shows.
Get started now
Regardless of how you decide to begin, now is the time to start learning Kubernetes. There are so many places to deploy Kubernetes now, it doesn't make sense to wait any longer—give it a try before determining whether it is a fit for your use cases. Before you deploy to AWS, Google Cloud, or Azure, make sure you're not wasting your time.
This article was reprinted with permission from Chris Short's blog.
1 Comment