Suchen

Leichtgewichtiges Kubernetes-Linux von Rancher K3OS – Betriebssystem für Container Cluster

| Autor / Redakteur: Mirco Lang / Stephan Augsten

Kubernetes muss nicht mehr aufwändig eingerichtet und das darunter liegende Linux nicht mehr aufwändig optimiert werden – dank „K3OS“ aus dem Hause Rancher Labs.

Firmen zum Thema

Das Logo der Linux-Distribution k3os von Rancher.
Das Logo der Linux-Distribution k3os von Rancher.
(Bild: Rancher Labs)

Rancher Labs ist zunächst mal für die gleichnamige Kubernetes-Verwaltung, die den Umgang mit Clustern, Apps, Pods & Co. deutlich vereinfacht. Ebenso bekannt sind sie für die darin verwendete leichtgewichtige(re) Kubernetes-Distribution „k3s“, benannt in Anlehnung an die übliche Kubernetes-Abkürzung „k8s“, die das ganze System in eine einzelne Binary packt.

Darauf basiert auch k3s, das einfach per ISO-Image in einer virtuellen Umgebung oder dedizierter Hardware installiert wird und sofort startbereit ist. Startbereit heißt hier tatsächlich, dass sofort ein Single Node Cluster zur Verfügung steht und Anwendungen installiert werden können.

Das Betriebssystem verfolgt dabei drei Kernziele: Minimales k3s-Kubernetes, Verwaltung über das Standardwerkzeug „kubectl“ und eine Installation, die die einfache Erstellung von System-Images erlaubt. Die Pakete dazu stammen hauptsächlich von „Alpine“, der Kernel von Ubuntu 18.04 LTS.

Reduktion auf das Wesentliche

Als minimalistisches System bietet K3OS freilich keine grafische Oberfläche und generell läuft im System tatsächlich nur, was auch wirklich laufen muss. Entsprechend niedrig sind auch die Systemanforderungen: Ein Gigabyte Arbeitsspeicher genügt für die „lokale“ Installation, wenn Sie also K3OS aus einem laufenden Linux heraus auf einen Datenträger aufspielen; dafür steht ein Skript auf der GitHub-Seite bereit. Die Live-Installation über das ISO-Image benötigt zwei Gigabyte.

Interessant ist vor allem die Struktur des Dateisystems von K3OS, das sich auf folgende Ordner beschränkt:

  • /etc – Inhalte sind flüchtig
  • /usr – Read-only, außer /usr/local
  • /k3os – Systemdateien
  • /home – persistent
  • /var – persistent
  • /opt – persistent
  • /usr/local – persistent

Jegliche Konfiguration im laufenden Betrieb unter /etc werden also beim Neustart rückgängig gemacht. Permanente Änderungen werden über die Systemdatei /k3os/config.yaml erledigt, die die Systemkonfiguration zur Boot-Zeit festlegt. Entsprechend einfach ist es, bei K3OS mit Einstellungen zu experimentieren.

Und auch das als Kernziel genannte einfache Remastering des ISOs findet sich hier wieder: Sie kopieren – von dem CD-ISO, nicht dem laufenden System – lediglich den Ordner /k3os, passen die GRUB-Konfiguration an und erstellen daraus ein neues startbares ISO mit dem „GRUB“-Notfall-Medium-Ersteller „grub-mkrescue“.

Bei K3OS ist das Drumherum tatsächlich sehr angenehm schlank ausgefallen, es gibt für einen schnellen Start mit Kubernetes-Clustern schlicht so gut wie Null Overhead. Man kann sich also ganz auf die eigentliche Cluster- und App-Verwaltung, also vor allem auf das Programm kubectl und YAML-Konfigurationen konzentrieren.

Auch die Dokumentation ist eher schlank. Die K3OS-Website ist nur eine schicke Weiterleitung zur „Github“-Seite, die alles Wichtige kurz und bündig schildert, vor allem aber auch eine Referenz für die zentrale Konfigurationsdatei config.yaml beinhaltet. In zwei, drei Stunden ließen sich vermutliche alle Inhalte auch praktisch nachvollziehen. Mehr braucht es – vorerst – aber auch gar nicht, die eigentliche Arbeitet wartet schließlich in Kubernetes. Apropos Praxis:

K3OS einrichten

Schneller als mit K3OS ist es derzeit vermutlich nicht möglich, ein komplettes System samt Cluster und Beispiel-App aufzusetzen. Im Folgenden sind alle unbedingt notwendigen Schritte beschrieben, um letztlich eine „Hello-World“-Anwendung im Browser aufrufen zu können. Mit „Virtual Box“ funktioniert K3OS wunderbar, aber Anwender können auch auf Bare Metal arbeiten.

Zunächst wird eine virtuelle Maschine erstellt, vorzugsweise mit mindestens 3 Gigabyte Arbeitsspeicher und 2 CPUs – schließlich brauchen auch die Anwendungen ein paar Ressourcen. Als Netzwerkmodus sollten Admins der Einfachheit halber die Netzwerkbrücke wählen.

Gebootet wird nun vom heruntergeladenen ISO-Image. Nutzer landen auf der Kommandozeile und können sich mit dem Nutzernamen „rancher“ anmelden, ein Passwort ist nicht gesetzt.

Die Installationsroutine startet mit „sudo k3os install“. Es folgen einige Abfragen, bei denen zwei etwas Aufmerksamkeit verlangen: Zum einen sollten die Frage verneint werden, ob ein „cloud init file“, also eine Konfiguration aus der Cloud verwendet werden soll. Auch den SSH-Zugriff für Github-Nutzer ist besser zu verweigern, da zumindest in der hier genutzten Version (v0.10.1-rc1), der Prozess sonst abbricht. Das wiederum führt dazu, dasssich kein Passwort generieren lässt, welches aber beim nächsten Login benötigt wird.

Ist das Passwort vergeben, starten kann die VM starten. DieAnmeldung erfolgt wieder mit dem Nutzer „rancher“.

Zum Testen, ob das System läuft, ist „kubectl get all“ einzugeben.

Nun können Admins eine Beispielanwendung installieren, eine schlichte „Website“ mit dem Text „Hello Kubernetes!“. Installieren wird mit ...

kubectl apply -f https://k8s.io/examples/service/load-balancer-example.yaml

... und getestet, ob das Deployment funktioniert hat:

kubectl get deployments hello-world

Die App läuft, muss aber von außen zugänglich gemacht werden, hier als Load Balancer und mit dem Namen „my-service“:

kubectl expose deployment hello-world --type=LoadBalancer –name=my-service

Zum Aufrufen des Service wird die externe IP sowie der Port benötigt; beides bekommt der folgende Befehl:

kubectl get services my-service

Nun können die installierte und exponierte Anwendung im Browser des Hosts (daher die Netzwerkbrücke) oder auch direkt auf der Kommandozeile aufgerufen werden, ein einfaches ...

curl http://192.168.178.100:8080

... genügt, um die Ausgabe „Hello Kubernetes!“ zu triggern.

So ein K3OS-Kubernetes-Cluster ist schnell aufgesetzt und sofort einsatzbereit – aber es fehlt eine grafische Oberfläche für das System und soweit auch für Kubernetes. Die nächst zügige Alternative ist vermutlich der Einsatz von Rancher auf einem ganz normalen Linux, vorzugsweise ein aktuelles „Ubuntu“. Rancher bietet eine komfortable Web-Oberfläche und darin auch eine „kbctl“-Konsole für die native Steuerung.

K3OS hat das Licht der Welt am 16. April 2019 als Version v0.1.0 erblickt und steht seit Kurzem als v010.1 zum Download zur Verfügung. Es ist also noch ein sehr junges Projekt. Und so regelrecht verblüffend einfach der Einsatz eines Clusters mit K3OS ist, so zeigt ein Blick in die Issues-Pipeline auf Github, dass durchaus noch Arbeit wartet.

Ein Blick in das Netz zeigt aber auch, dass das Interesse an K3OS groß ist. Das liegt vermutlich daran, dass K3OS Zeit und/oder Know-How einsparen könnte. Derzeit ist K3OS jedenfalls die wohl einfachste Möglichkeit, einen Cluster in Betrieb zu nehmen, und langfristig ein sehr spannendes Projekt, das sich im Auge zu behalten lohnt.

(ID:46665707)

Über den Autor

 Mirco Lang

Mirco Lang

Freier Journalist & BSIler