Ich will zu Hause ein bisschen Kubernetes ML-Ops (machine learning operations) üben, nur so aus Spaß. Da ich so viel Kram rumliegen habe, insbesondere SBCs (single board computers) und es so viele tolle open source Software gibt, sollte das eigentlich möglich sein.
Einige Leute haben schon ähnliche Projekte durchgeführt, aber dies wird keine Schritt-für-Schritt Anleitung, eher eine Serie an Artikeln für meine eigene Dokumentation, und eine Sammlung an “lessons learned”.
Hardware
Mal sehen was wir so haben:
- Ein Odroid H2+ mit 16GB RAM für die “control plane” (Steuerungsebene) VMs, auf Fedora 35 Server
- Zwei nVidia Jetson Nano 4GB Developer Kits
- Zwei nVidia Jetson Nano 2GB Developer Kits (Dank der globalen Chip-Knappheit)
- Zwei Raspberry Pi 4 mit 4GB RAM
- Zwei Raspberry Pi 4 mit 8GB RAM
- Ein 10port Cisco gigabit Managed Switch
- Stapel und Haufen an Kabel, Netzteile, Gehäuse, usw, usf.
Ein BOM (bill of materials) gibt es nicht, und auch keine Kostenaufstellung, weil die meisten Teile schon ewig rumliegen, und von diversen anderen Projekten wiederverwendet werden. Die einzigen Teile die ich spezifisch für dieses Projekt gekauft habe sind die beiden Jetson 2GB Developer Kits, weil die anderen beiden so einsamen waren und im Gehäuse noch Platz war.
Entscheidungen
Ich werde “Vanille” Kubernetes und kubeadm für die Bereitstellung nutzen. Nicht die beste Wahl, weil K3s besser auf SBCs läuft und leichter zu installieren ist. Es gibt auch Talos OS , anscheinend sehr performant, und viele andere Systeme für die automatisiere Installation wie Typhoon oder kubespray . Aber dies ist mein persönliches Lernprojekt, also wähle ich Systeme die ich entweder kenne oder lernen will/muss:
- Fedora CoreOS für die Nodes, weil das ähnlich ist wie RHCOS auf Openshift, und ich unterrichte Openshift. Außerdem gefällt mir die Idee eines unveränderlichen Betriebsystems. Angeblich läuft es auch auf dme Raspberry Pi 4, mal sehen wie das wird. Die Jetsons laufen nur auf Ubuntu, wegen nVidias proprietären Treibern.
- Ansible für die Automation, so viel wie möglich. Weil ich Ansible unterrichte und liebe.
- Weave Net für die Netzwerkschicht. Einfach weil.
Planung und Zeitrahmen
Es gibt keinen Zeitrahmen, dies ist ein Hobbyprojekt. Aber ich habe einen groben Vorgehensplan:
- Die Master Knoten zum Laufen kriegen. Also ein FCOS Bereitstellungssystem auf dem Masterrechner aufsetzen, und versuchen alles so weit wie möglich zu automatisieren.
- Einen einfachen 3-Knoten k8s cluster aufsetzen, mit nur der “control plane”
- Die Jetsons zum Laufen bringen. Das mitgelieferte Betriebsystem (L4T, basierend auf uraltem Ubuntu) ist völlig Kaputt, also stehen da einige Herausforderungen bevor.
- Fedora CoreOS auf den Pis installieren. Noch keine Ahnung wie das wird.
- Alles automatisieren.
Die Zukunft
Sobald der Cluster als solches läuft (hoffentlich irgendwann) kann ich anfangen mit Automation und GitOps im Machine Learning Umfeld zu spielen. Das Jahrzehnt ist noch lang…