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

Von Mirco Lang |

Anbieter zum Thema

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.

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.

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 Website [https://k3os.io/ ] 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 sehen Sie alle unbedingt nötigen Schritte, um letztlich eine Hello-World-Anwendung im Browser aufrufen zu können. Mit Virtual Box funktioniert k3OS wunderbar, aber natürlich können Sie auch auf Bare Metal arbeiten.

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

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

Die Installationsroutine starten Sie mit „sudo k3os install“. Es folgen einige Abfragen, bei denen zwei etwas Aufmerksamkeit verlangen: Zum einen sollten Sie die Frage verneinen, ob Sie ein „cloud init file“, also eine Konfiguration aus der Cloud verwenden möchten. Auch den SSH-Zugriff für GitHub-Nutzer verweigern Sie besser, da zumindest in der hier genutzen Version (v0.10.1-rc1), der Prozess sonst abbricht. Das wiederum führt dazu, dass Sie kein Passwort generieren können, welches Sie aber beim nächsten Login benötigen.

Jetzt Newsletter abonnieren

Täglich die wichtigsten Infos zu Softwareentwicklung und DevOps

Mit Klick auf „Newsletter abonnieren“ erkläre ich mich mit der Verarbeitung und Nutzung meiner Daten gemäß Einwilligungserklärung (bitte aufklappen für Details) einverstanden und akzeptiere die Nutzungsbedingungen. Weitere Informationen finde ich in unserer Datenschutzerklärung.

Aufklappen für Details zu Ihrer Einwilligung

Ist das Passwort vergeben, starten Sie die VM und melden Sie sich wieder mit dem Nutzer „rancher“ an.

Zum Testen, ob das System läuft, geben Sie „kubectl get all“ ein.

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

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

... und testen Sie dann, 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 benötigen Sie die externe IP sowie den Port; beides bekommen Sie über folgenden Befehl:

kubectl get services my-service

Nun können Sie die installierte und exponierte Anwendung im Browser des Hosts (daher die Netzwerkbrücke) oder auch direkt auf der Kommandozeile aufrufen, 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 natürlich 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 Weboberfläche und darin auch eine kbctl-Konsole für die native Steuerung. Was genau Rancher leistet und ein paar Tipps zur Installation haben wir zusammengefasst.

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. Und es liegt die Vermutung nahe, dass dies an der Aussicht Folgendes liegt: k3OS könnte Zeit und/oder Know-How einsparen. 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:46626822)