Ask HN: Are you learning Kubernetes/Docker? What resources are you using?

13 points by jonathan-kosgei ↗ HN
I've worked with a number of clients who engaged me to do nothing more than teach/guide them through how to use Docker and Kubernetes (especially Kubernetes). They all mention the inadequacy of existing learning resources.

So my question is, what resources did you/are you using to learn Kubernetes and Docker?

I've been working with Kubernetes and Docker for a couple of years and I'm thinking of developing a course drawing on the knowledge I've acquired.

19 comments

[ 2.9 ms ] story [ 52.1 ms ] thread
I looked at it a few years back, and I read a book about docker on a flight back from Asia.

I would be interested in some short to the point tutorials with practical examples.

I'm considering creating the content as short video lectures. But they'd be plenty of notes to go with the videos as well.
Kubernetes: Up & Running would be a good book to start with.
I got started with the kubectl command line function as it was packaged with Google Cloud SDK. Then experimented with Minikube locally.

I think what you really want is something like a "Minikube in the Cloud" learning environment. Where you walk students through building an actual service. But if they make mistakes, nothing catches fire ;)

Another recommendation is a gentle intro to serverless deployments such as Fission and Kubeless, since that is maybe where everyone's headed in the near future. Also a great way to introduce design thinking, architecture, distributed systems, fault tolerance, decentralization, etc.

http://fission.io/

Thanks for the input :)

I think installing Kubernetes and covering the whole setup especially for production is a whole topic in itself. Hence minikube would be very convenient for students.

That said I've always appreciated an example first approach (with a to the point explanation) other than pure plain theory.

Is there like a 1 pager summary of what Kubernetes/Docker is? Ever since my transition to the business side, I feel like I've lost touch. What's the benefit of deploying using Docker?
The key benefit for me, and the reason I use it for my personal projects, is that it makes it easy to deploy the app. The Dockerfile is basically a list of commands, to install packages, copy files over etc once you have that and build it into an image. You can then do docker run from anywhere on any os and expect consistent results.

You could try https://kubernetes.io/docs/concepts/overview/what-is-kuberne... for now.

Kubernetes is basically a wrapper around Docker. It adds a lot of functionality but it's main job is handling the scheduling/management of Docker containers.

Isolation, repeatability and speed of deployment:

- Docker images are portable. They will run anywhere there is Docker. No surprise missing system packages when deploy.

- They are isolated from the the rest of the machine. Inconsistencies between dev and prod are minimized greatly.

- Kubernetes allows you to deploy stateless, immutable images using a declarative manifest. IMO this is far superior to imperative scripts that are used in a lot of places.

- Kubernetes pods start up in seconds when they are added or restarted. Deployments for me routinely take under a minute. Compared to our EC2 deployment strategy which can easily take over half an hour to deploy a single node.

The list goes on but these are the key things for me. I would suggest checking out some videos by Kelsey Hightower is want to see more of it in action.

I recently read the book "Kubernetes: Up & Running" and it was a great resource. Written by Kelsey Hightower it's short and to the point has a bunch of great examples.

As a starter I would get Minikube going on your laptop: https://kubernetes.io/docs/getting-started-guides/minikube/

Then write a small REST app in your favorite language, nothing fancy just something you can easily deploy. Get it running in Docker, and the minikube. Google the problems you have along the way. You will learn a lot by doing this. Now deploy another little app into your minikube cluster and have them start communicating over the clusters network.

This will give you a good start and then you'll know enough to start seeking out more.

Official Kubernetes docs are the best I've seen so far and what I'm using.
When my team was learning about Kubernetes we worked through Kelsey Hightower's "Kubernetes the Hard Way": https://github.com/kelseyhightower/kubernetes-the-hard-way

Obviously this much more complicated that using a tool such as kubeadm to deploy Kubernetes however it gives you a really good understanding of how a Kubernetes cluster is put together.

One of my colleagues used the experience from working through this with a set of VMs to create a tool called kubicle: https://ciao-project.github.io/kubicle.html

This allows you to build a Kubernetes cluster on your own physical machines by building it on top of a Ciao cluster if you're not able to use public cloud hosted VMs. For learning you can combine this with Ciao's "singlevm"/ccloudvm mode to run a cluster inside a VM (with nested VMs.)

Full disclosure: I currently work on the Ciao team @ Intel :-)

(comment deleted)
I found a blog series here:

https://kumorilabs.com/blog/k8s-0-introduction-blog-series-k...

It’s not necessarily the best resource for actually learning the ins and outs of Kubernetes; however, I think it’s a good starting place.

After going through those, I worked on deploying a small application using stuff covered in those labs.