Ask HN: Are you learning Kubernetes/Docker? What resources are you using?
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 ] threadI would be interested in some short to the point tutorials with practical examples.
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/
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.
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.
- 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.
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.
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 :-)
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.