Software Engineering

Serverless

Industrien

Banken & Versicherungen

Öffentlicher Sektor

Transport & Logistik

Automobil & produzierendes Gewerbe

Sei Teil unserer Community

Arbeit als Cloud Consultant

Im Ozean der Kubernetes Distribution – Eine Vereinfachung durch Strukturierung

Jul 17, 2023 | Kubernetes

Der Artikel behandelt das Thema Kubernetes, ein Open-Source-System zur Container-Orchestrierung, und seine verschiedenen Distributionen. Er beleuchtet die Rolle der Cloud Native Computing Foundation (CNCF) bei der Zertifizierung und Weiterentwicklung von Kubernetes und diskutiert, wie die Wahl der passenden Kubernetes-Distribution vom spezifischen Anwendungsfall abhängt.

Autor: Sebastian Manns

Ozean Steuerrad als Symbol für Kubernetes

Einleitung

Kubernetes ist ein Open-Source-System zur Container Orchestrierung. Durch den immer weiter steigenden Einsatz von Containern in Softwarelandschaften erhalten diese ein Höchstmaß an Flexibilisierung. Basierend auf dieser Technologie hat sich ein Ökosystem an unterschiedlichen Distributionen entwickelt, die in ihrem Kern auf Kubernetes aufbauen. Sie spezialisieren Kubernetes und schaffen Mehrwerte. Die einen beschränken Kubernetes auf ein absolutes Minimum, um ein leichtgewichtiges und schnell anzuwendendes Cluster zu erzeugen, andere fügen mehr Funktionalität (aber daher auch mehr Komplexität dem Stack) hinzu und erzeugen Ökosystem für den umfangreichen, professionellen Einsatz. Seit der Veröffentlichung von Kubernetes 2014 sind aktuell insgesamt 67, durch die CNCF, zertifizierte Ableger gelistet. Auch wenn sich alle Distributionen unterscheiden können sie nach ihrer Spezialisierung gruppiert werden.

Cloud Native Landscape

Kategorisierung der Kubernetes Distributionen

Reine Distributionen

Diese Plattformen belassen Kubernetes in einer sehr reinen Form. Sie liefern ein vorgefertigtes bzw. ein nur vorgefertigtes Kubernetes. In der Regel kann hierbei der Nutzer frei entscheiden, welche zusätzliche Komplexität er in die containerisierte Landschaft einfügt. Diese Distributionen entsprechen ziemlich genau dem Standard Kubernetes, vereinfachen häufig jedoch die Installation und den Einsatz. Beispiel für diese Kategorie ist “vanilla“ Kubernetes.

Erweiternde Distributionen

Als erweiternde Distributionen können Plattformen beschrieben werden, die Kubernetes von Haus aus mit zusätzlichen Funktionen versorgen. Mitunter kann diese neue Komplexität vieles vereinfachen. Sie integrieren andere, spezifische Technologien in die Landschaft. Beispielsweise liefern sie vorgefertigte Installationspakete für weitere Betriebssysteme, schaffen die Möglichkeit weitere Container-Laufzeiten einzusetzen oder bieten Erweiterungen auf der Steuerungsebene. Sie beinhalten Kubernetes und ergänzen es mit einem ganzen Stack an Erweiterungen und schaffen dadurch eine massive Erweiterung an Funktionalität. Beispiele für die Kategorie sind Rancher oder OpenShift.

Kubernetes-as-a-Service

Der heutige Trend geht mehr und mehr in Richtung des Betriebs von Anwendungen in der Cloud. Als Managed Service genutzt, werden sie inzwischen von den wichtigsten Cloud-Anbietern angeboten. Allerdings werden dazu Distributionen verwendet, die vom Anbieter vorgegeben werden. Für den Nutzer vorteilhaft ist, dass er sich nicht um den Betrieb des Clusters kümmern muss. Er verwendet die APIs des Kubernetes Service  und muss sich nicht um die Administration kümmern. Nachteilig hingegen sind hierbei die geringen Konfigurations- und Anpassungsmöglichkeiten. Jedoch ist die Erweiterung mit ergänzenden Services, wie einer Service Discovery einfach, da diese meist ebenfalls angeboten werden. Beispiele für diese Kategorie sind AWS EKS, Azure AKS oder Google GKE.

Limitierte Distributionen

In diese Kategorien fallen Kubernetes Distributionen, die für einen bestimmten oder begrenzten Zweck entwickelt wurden. In der Regel handelt es sich um sehr leichtgewichtige Distributionen. Sie eignen sich beispielsweise für den Einsatz im Edge-Computing, also auf sehr minimalistischer Hardware oder sie ermöglichen eine einfache Installation auf den Geräten eines Entwicklers. Relativ einfach kann so ein Single-Node oder gar ein High-Availability Cluster erzeugt und zu Testzwecken verwendet werden. Beispiele sind MiniKube, Kind, MicroK8s oder K3s. Ergänzend können Sonderfälle wie beispielsweise KubeVirt hinzugezählt werden. Diese Plattform erweitert Kubernetes durch LibVirt und KVM um zusätzlich zu reinen Containern Orchestrierungsmöglichkeiten für virtuelle Maschinen zu schaffen.

Kubectl kann sowohl mit einem Kubernetes Cluster in k3s, als auch mit Kubernetes Basis Ressourcen in OpenShift verwendet werden. Openshift bietet hier eine erweiterte CLI-Implementierung von kubectl via oc an, welche alle erweiterten Openshift Ressourcen unterstützt. Im Kern betreiben Tools aller Kategorien ein Kubernetes-Cluster und entnehmen entweder Alpha- und Beta-Features oder ergänzen den Stack durch zusätzliche Funktionalität. Dadurch vereinfachen sie in der Regel nicht nur die Installation und Vorbereitung der Nodes, sondern schaffen abhängig vom Anwendungsfall eigene Mehrwerte.

Ausgewählte Kubernetes Distributionen

Reine Distributionen

Als reine Distributionen gelten jene, die im Vergleich zum Basis Kubernetes kaum oder nur geringe Änderungen aufweisen. Die Nutzung des Standards bzw. des „vanilla“-Kubernetes wäre hier die richtige Lösung. Da bereits eingangs viel dazu gesagt wurde, entfällt eine weitere Beschreibung.

Limitierte Distributionen

Zu den kleinsten Lösungen, den Limitierten Distributionen, gehört K3s. Ein Ziel bei der Entwicklung war es, ein Tool zu schaffen das, im Vergleich zum ”Standard Kubernetes”, nur die Hälfte des Speicherbedarfs benötigt. Daher auch der Name. Das Wort „Kubernetes“ besteht aus 10 Zeichen (K8s). Das neue Tool sollte daher aus fünf Zeichen bestehen, da nach der gleichen Logik K8s Kates ausgesprochen wird und dies wiederum als K3s abgekürzt wird. Es stammt aus dem Hause Rancher, welches primär für seinen leistungsfähigen Orchestrator Rancher bekannt ist. K3s wurde entwickelt, um ein leichtgewichtiges Kubernetes zu schaffen, dass einfach zu installieren ist und einen minimalistischen Speicherbedarf aufweist. Entstanden ist eine einzige Binary mit weniger als 100MB. Dadurch eignet es sich besonders für den Einsatz im Bereich Edge Computing, Internet of Things, Embedded Systems sowie zur lokalen Applikationsentwicklung.  

Andere limitierte Distributionen wie Minikube oder Kind haben mehr zum Ziel für die Entwicklung auf lokalen Computer genutzt zu werden. Sie liefern daher eine eigen CLI zur Steuerung mit. K3s hingegen ist eine vollwertige Lösung, die nicht nur im Hochverfügbarkeitsmodus eingesetzt werden kann, sondern auch produktiv auf verschiedensten Endgeräten. Deshalb stehen Installer für die Hardwarearchitekturen x86 (AMD64), ARMv7 und ARM64 bereit. Im Vergleich zu den anderen Lösungen wird es nicht in einer virtualisierten Form, zumeist Docker, betrieben, sondern läuft nativ auf dem Betriebssystem und benötigt dazu gerade 512MB Arbeitsspeicher. Als Runtime für die Container kann sowohl Docker als auch das inzwischen mehr verbreitete containerd genutzt werden.

Inzwischen besteht eine einfache Lösung um, ähnlich wie bei Minikube, lokal ein ganzes Cluster aufzusetzen. Da es durchaus schwierig ist, mehrere K3s Instanzen nativ auf einem Endgerät aufzusetzen und zu betreiben, wird daher für ein Multi-Node-Cluster auf eine containerisierte Variante, welche offiziell von Rancher bereitgestellt wird, zurückgegriffen. „K3d“ fungiert dann als Wrapper für K3s. Es liefert eine eigene CLI mit und schafft es damit, auf einfachem Wege und mit nur wenigen Kommandos ein ganzes K3s Cluster zu deployen. Dabei richtet es nicht nur die in Containern verpackten Nodes ein, sondern auch die zugehörige Infrastruktur, wie Netzwerk, Proxys und Load Balancer. Ganz besonders interessant ist die Möglichkeit zum Aufbau eines Hochverfügbarkeitsclusters. Auch hierfür erzeugt K3d, nach Angabe der Anzahl an Server- und Workernodes, die komplette Kubernetes Infrastruktur. Abschließend stellt es eine kubeconfig bereit. Durch das Laden in die kubectl kann wie gewohnt mit dem Cluster kommuniziert werden, genau so, als wenn es ein Cluster in der Cloud wäre. Diese Vorgehensweise ermöglicht somit die Entwicklung und das Testen dieser Applikationen in einem Hochverfügbarkeitscluster.

Erweiternde Distributionen

Erweiternde Distributionen verwenden Kubernetes im Kern und erweitern es an, von den Herstellern als sinnvoll, erachteten Stellen. Ihre Funktionsumfänge können dabei gewaltige Maßstäbe annehmen. Um hier sinnvolle Entscheidungen für und wider einer Lösung zu nennen, muss man verstehen mit welcher Intention die Plattformen entwickelt wurden und auf welche Funktionalität sie mit ihren Erweiterungen abzielt.

RedHats ursprünglicher Ansatz mit OpenShift, war eine Platform-as-a-Service, kurz PaasS, Lösung. PaaS Lösungen haben zum Ziel, fertig konfigurierte Angebote ihren Kunden bereitzustellen. Diese machen den Einstieg und die Nutzung sehr einfach und elegant, reduzieren im Gegenzug jedoch die Freiheit zu individualisierten Anpassungen. Für viele Nutzer daher praktisch, da sie durch die wenigen Wahlmöglichkeiten nicht überladen werden. Daraus ergibt sich der Ansatz mit OpenShift große Kubernetes Cluster zu erstellen und unabhängig zu verwalten.

Im Gegensatz dazu entspringt Rancher dem Wunsch, für die Verwaltung von Kubernetes, native Cloud-Werkzeuge in einer modularen Plattform zusammenzufassen. Gleichzeitig soll sie dem Nutzer die Wahl und Freiheit lassen, seine Umgebungen frei zu gestalten.

Weiterhing zeigt sich ein Unterschied in der Quelloffenheit. Rancher ist vollständig Open Source und kann somit frei verwendet werden. OpenShift hingegen ist kostenpflichtig und bietet zur Steigerung der Funktionalität, häufig modifizierte, weitere Open-Source Lösungen an. RedHat bietet ergänzend eine kostenlose Community Edition in Form von OKD an. Dieses basiert zwar auf den selben Grundbausteinen wie Openshift, hinkt jedoch vom Feature-Set meist um ein bis zwei Minor Versionen hinterher. Ebenso ist die Möglichkeit von Enterprise Support seitens RedHat beschränkt. Rancher hingegen verfährt ähnlich, nur mit dem Ziel ergänzende Lösung unverfälscht zu lassen und eher von außen Managementmöglichkeiten hinzuzufügen. Daraus ergibt sich der positive Nebeneffekt, dass Personen, die mit Rancher arbeiten, leichter auf andere Technologien wechseln können, wohingegen es bei OpenShift durch grundlegende Veränderungen an den Technologien schwierig ist.

Red Hats OpenShift wird von Forrester als Kernstück einer einheitlichen „Open Hybrid Cloud“-Containerplattform-Strategie bezeichnet und gilt als am weitesten verbreitete Multicloud-Container-Plattform. Funktionen wie Multicloud Management, Data und AI Services, und integrations APIs für andere Cloud Plattformen wurden durch IBM hinzugefügt. Durch den Operator Hub, einen integrierten und erweiterbaren Katalog für kuratierte und abgestimmte Erweiterungen, bietet RedHat Ergänzungen für das Openshift/OKD Ökosystem in Form von Operatoren an. In der kostenpflichtigen Variante sind solche Operatoren mit  Subscriptions und Support einfach zu erwerben, installieren und updaten. 

Dadurch wird eine deutliche Steigerung im Bereich der Entwicklung und Administration über mehrere Clouds, sowohl Public als auch On-Premise, ermöglicht.

Rancher wird durch seine Vereinfachung der Verwaltung von Multi-Cloud Kubernetes Clustern ausgezeichnet. Ebenfalls genießt es eine weite Verbreitung zum Betrieb sehr großer Cluster mit bis zu 5.000 Nodes. Es umfasst und erweitert Public-Cloud Lösungen und erlaubt einen gleichzeitigen hybriden Betrieb von Public und Private Clouds. Eine Fokussierung auf intuitive, vereinfachte DevOps Automatisierungen bei gleichzeitiger Spezialisierung darauf, Unternehmen beim Betrieb von Kubernetes in großem Maßstab und in Edge-Computing-Szenarien zu unterstützen. Rancher zeichnet sich durch sein zentralisiertes Management aus. Es verwendet eine globale Konfiguration und erlaubt Entwicklern, mit strengen Kontrollen einzelner Cluster und Namespaces, eine einfache Bereitstellung von Applikationen, deren Überwachung und Metriken sowie durch Service-Meshes auf Kubernetes Funktionen zuzugreifen, ohne sich mit Kuberntes vertraut machen zu müssen.

Fazit

In seiner Funktion als Maintainer und Zertifizierer fällt der CNCF die Aufgabe zu Kubernetes weiterzuentwickeln und dafür Sorge zu tragen, dass definierte Standards eingehalten werden. 67 derzeit zertifiziert Distributionen nutzen in ihrem Kern Kubernetes und verwenden somit die standardisierten APIs der CNCF. Durch die Gruppierung nach reinen Distributionen, limitierenden Distributionen und erweiternden Distributionen spaltet sich der Kubernetes Ozean in einzelne Seen. Für lokale Anwendungsentwicklung oder Tests ist eine limitierende Distribution wie k3s sinnvoll. Soll jedoch eine große Kuberneteslandschaft, mit dutzenden Applikation, mehreren Clustern sowohl OnPrem als auch in der Cloud hybrid betrieben werden ist der Einsatz einer erweiternden Distribution wie Rancher empfehlenswert. Sind kuratierte Versionen von OS, Managed Updates und Operator Lifecycle Management von hoher Wichtigkeit, so rückt OpenShift in den Fokus. Letztendlich bleibt die Frage nach dem Anwendungsfall um eine entscheidende Aussage dahingehend treffen zu können aus welcher Gruppe eine Distribution eingesetzt werden sollte.

Sie suchen einen Partner für Ihr Projekt?

Wir geben unser Bestes, um Sie zufrieden zu stellen.

Kostenloses Handbuch: ESG Reporting

Grundlagen bis zum automatisierten Report – Alles, was Sie wissen müssen.

Whitepaper: Enterprise ChatGPT in der Praxis

3 Anwendungsfälle mit OpenAI – datenschutzkonform mit Referenzarchitektur