Kubernetes, k8s for short, had me fascinated basically ever since I heard of it. As I did not have the opportunity to work much on that tech as an employee, I thought it might be just fun and entertaining to go through for my private stuff.
I already had my playground k8s-knative project in place from my experiments with knative. That did want a few updates, as my last visit to k8s was in late 2019.
The updated repo is still publicly available here: kubernetes-kubeadm on git.drglitch.net.
Year's end seems to have something magical about distributed systems and container orchestration.
Of course, whoever stumbles across this is invited to have a look and use it for whatever they may find it useful.
My kubernetes node setup consists of 6 nodes at the moment. I kept the control pane running on my private server - the worker nodes (i.e., nodes that are not "tainted" and get workloads assigned) run on the same machine as VMs through libvirt-qemu.
I wrought up a management toolbox in kubernetes-kubeadm using fabric to facilitate node management. For larger installations, things like puppet or ansible are certainly more appropriate.
Do take care when defining member nodes - k8s network plugin istio has a "hidden" requirement of at least 4GB RAM. If that is not met, installing istio will silently fail after eating away lots of time and your nerves. You may find other network plugins more suitable.
If you are already familiar with docker-compose, check out kompose. It can greatly simplify creating deployment yaml for kubernetes based on a docker-compose.yml file.
What it does not handle too greatly (read: it skips them) is volumes. You will still want to look at PersistentVolume and PersistentVolumeClaim in the kubernetes documentation in order to provide volumes to your containers.