Raspberry Pi Kubernetes Cluster bauen
In meiner aktuellen Artikelserie werden wir einen Raspberry Pi Kubernetes Cluster bauen. Dabei werden mehrere Raspberry Pi Rechner konfiguriert und nebeneinander in ein Netzwerk gestellt um darauf Container Anwendungen laufen zu lassen. Als Containersystem verwende ich das beliebte Docker.
Raspberry Pi Kubernetes Cluster bauen
„First things first“ sagt der Amerikaner, weshalb ich dir in diesem Artikel kurz das Ergebnis vorstelle. Damit weißt du gleich ob du dir den Rest der Serie überhaupt durchlesen willst. Außerdem liste ich auf, was man benötigt und was ich bei meinem Projekt für Hardware und Software verwende.
Hardware
Man benötigt für das Projekt zumindest:
- mindestens 2 Raspberry Pis
einer wird der Master, der andere der Worker. Ich verwende in meinem Beispielprojekt 4 Pis. Die sind bunt gemischt. Ein Raspberry Pi 3 wird der Master, zwei Raspberry Pi 2 und ein Raspberry Pi 1 werden die Worker. - Switch oder Router
Die Rechner müssen im selben Netzwerk sein. Dafür reicht ein Switch. Ich verwende einen alten Router, damit die angeschlossenen Pis in einem eigenen Netzwerk hängen. - LAN Kabel
Ich hänge alle 4 Raspberry Pis mit Patch Kabel direkt an den Router. - aktiver USB Hub (optional)
entweder verwendet man eine große Steckerleiste und pro Pi ein eigenes USB Netzteil oder besser einen aktiven USB Hub für die Stromversorgung.
Auf den ersten Blick sieht das Setup durch die vielen Raspberry Pis und Netzwerkhardware teuer aus. Kauft man sich alles neu stimmt das. Ich verwende lauter alte Pis die sonst nur herumliegen würden. Das Projekt ist deshalb eine gute Möglichkeit alter Hardware einen neuen Verwendungszweck zu geben. Eine frühere Investition wird dadurch sinnvoller und wirtschaftlicher.
Software
- Raspbian Buster Lite
jeder Raspberry Pi wird mit einem aktuellen Raspbian Buster Lite Image aufgesetzt. Details zur Konfiguration folgen in den nächsten Artikeln - Docker
als Containersystem wird Docker Anwendung finden - Kubernetes
ist ein System zur Verteilung von Container Anwendungen auf ein Netzwerk aus physischen oder virtuellen Rechnern
Theorie
Zum Abschluss meines ersten Artikels gibt es noch ein paar Infos zur Theorie hinter dem Projekt. Kubernetes wurde ursprünglich von Google entwickelt und später in eine Open Source Software umgewandelt. Diese wird aktiv weiterentwickelt und findet stand heute bei allen großen Cloud Anbietern (Azure, AWS, Bluemix, …) Anwendung. Als ITler sollte man zumindest dessen System verstehen, besser sogar selber damit umgehen können. Aus diesem Grund habe ich mich entschlossen einen eigenen Raspberry Pi Kubernetes Cluster zu bauen.
Kubernetes verteilt Container unterschiedlicher Containeranwendungen (wie zum Beispiel Docker) auf ein Netzwerk einzelner Rechner. Dadurch ermöglicht es eine einfache Skalierung (es können jederzeit weitere Rechner dazugeschaltet werden), ein einfaches Warten (Rechner können dynamisch hinzugefügt oder entfernt werden) und es ist extrem Ausfall sicher (bei einem Ausfall übernimmt die Aufgabe einfach ein anderer verfügbarer Rechner).
Einige wichtige Begriffe:
- Nodes
als Node werden virtuelle oder physische Rechner im Kubernetes Netzwerk genannt. - Master
ist ein spezieller „intelligenter“ Knoten mit einer API. Diese übernimmt die Netzwerkkommunikation auf alle anderen Worker Nodes und verteilt die Aufgaben. - Worker
Worker sind „dumme“ Nodes mit einem laufenden Kubelet. Dieses Arbeitet eine Aufgabe ab. - Kubelet
Ein Prozess am Worker Node der mit dem Master Kommuniziert und auf dessen Befehl hin Container startet, stoppt und verarbeitet. - Pods
Ist ein Arbeitsprozess. Dieser wird vom Master an einen Worker zur Bearbeitung übergeben.
Im Kontext von Kubernetes werden oft die Begriffe
- Hochverfügbarkeit
Ein Kubernetes System ist zu fast 100% gegen einen Ausfall sicher. In dem System gibt es Redundanzen (mehrere Nodes) die beliebig skaliert werden können. Die Aufgaben können jederzeit beliebigen Worker Nodes zugewiesen werden. - Orchestrierung
Ist ein Begriff aus der IT und beschreibt ein System, dass aus einzelnen Komponenten besteht die in einem großen Ganzen zusammenarbeiten. - Microservices
Der Begriff fällt oft im Zusammenhang mit der Clound. Ein Microservice ist ein kleines Programm. In einer Microservice Architektur wird ein Problem nicht durch ein großes komplexes Programm gelöst, sondern über viele kleine spezialisierte Anwendungen. Beispielsweise könnte man einen Taschenrechner aus Microservices abbilden. D.h. Addieren, Subtrahieren, usw. wären einzelne Microservices. Eine Rechenaufgabe würde so an viele unterschiedliche Microservices aufgeteilt.
genannt.
Fazit
Nach der Aufstellung der Hard- und Software ist alles bereit damit einem Raspberry Pi Kubernetes Cluster zu bauen. In den folgenden Artikeln geht es um einzelne spezielle Themen. Beginnen werde ich mit einer allgemeinen Konfiguration die für alle Raspberry Pis vom Cluster notwendig sind.
Alle Artikel dieser Serie: