Kubernetes im Homelab
In der Selfhosted-Szene haben sich Container, insbesondere Docker inzwischen durchgesetzt. Die Vorteile liegen auf der Hand. Mit Docker kann ich Anwendungen schnell, ohne Rückstände, in sich geschlossen und abgeschirmt vom restlichen System betreiben. Das ist besonders sinnvoll, wenn ich viele verschiedene Anwendungen ausprobieren will und dabei keine Lust habe meine Software manuell zu konfigurieren und dafür zu sorgen, dass meine Dependencies alle zueinander passen. Mit Docker brauche ich mir keine Gedanken darüber machen, dass Applikation A Library XY in Version 4.3.2 benötigt, während Applikation B Library XY in Version 4.4 benötigt, da jeder Container seine eigene kleine Linux-Umgebung mitbringt.
Wofür jetzt Kubernetes
Einige Personen stehen auf Schmerz, das ist okay und jeder kann seine Vorlieben haben.
Nein Spaß, Kubernetes ist toll und bringt viele Vorteile mit sich, die in großen Umgebungen richtig sinnvoll sein können. So ist die Skalierung von Cloud-Native-Anwendungen mit Kubernetes automatisierbar, Applikationen von der Hardware unabhängiger und hoch-verfügbarer.
Gleichzeitig bringt Kubernetes aber auch einen höheren administrativen Aufwand mit sich, wenn der Cluster von einem selbst gemanaged werden muss und nicht in der Cloud gehostet wird.
LoadBalancer müssen konfiguriert werden, das Networking ist nicht immer einfach und Fehler häufig nicht transparent erkennbar. Dies gekoppelt mit dem großen Software-Stack, den man sich mit Kubernetes ins Homelab holt (etcd, kubelets, overlay-networks) und den endlos langen Konfigurations-Dateien sorgt für einen unfassbaren Overhead, den auch ich unterschätzt habe.
Was jetzt
Während Kubernetes echt cool ist und durch den Einsatz im Homelab auch viel Wissen erlangt werden kann, was später im Arbeitsumfeld nützlich sein kann, habe ich mich nach mehreren Anläufen dagegen entschieden. Der letzte Ausflug in die Kubernetes-Welt endete damit, dass ein Datenbank-Operator meine Produktivdatenbank gelöscht hat, was anscheinend daher kam, dass ein Node zuwenig freie CPU hatte. Das zu debuggen hat Ewigkeiten gebraucht. Daher ist meine jetzige Lösung wieder ganz langweilig und voll 2000er: LXC-Container auf Proxmox.