Review: Hands-On Intro to Kubernetes

It’s 2017. Containers are “a thing.” For real. A few years ago, we were kind of wondering if they were, or if they were just a passing fad. Those of us who were busy Getting Things Done(™) don’t have time for all of the fly-by-night technologies that show up on HackerNews for a week, only to fall by the wayside. That’s the cheap excuse I’m using to justify my lack of experience with Docker, Kubernetes, and the whole containerization movement that has crept up in the past few years.

I was very happy to see that one of the first classes at LISA this year, in fact, THE first, if you go by the course numbering scheme in the program, was “Hands-On Intro to Kubernetes.” I was excited to actually have someone tell me the right way (or ‘a’ right way, as the case may be) to get my feet wet in Kubernetes.

Okay, so, Kubernetes.

What is a Kubernetes?
...How can I Kubernetes?
...Aren’t we all really Kubernetes if we try hard enough and believe in ourselves?

This is basically where I was yesterday, or at least pretty close. I know what containers are (segregated/isolated operational environments for programs), and I had heard that Kubernetes was “orchestration for containers”, but that’s about where it stopped. I can see how it would be useful to have orchestration for containers, because microservices often demand that a pod of infrastructure elements co-exist for mutual requirements. I just didn’t know anything about to do that with Kubernetes.

Ryan Jarvinen came prepared to get us into Kubernetes (often abbreviated k8s) from the get-go. The requirements for class were a laptop that had kubectl (adorably prounounced ‘cube-cuddle’), minikube, docker, and git installed. I wasn’t able to get those on my Mac in time, so I spun up a quick Fedora droplet on Digital Ocean, installed the pre-reqs, and was on my way.

Without going into the kind of depth that would recreate the class contents here, I can say that Ryan covered how to use kubectl to work with the five types of k8s primatives:

  • Nodes (the host that the containers run on)
  • Pods (collections of containers, and the minimum increment of scale for Kubernetes)
  • Services (logical collections of pods)
  • Deployments (provides updates for pods and replica sets)
  • ReplicaSets (which ensure that the requisite pod replicas are running and in good shape)

All in all, I’m in a much better shape to evaluate Kubernetes in my environment in a real way. Even getting started with things like this often feels insurmountable. Classes like this help provide hand holds and methods to approach difficult or complex subjects more quickly than you might be able to do on your own. I’m really glad I attended this tutorial, and if you haven’t considered classes like this to help you approach the next big thing, you should really give it a shot. I hope you get as much out of it as I did, and more!