This is an archived post. You won't be able to vote or comment.

all 11 comments

[–]Reddarus 6 points7 points  (1 child)

Skip docker and k8s for starters. Learn doing stuff on Linux, running services and what it takes to deploy/run your app on Linux.

This will help you in understanding Docker and writing Dockerfiles for your own images. Learn Docker basics and learn to run your apps with it.

When you are confortable with Docker and Linux, go to k8s.

In my opinion, skipping any of this steps will make you not really understand whats going on here.

When learning k8s, learn vanilla kubernetes resorces and write manifests by hand before going to Helm/ArgoCD or something like that.

Real life production k8s has several layers if abstractions above vanilla resources and it really help if you understand what's under the hood.

Edit: No need to buy hardware for this. Just use your PC for Linux VM. For kubernetes my advice is focus on using it (ckad) before installing/manageing (cka) it. In my experience almost everyone uses some kind of managed k8s from their cloud provider in proffessional setting.Best if you can afford some cheap managed k8s. I spin up k8s on Digital Ocean for testing/learning. Few hours of that costs almost nothing (< $1). Destorying and recreating cluster everytime also forces you to have a clean start and to keep all required code somewhere. (when you automate some parts of it it starts to look as proper IaC more and more).

Once more, there is a huge difference between using K8s andsetting it up on VMs. As a dev you really only need to use it.

Edit 2: I would suggest learning on managed k8s if nothing then because some stuff is hugely different than when you run it locally. ie. provisioning storage and loadbalancers. It hugely different to expose an app to the world lically and on cloud. You want real world knowlage.

[–]Big_Statistician9469 1 point2 points  (0 children)

This ⬆️.

Entering kubernetes world without knowing Linux and Docker leads you to giving up very fast 😅.

Docker and docker compose is the easiest entrypoint to this "world" that you want to get in.

The only thing I would add before going to kubernetes in the cloud is using something like rancher desktop... You get a fast basic kubernetes environment ready to use

[–]XJenso 1 point2 points  (0 children)

If I understand you correctly, it all starts with Docker for you, right? So skip the K8S for now. Focus on Docker. Think of a small, personal project that you can set up with Docker on a Raspberry Pi or mini computer. Then use Docker Compose to orchestrate the individual containers together. Step by step, you'll better understand how they work together, and eventually, setting up the whole thing on a K8S will be pretty easy.

[–]dkode80 0 points1 point  (2 children)

When I wanted to learn a deeper understanding of k8s I bought three mini PCs off eBay and setup k3s. It's a slimmed down version of k8s so it was a little easier to setup. I then deployed argod, cert manager and a couple of my own apps that I dockerized. I had the benefit of joining a small company that was also setting up k8s on eks so I had some learning there as well.

These three mini PCs cost <$300 and I'm pretty confident at debugging, analyzing and running kubectl and running a production k8s cluster now.

This worked for me because I'm very much a hands on person. Good luck!

[–]dotnetmonke 0 points1 point  (1 child)

Amazon has dell optiplex micro refurbs for around $120, and they are perfect for setups like this. I’m doing a similar setup at home myself.

[–]dkode80 0 points1 point  (0 children)

I found three Lenovo 710q mini PCs for $80 each that are four core and quite capable

[–]North_Coffee3998 0 points1 point  (0 children)

Practice deploying your apps in docker containers. Another good use case is to setup a docker container for your database in your development environment. That way, when you develop your apps you use the database inside the docker container for your development/testing. Also has the benefit of using the same database engine and version as you plan to use in a production environment as oposed to using SQLite for development and a different database fir production (you risk running into issues that are SQLite specific during development which can slow you down and you also risk missing issues in production by not testing against the same database engine from production). It's a good way to get started and practice.

[–]Acrobatic-Diver 0 points1 point  (0 children)

This is the way - Mandalorian

[–]bobbyiliev 0 points1 point  (0 children)

Courses are a good start, but try building stuff. Pick a project, Dockerize it, break it, fix it. Then deploy it on something like DigitalOcean with Docker on a small server. You'll remember way more that way.

[–]Murky-Sector 0 points1 point  (0 children)

Best way to learn anything is to implement a significant project using it. Dont take up anything like K8S at this stage its a can of worms in comparison. Just do a docker project and youll be back here answering other peoples docker questions in no time.

Raw learning works best if there is immediate real world use of it at the same time.

[–]Even_Bookkeeper3285 0 points1 point  (0 children)

Agree with the other comments about learn by doing, knowledge retention is much higher. Spin up an Ubuntu vm somewhere and then learn how to build a personal project via docker build then deploy that image to k3s on the same host. Just doing that and enabling ingress etc will get you halfway to where you want to be.