Virtuelle Realität

Kubernetes und die Erlang VM: Orchestrierung im Großen und im Kleinen

Virtuelle Realität
Kubernetes and the Erlang VM: orchestration on the large and the small (2019)

Ein umfassender Einblick in die synergetische Nutzung von Kubernetes und der Erlang VM, die unterschiedliche Ebenen der Orchestrierung adressieren und sich optimal ergänzen, um robuste, skalierbare und fehlertolerante Anwendungen zu ermöglichen.

Die moderne Softwareentwicklung steht vor der Herausforderung, Systeme zu schaffen, die sowohl skalierbar als auch Fehlertolerant sind. Zwei Technologien, die in diesem Kontext besonders hervorstechen, sind Kubernetes und die Erlang VM. Beide bieten Orchestrierungslösungen an, sie operieren jedoch auf sehr unterschiedlichen Ebenen und ergänzen sich ideal, um sowohl große Cluster als auch einzelne Anwendungsinstanzen effektiv zu steuern. Dieser Beitrag beleuchtet die Besonderheiten und Synergien beider Technologien und erklärt, warum sie gemeinsam eingesetzt eine robuste Grundlage für verteilte Systeme bilden. Kubernetes, auch kurz K8s genannt, hat sich als De-facto-Standard zur Orchestrierung von Containern etabliert.

Es ermöglicht die automatische Verwaltung, Skalierung und Selbstheilung von Anwendungen innerhalb eines Clusters. Dabei überwacht Kubernetes ständig den Zustand der Container, startet sie bei Fehlern neu und sorgt dafür, dass die gewünschte Anzahl an Instanzen vorhanden ist. Der Fokus liegt hierbei auf der Steuerung von Ressourcen auf Clusterebene und der Gewährleistung von Ausfallsicherheit über die Grenzen einzelner Maschinen hinweg. Die Erlang VM hingegen ist eine virtuelle Maschine, die auf das Ausführen von Programmen ausgelegt ist, die mit dem Erlang-Sprache, beziehungsweise deren Ableger Elixir, geschrieben sind. Seit Jahrzehnten bewährt sie sich in hochverfügbaren Systemen wie beispielsweise im Finanzsektor oder in der Telekommunikation.

Die besondere Stärke der Erlang VM liegt in ihrem Modell der Fehlerbehandlung und Parallelität auf Prozessebene. Eingebettet in das OTP (Open Telecom Platform)-Framework bietet sie Mechanismen zur Überwachung und automatischen Wiederherstellung von Softwarekomponenten innerhalb einer einzelnen Anwendung. Der erste und vielleicht grundlegendste Punkt, an dem Kubernetes und die Erlang VM beide Gemeinsamkeiten aufweisen, ist das Konzept der Selbstheilung. Kubernetes erkennt fehlerhafte Container und startet sie neu oder ersetzt sie automatisch, um den Zustand des Clusters aufrechtzuerhalten. Auf der anderen Seite ermöglichen Erlang und Elixir eine Fehlerbehandlung direkt in der Anwendung durch Supervisoren, die einzelne Teile des Systems überwachen und im Fall von Fehlern selektiv neu starten.

Während Kubernetes somit die Fehlertoleranz auf der Ebene der Infrastruktur oder des Clusters abdeckt, findet die Fehlerbehandlung bei Erlang/Elixir im Inneren der Applikation statt. Ein praktisches Beispiel verdeutlicht diese Unterscheidung: Wenn eine Datenbank vollständig ausfällt, wird dies vom Kubernetes-Cluster erkannt, der betroffene Container wird als nicht gesund markiert und neu gestartet oder auf einem anderen Knoten neu bereitgestellt. Dies ist ein Ausfall des gesamten Knotens, der von Kubernetes effizient behandelt wird. Anders sieht es bei partiellen Fehlern aus, etwa wenn einzelne Datenbankverbindungen sporadisch fehlschlagen, beispielsweise aufgrund von Limits bei vorbereiteten MySQL-Abfragen. Solche Fehler führen nicht zwangsläufig zu einem kompletten Ausfall des Containers, sind aber kritisch für den reibungslosen Betrieb der Anwendung.

Die Erlang VM bietet hier eine granularere Kontrollmöglichkeit, indem sie sicherstellt, dass fehlerhafte Verbindungen erkennt, abbaut und durch neue ersetzt werden – all dies ohne dass ein Neustart des Containers erforderlich ist. Damit verbunden ist auch das Fehlermanagement bei Teilzuständen einer Anwendung. Nehmen wir die Situation einer Nachrichtenseite, bei der nur das Live-Aktien-Ticker-Modul ausfällt. Während Kubernetes hier eventuell den gesamten Pod neu starten würde, erlauben die Supervisors in Erlang oder Elixir mehrstufige Fehlerstrategien, bei denen das Hauptsystem weiterhin läuft und nur der betroffene Teilbereich neu gestartet wird oder alternative Strategien zum Einsatz kommen. So kann beispielsweise entschieden werden, ob der Dienst weiter mit veralteten Daten läuft oder ob ein Fehler propagiert wird.

Neben der Selbstheilung teilen Kubernetes und die Erlang VM weitere Gemeinsamkeiten im Bereich der Skalierbarkeit und Verteilung. Kubernetes übernimmt dabei die horizontale Skalierung von Containern über mehrere Knoten hinweg. Hiernach kann die Anzahl der Pods flexibel je nach Last angepasst werden. Die Erlang VM bietet ebenfalls integrierte Unterstützung für verteilte Systeme – das sogenannte Distributed Erlang. Damit können Anwendungen auf mehreren Maschinen laufen und über Nachrichtenaustausch miteinander kommunizieren, ohne dass Entwickler sich explizit um Serialisierung oder Verbindungsmanagement kümmern müssen.

Distributed Erlang ermöglicht eine effiziente Verteilung von Prozessen innerhalb eines Clusters gleicher Instanzen, beispielsweise um in Echtzeit Nutzer in einem Chat-Raum zu synchronisieren oder lokale Caches auf den gleichen Stand zu bringen. Die Kommunikation erfolgt direkt auf VM-Ebene, was eine sehr schlanke und performante Infrastruktur ohne zusätzliche externe Protokolle schafft. Allerdings übernimmt die Erlang VM nicht die Service-Discovery, also die automatische Erkennung neuer Knoten im Netzwerk. Hier kommt wieder Kubernetes ins Spiel: Das integrierte Service Discovery-Feature von Kubernetes erleichtert das Finden neuer Pods und somit die automatisierte Verbindung und Vernetzung von Erlang Knoten im Cluster. Tools wie die Bibliothek libcluster automatisieren diesen Prozess und ergänzen so Distributed Erlang perfekt.

Ein interessanter Vergleichspunkt ist auch der Einsatz von Remote Procedure Call (RPC)-Protokollen wie gRPC oder Thrift. Diese eignen sich hervorragend für heterogene Systeme, bei denen unterschiedliche Services in verschiedenen Sprachen miteinander kommunizieren. Im Gegensatz dazu ist Distributed Erlang ideal für homogene Systeme, bei denen alle laufenden Instanzen dieselbe Plattform nutzen und über die VM direkt kommunizieren können. Dadurch entfallen zusätzliche Serialisierungs- oder Protokollschichten, was die Entwicklung und Betrieb auch bei hochdynamischen Topologien vereinfacht. Das Deployment stellt eine weitere Facette dar, in der Kubernetes und die Erlang VM unterschiedlich agieren.

Kubernetes bietet standardisierte Mechanismen für automatisierte Rollouts, bei denen neue Versionen einer Anwendung schrittweise ausgerollt werden, um Ausfallzeiten zu minimieren. Dies beinhaltet unter anderem Blue-Green-Deployments oder Canary Releases, bei denen die Aktualisierung sequentiell erfolgt, ohne den gesamten Cluster gleichzeitig zu beeinflussen. Demgegenüber steht die Eigenschaft der Erlang VM, sogenannte Hot Code Swaps durchzuführen. Dabei handelt es sich um die Fähigkeit, Anwendungslogik zur Laufzeit zu aktualisieren, ohne Instanzen neu starten zu müssen. Dies ist besonders bei Systemen wichtig, die unterbrechungsfrei laufen müssen, wie zum Beispiel in der Telekommunikation.

Allerdings ist Hot Code Swapping ausgesprochen komplex in der Umsetzung und erfordert sorgfältige Planung, beispielsweise bei Datenbankmigrationen, um Inkonsistenzen zwischen alten und neuen Versionen zu vermeiden. Die meisten modernen Deployments setzen daher eher auf die Kubernetes-Mechanismen und verzichten auf Hot Code Swapping, es bleibt aber eine besondere Stärke der Erlang VM für Spezialfälle. Auf der Ebene der Konfiguration verwalten beide Technologien Einstellungen, allerdings mit unterschiedlichen Schwerpunkten. Erlang und Elixir bieten APIs zur Konfiguration von Anwendungen auf Code-Ebene, was eine direkte Anpassung während der Laufzeit unterstützt. Kubernetes wiederum ermöglicht die Verwaltung von Konfigurationen und sensiblen Daten (Secrets) auf Clusterebene, die in Containern als Umgebungsvariablen oder Dateien verfügbar gemacht werden können.

Die Kombination beider Ansätze lässt sich elegant über sogenannte Configuration Providers realisieren, die seit Elixir 1.9 Teil der Sprache sind. So kann ein Anwendungsrelease automatisch Konfiguration aus Kubernetes beziehen, womit die Verwaltung ressourcenintensiver und sicherheitskritischer Parameter flexibel und zentral erfolgen kann. Ein praktischer Hinweis für den Einsatz in Kubernetes betrifft die Ressourcenplanung für Erlang-Anwendungen. Während bei vielen Technologien das Aufteilen von Hardware in viele kleine Container üblich ist, kann dies bei der Erlang VM kontraproduktiv sein.

Die VM ist darauf ausgelegt, CPU- und I/O-Ressourcen effizient gemeinsam zu nutzen. Daher ist es oftmals sinnvoller, einem einzelnen Pod größere Ressourcen zuzuweisen, anstatt viele kleine aufzusetzen. Dadurch wird die Auslastung optimiert und die Leistung der Applikation verbessert. Gleichzeitig kann die VM bei Shared Hosting-Umgebungen angepasst werden, um beispielsweise busy waiting zu reduzieren und so die CPU-Nutzung zu drosseln, was wiederum gut für das Nebeneinander verschiedener Anwendungen ist. Zusammenfassend lässt sich sagen, dass Kubernetes und die Erlang VM unterschiedliche, aber komplementäre Ebenen der Orchestrierung bedienen.

Kubernetes organisiert und verwaltet Ressourcen auf Cluster- und Container-Ebene, während die Erlang VM beim Programm selbst für Fehlertoleranz und Verteilung sorgt. Während Kubernetes größere Infrastruktur-Ausfälle handhabt, deckt die Erlang VM Fehler auf Komponentenniveau ab. Diese klare Arbeitsteilung bietet eine robuste Basis, von der moderne verteilte Systeme profitieren. Die Kombination ist besonders reizvoll, weil traditionelle Herausforderungen in der Softwareentwicklung – wie beispielsweise feingranulares Fehlermanagement, dynamische Skalierung und einfache Kommunikation – nun über zwei bewährte Technologien mit unterschiedlichen Zuständigkeitsbereichen gelöst werden können. Entwickler können so in der Applikation auf die Mechanismen der Erlang VM bauen und gleichzeitig über Kubernetes eine hohe Verfügbarkeit und effizientes Ressourcenmanagement auf Cluster-Ebene sicherstellen.

Das Zusammenspiel beider Welten eröffnet vielfältige Möglichkeiten insbesondere für den Aufbau verteilter Echtzeit-Anwendungen und hochverfügbarer Systeme. Letzten Endes zeigt sich, dass Kubernetes und Erlang nicht als Konkurrenten, sondern als Partner zu sehen sind, die einander ergänzen und gemeinsam ein leistungsfähiges Ökosystem für moderne Cloud-native Anwendungen bereitstellen. Für Teams, die auf Elixir oder Erlang setzen, bietet Kubernetes bewährte Infrastruktur-Tools, während die VM die Softwarearchitektur auf der Mikroebene orchestriert. Das gemeinsame Verständnis von Selbstheilung, Skalierbarkeit und Fehlertoleranz schafft dabei nicht nur Parallelen, sondern auch Synergien, die in der Praxis zu deutlich besseren Ergebnissen führen können.

Automatischer Handel mit Krypto-Geldbörsen Kaufen Sie Ihre Kryptowährung zum besten Preis

Als Nächstes
It's the System, Stupid: the IA Paradox
Montag, 16. Juni 2025. Das System macht den Unterschied: Das KI-Paradox in der Softwareentwicklung

In der modernen Softwareentwicklung zeigt sich ein Paradoxon beim Einsatz von Künstlicher Intelligenz, das weit über individuelle Produktivitätssteigerungen hinausgeht. Ein ganzheitlicher Blick auf den Entwicklungsprozess offenbart, wie KI-Tools oft lokale Verbesserungen zulasten des Gesamtsystems verursachen und warum ein systemischer Ansatz entscheidend für nachhaltigen Erfolg ist.

Modular's bet to break out of the Matrix (Democratizing AI Compute, Part 10)
Montag, 16. Juni 2025. Modular: Der Durchbruch aus dem Matrix-Problem – Demokratisierung von KI-Compute neu gedacht

Die Zukunft der KI-Infrastruktur steht vor einer Revolution. Modular verfolgt mit einem innovativen Ansatz das Ziel, KI-Compute zu demokratisieren, Entwickler zu befähigen und die Grenzen der etablierten Systeme wie CUDA zu überwinden.

China and US agree to slash tariffs
Montag, 16. Juni 2025. Chinas und USAs bahnbrechende Einigung zur Senkung von Zöllen stärkt den globalen Handel

Die vereinbarte Zollsenkung zwischen China und den USA markiert einen wichtigen Wendepunkt in den internationalen Handelsbeziehungen und schafft neue Chancen für wirtschaftliches Wachstum und Zusammenarbeit.

Show HN: Browser-based screen recorder (for bug reporting)
Montag, 16. Juni 2025. Bildschirmaufnahme leicht gemacht: Der browserbasierte Screen Recorder für effizientes Bug Reporting

Ein umfassender Einblick in einen innovativen, browserbasierten Screen Recorder, der Fehlerberichte revolutioniert. Die Lösung ermöglicht mühelose Bildschirmaufnahmen ohne Installation und schützt dabei die Privatsphäre der Nutzer.

Trump dinner for meme coin buyers prompts senators to demand ethics probe
Montag, 16. Juni 2025. Ethik-Debatte um Trump-Dinner für Meme-Coin-Investoren entfacht politische Diskussion in den USA

Die Einladung von Präsident Trump zu einem privaten Dinner für Investoren seines Meme-Coins $TRUMP sorgt für umfangreiche ethische und politische Kontroversen. Senatoren fordern eine Prüfung möglicher Korruptionsvorwürfe und untersuchen die Verbindung zwischen politischem Einfluss und digitalen Vermögenswerten.

How much inventory did companies actually build ahead of tariffs?
Montag, 16. Juni 2025. Wie viel Inventar haben Unternehmen tatsächlich vor den Zöllen aufgebaut?

Eine eingehende Analyse, wie Unternehmen auf bevorstehende Zölle reagiert haben und in welchem Ausmaß sie ihre Lagerbestände im Vorfeld erhöhten, um wirtschaftliche Herausforderungen abzufedern.

Inflation data, trade talks in focus: What to watch this week
Montag, 16. Juni 2025. Inflationsdaten und Handel: Worauf Anleger und Wirtschaft in dieser Woche achten sollten

Aktuelle Entwicklungen in den Inflationszahlen und bedeutende Handelsgespräche zwischen den USA und China prägen die wirtschaftliche Lage und beeinflussen die Märkte. Die kommenden Tage bieten wichtigen Einblick in die zukünftige wirtschaftliche Entwicklung und Handelsbeziehungen.