K8s (Kubernetes) versus K3s (Kubernetes Light)
In Anlehnung an K8s als Abkürzung für Kubernetes kursiert auch eine alternative, linuxbasierte Kubernetes-Distribution namens K3s. Die Nutzung auf anderen Plattformen ist jedoch über Anpassungen möglich. Diese ursprünglich von Rancher Labs entwickelte Light-Version von K8s fehlen einige Funktionen (Legacy, Alpha, Nicht-Standard, In-Tree-Plugins). Außerdem wurden schwergewichtige Komponenten gegen einfachere Module ausgetauscht. So ersetzt dort beispielsweise sqlite3 das voluminöse etcd3. Derart optimiert liegt der Umfang des K3s-Binaries unter 100 MB. 2020 wurde K3s an die Cloud Native Computing Foundation (CNCF) gespendet. Bewährt hat sich K3s besonders für die Ausführung von Workloads an ressourcenarmen dezentralen Standorten oder auf IoT-Geräten.
Die Entscheidung, ob nun Docker, Kubernetes oder gleich beide Systeme zum Einsatz kommen sollten, hängt wie so oft vom konkreten Fall ab. Wie bereits im Beitrag zu Kubernetes erwähnt, geht es im Umfeld beider Systeme um die konsequente Abkehr von monolithischen Anwendungen. Ein typisches monolithisches System vereint sämtliche seiner Funktionen im zugehörigen Quellcode an einer bestimmten Stelle und läuft typischerweise auf einem bestimmten (virtuellen oder physischen) Server.
Das ist jedoch vor dem Hintergrund von Ausfallsicherheit, Skalierungsanforderungen und aus praktischen Überlegungen heraus zumindest bei Webanwendungen nicht mehr zeitgemäß. Daher werden viele Anwendungen inzwischen nicht nur in der Cloud betrieben, sondern sind sogar als "cloud native" anzusehen.
Das bedeutet, dass sie in der Cloud sowohl betrieben als auch verwaltet und weiterentwickelt werden und entsprechende Cloud-Vorteile und -Anwendungen konsequent zum Einsatz kommen. Damit das funktioniert, müssen die einzelnen Bestandteile einer Anwendung jedoch als separate Module vorliegen – sogenannte Microservices.
Der erste Schritt hin zu solchen Microservices führt über die Aufteilung des Programmcodes in einzelne, wiederverwendbare Programmbestandteile, die untereinander aufrufbar sind.
Diese Programmbestandteile wiederum lassen sich dann mit Hilfe von Docker in einzelne Anwendungs-Container "verpacken" und "in der Cloud" betreiben.
Wenn die Anwendung jedoch als "echtes" verteiltes System mit entsprechenden Absicherungen gegen Ausfälle oder mit global an jedem Ort vergleichbarer Performance laufen soll, ist es empfehlenswert, zusätzlich Kubernetes zur Orchestrierung einzusetzen.