I have been using k3s as the weapon of choice for my local development k8s server for a while now. Understandably this obfuscates the building blocks that make up a k8s cluster in a neat little box that can be provisioned and managed easily. After all this is why people use k3s (or minikube etc.). People need an easy-to-use local development environment so that they can go on with their lives.
I am, however, very interested in knowing what makes a k8s cluster tick. Sure, reading up on it online is one thing, but I am a very hands-on kind of guy. I trully learn by doing. This is why I spent most part of yesterday compiling a list of steps needed to provision a single-node k8s cluster. After all the work was done I compiled an ansible playbook so that it can be documented / versioned.
This is a single-node k8s cluster that uses Calico as its CNI. It also installs Istio.
You can find the repo here: https://github.com/sm0ke21/k8s-cluster