Happy New Year!
In Part 1, I detailed my take on Kubernetes. Here in Part 2, I am listing out some resources for learning Kubernetes.
I feel compelled to mention that I learn things in fits and starts. It’s just how I roll. I get bored with things easily. So when that happens, I drop it for a bit. But if it’s important, and of course Kubernetes is important, I always come back to it.
Also, as I mentioned in Part 1, Kubernetes is a journey. A perfect storm of things had to come together for me to feel comfortable enough to start dealing with Kubernetes in Prod, and therefore make posts about it here.
My only disclaimer here is that I am not going to talk about the requisite knowledge of Containers. In case you were unaware, Kubernetes is, among other things, a container orchestrator, but that’s getting ahead of things since Part 3 defines what Kubernetes does.
Anyway, if you have no knowledge of how containers work, then I would highly recommend this course, by Nigel Poulton (free at the time of this post), but there are a lot out there. Also, if you want the “rabbit-hole-how-stuff-really-works” low-down, study cgroups. This post at Linux Journal, is a good place to start.
Without any further ado, let’s dive into some resources and I’ll say a word or two about each. You do not have to do these in the same order I did:
- Kubernetes the Hard Way – Yep, this the first thing I did, and I don’t regret it. I definitely learned about the underpinnings (what’s this etcd thing . . . ?). My reasoning behind this was that I had actually created a Kubernetes cluster before on a lab, but that wasn’t good enough for me. I wanted to know what it does when I create a cluster. The downside with this resource is that if you are not well versed in the command line or heredocs, this might be a heavy lift for you.
- The Kubernetes Book, by Nigel Poulton – This was a Godsend. I as able to take what I’d learned in KTHW and match it up with what Nigel was talking about. It was here where I started to learn more about the scope of objects in Kubernetes (Contexts, Namespaces, Clusters, etc.). Also, I took his aforementioned Docker Deep Dive, so that book is also recommended.
- VMware’s Kube Academy – This helped to apply some, but it still didn’t congeal for me quite yet.
- Made my own Kubernetes Lab – Also learned vagrant along the way. I picked up more of the
kubectlcommand line and got more well versed in how to deal with nodes and pods, but I still didn’t feel like I was “there” yet. My only warning for you is that having a local lab does not compare to have an Enterprise implementation of Kubernetes.
- Kubernetes Up and Running – I only read this part of the way through. It was part of my “fits and starts” learning style.
The above resources helped me on my journey. But I didn’t feel like I “got it”. Then I had a revelation. The following three things fell into place and with these I turned the corner:
- I installed VMware Tanzu Kubernetes Grid – As I mentioned earlier in this post, nothing beats using a “prod-worthy” Kubernetes implementation. The number of “you can’t do such-and-such on minikube” just got too obtrusive.
- Kubernetes In Action – All books I read previous to this one were a prelude to Kubernetes in Action, otherwise known as “kubia”. Maybe I should have lead with that? Anyway, with the combination of TKG and this, things really came together. There are two reasons why this book was helpful – 1) it just so happened to fit with my learning style, and 2) the way kubia rolls out objects in Kubernetes is through yaml files rather than obscure command options with
kubectl. I GET THAT!
- Actually doing things in Kubernetes – I know this seems obvious, but once I had a better idea of how to create pods and access them, I started to feel much better about things: I stood up Harbor as a Kubernetes application. I built my own containerized application and ran it in Kubernetes.
Stay tuned for Part 3, where I demystify Kubernetes.