einfaches Kubernetes Setup mit Rancher
Rancher und RancherOS sind seit einiger Zeit schon ein Geheimtipp, wenn es darum geht Container Workloads unter einer einheitlichen Oberfläche zu managen.
Projekte wie RancherVM (KVM innerhalb von Docker Containern) zeigen, dass Rancher sich versucht durch innovative Themen von der Konkurrenz (z.B. coreOS) abzugrenzen.
Mit Rancher 2.0 ist die Unterstützung für Kubernetes gekommen. Rancher 2.0 existiert aktuell in einer Tech-Preview, wir wollen aber ein paar erste Schritte unternehmen, um die neuen Features zu testen.
Das Setup
Die Basis des Setups ist ein Vagrant File, welches die notwendigen VMs erstellt. Hierzu wird nur eine Installation von VirtualBox, sowie Vagrant benötigt.
Aktuell haben die Knoten folgende Konfiguration:
- 1 Rancher Knoten (Master) mit 2 CPUs und 2G RAM
- 3 Cluster Knoten (Node1-3) mit 2 CPUS und 4G RAM
Die Netzwerk Bridge geht auf en0: Ethernet (was der Standard unter MacOS sein sollte). Bevor ihr startet, solltet ihr die Konfiguration so anpassen, wie es die Ausstattung eures Hosts erlaubt.
Die Docker Version ist fest auf docker-ce-17.09.1.ce-1.el7.centos.x8664_ eingestellt, da neuere Versionen (zum aktuellen Zeitpunkt ist dies 17.12) aktuell noch nicht mit Rancher 2.0 funktionieren.
Ein einfaches vagrant up
führt alle notwendigen Schritte aus, damit die vier Knoten gestartet werden.
Als nächstes wollen wir die IP des Master Servers heraus bekommen. Wie melden uns mit vagrant ssh master
per SSH auf dem Master Knoten an. Ein ip addr show | grep enp0s8
liefert uns die IP der VM:
3: enp0s8: <broadcast,multicast,up,lower_up>mtu 1500 qdisc pfifo_fast state UP qlen 1000 inet 192.168.168.76/24 brd 192.168.168.255 scope global dynamic enp0s8 </broadcast,multicast,up,lower_up>
Wir können nun in einem Browser 192.168.168.76:8080 öffnen.
Hinzufügen der Hosts
Nun wählen wir add Hosts:
Dann bestätigen wir:
Am Ende verwendet wir Custom um den Befehl zum hinzufügen von Hosts zu erhalten:
Wir melden uns nun nach und nach auf den unterschiedlichen Knoten an z.B. mit vagrant ssh node1
auf node1.
Dann führen wir obigen Befehl aus.
Nachdem die Docker Images heruntergeladen und der Rancher Agent gestartet worden sind, erscheint nach einer weile folgende Meldung im Rancher UI:
Nachdem wir alle Nodes hinzugefügt haben, erhalten wir folgende Hosts Ansicht:
Installieren von Kubernetes
Nun wählen wir unter Apps die Option Launching from Catalog. Durch wahl des Filter Library erhalten wir alle Pakete für Kubernetes:
Eine manuelle Installation würde aktuell aber nun zu seinem Fehler führen, da der Namespace kube-system noch nicht existiert. Wir können aber eine Abkürzung nehmen.
Unter Containers im Tab Advanced finden wir die Option:
Diese erstellt automatisch den Namespace kube-system und startet einen kubernetes Dashboard Container.
Das Dashboard zeigt nun auch schon unsere drei Knoten als Teil des Kubernetes Cluster:
Wenn wir nun im Rancher UI wieder auf unsere Hosts Übersicht wechseln, sehen wir auch, dass ein Container auf node2 läuft.
In der Übersicht von node2 sehen wir auch eine detailierter Ansicht über alle Container, sowie die Metriken der Node.
Und somit erhält man sehr einfach einen Kubernetes Cluster :-).
Nun lassen sich auch die weiteren Pakete wie Helm oder Tiller installieren.
Neben Kubernetes gibt es eine Reihe weiterer, fertige Templates wie Grafana, Jenkins und AdMiner.
Abräumen
Ein einfaches vagrant destroy
im Projektverzeichnis entfernt übrigens wieder restlos alle gestarteten VMs.