Container-Orchestrierungs-Engines (COEs) erleichtern die Verwaltung von Container-Workloads, indem sie operative Aufgaben wie Planung, Lastenausgleich, Skalierung, Netzwerkbetrieb, Sicherstellung von Hochverfügbarkeit und Protokollverwaltung automatisieren. Kubernetes und Apache Mesos sind zwei der beliebtesten COEs.
Diese beiden Technologien verfolgen unterschiedliche Ansätze der Container-Verwaltung. Kubernetes fungiert als reiner Container-Orchestrator. Mesos ist eher ein „Betriebssystem für Ihr Rechenzentrum“.
In diesem Artikel widmen wir uns Kubernetes und Mesos und vergleichen ihre Hauptfunktionen miteinander. Zunächst wollen wir jedoch eine Einführung zu COEs und ihrer Schlüsselrolle in der Verwaltung von Containern geben.
Warum braucht man Container-Orchestrierungs-Engines?
Die meisten verteilten Anwendungen basieren heutzutage auf Containern. Container benötigen weniger Ressourcen und tragen dazu bei, die Anwendungsentwicklung schneller und sicherer zu gestalten.
Die Verwaltung von zehn oder zwanzig Containern ist recht einfach, aber mit einem Anstieg auf Hunderte oder Tausende im verteilten Netzwerk sind Teams schnell überfordert. Zwar sind Container kompakt und kurzlebig, doch ihr Betrieb in großen Clustern führt zu vielen Einzelkomponenten, die es gleichzeitig zu koordinieren gilt.
Darüber hinaus sind die meisten Container-Produktionsumgebungen komplex. Sie können mehrere Betriebssysteme (oder das gleiche Betriebssystem mit unterschiedlichen Kernel-Versionen) ausführen und über komplexe Netzwerk- und Sicherheitskonfigurationen verfügen. Multi‑Cloud- oder Hybridumgebungen tragen noch mehr zur Komplexität bei.
Und da kommen COEs ins Spiel.
COEs vereinfachen und automatisieren Aufgaben im Zusammenhang mit der Container-Verwaltung. Zu diesen Aufgaben gehören:
- Bereitstellung
- Lastenausgleich
- Container-Planung
- Ressourcenzuteilung
- Leistungsüberwachung
- Netzwerkkonfiguration
Die Automatisierung erleichtert die Ausführung großer Container-Umgebungen erheblich und entlastet das DevOps-Team, sodass es sich lohnenderen Aufgaben widmen kann.
COEs stellen auch die Anwendungsverfügbarkeit sicher, indem sie Integritätsprüfungen automatisieren. Der Lastenausgleich sorgt dafür, dass Anfragen automatisch an fehlerfreie Container-Instanzen weitergeleitet werden, und die automatische Skalierung stellt sicher, dass eine ausreichende Anzahl von Containern zur Verfügung steht, um die aktuelle Last zu bewältigen.
Kurze Einführung in Kubernetes und Mesos
Kubernetes ist das System zur Container-Verwaltung und -Orchestrierung, das 2014 von Google veröffentlicht wurde. Angesichts seiner Abhängigkeit von Docker hat Google Kubernetes entwickelt, um Container bedarfsgerecht bereitzustellen und zu planen, Cluster-Ressourcen zu verwalten, Hochverfügbarkeit zu implementieren und Anwendungsdatenverkehr weiterzuleiten.
Mittlerweile unterstützen die meisten Cloud-Dienste (einschließlich der großen Anbieter) Kubernetes und stellen Infrastruktur und Integrationen zur Ausführung von Workloads bereit, die von Kubernetes gehostet werden.
Zu den wichtigsten Kubernetes-Funktionen gehören:
- Automatische Skalierung
- Speicherorchestrierung
- Volume-Verwaltung
- Secret- und Konfigurationsverwaltung
- Automatische Rollbacks
- Batch-Ausführung
- Diensterkennung
- Automatische Lagerplatzverpackung
Kubernetes genießt zudem breite Unterstützung in der DevOps-Community, und viele Anbieter bieten kostenlose oder kommerzielle Anwendungen an, die Zusatzfunktionen zu Kubernetes hinzufügen.
Mesos ist ein verteilter Kernel, der 2009 von Promovierenden der UC Berkeley erstellt wurde. Er abstrahiert Rechenressourcen wie CPU, Arbeitsspeicher und Speicherplatz von (physischen sowie virtuellen) Computern, die über lokale oder Cloud-Mandanten ausgeführt werden. Der Mesos-Kernel läuft auf jedem Computer in verteilten Umgebungen, und sowohl containerisierte als auch nicht containerisierte Workloads können das Mesos-API zur Ressourcenverwaltung und -planung verwenden.
Wenn wir in diesem Artikel Mesos mit Kubernetes vergleichen, beziehen wir uns auf Mesos und auf Marathon. Marathon ist ein Plug‑in für das Mesosphere-Betriebssystem DC/OS („Datacenter Operating System“) und Apache Mesos, das Nutzern die einfache Verwaltung von Containern ermöglicht.
Die Mesos-Marathon-Kombination umfasst unter anderem folgende Funktionen:
- APIs
- Lineare Skalierbarkeit
- Austauschbare Isolation
- Plattformübergreifende Unterstützung
- Zweistufige Planung
- Fehlertoleranz
- Replizierter Master mit ZooKeeper
- Unterstützung für mehrere Sprachen
Mesos ist eine beliebte Wahl unter Tech‑Riesen wie Twitter, Netflix und Airbnb.
Kubernetes und Mesos im Funktionsvergleich
Bei der Bewertung einer COE-Plattform zählen Hochverfügbarkeit, Lastenausgleich, automatische Skalierung, Speicher und Netzwerkbetrieb zu den wichtigsten zu berücksichtigenden Faktoren.
Hochverfügbarkeit
Kubernetes-Pods können über mehrere Knoten (virtuelle Computer und physische Server) repliziert werden, um sicherzustellen, dass die Anwendung auch dann online bleibt, wenn einer der Cluster-Knoten ausfällt.
Die Kubernetes-Steuerungsebene verwaltet die Pods und Worker-Knoten im gesamten Cluster, und zwar auf Grundlage der Knotenintegrität. Kubernetes übernimmt die Planung sowie die Erkennung von und Reaktion auf Fehler. Sie können Kubernetes hochverfügbar machen, indem Sie eine gestapelte oder externe etcd-Topologie mit mehreren zentralen Architekturkomponenten (zum Beispiel mehreren Mastern oder etcd-Repliken) implementieren.
Bei Mesos werden Anwendungen auf Clustern mit mehreren Mesos-Agents ausgeführt, um die Verfügbarkeit zu erhöhen. Sie können Mesos hochverfügbar machen, indem Sie drei bis fünf Master, einen Leader und die restlichen Knoten als Back‑ups implementieren. Apache ZooKeeper wählt den Leader und erkennt automatisch Master, Slaves und Scheduler-Treiber.
Lastenausgleich
Kubernetes legt Pods mithilfe von „Services“ (einer Gruppe von Pods unter einem gemeinsamen Namen) nach außen offen. Dadurch können sich Dienste dynamisch gegenseitig erkennen, ohne dass unveränderbare IP-Adressen erforderlich sind. Services koordinieren Verbindungen zu Pods, um Lastenausgleichsfunktionen bereitzustellen.
Mit Kubernetes lassen sich verschiedene Lastenausgleichsstrategien implementieren, darunter:
- Round-Robin
- L4-Round-Robin-Lastenausgleich über kube-proxy
- L7-Round-Robin-Lastenausgleich
- Konsistentes Hashing/Ring-Hash
Mesos-DNS bietet grundlegende Lastenausgleichsdienste für Ihre Anwendung. Es generiert SRV-Einträge für jede Mesos-Aufgabe und übersetzt diese in die richtige IP-Adresse und den richtigen Port auf dem Rechner der Anwendung. Sie können auch Marathon-lb verwenden, um den Lastenausgleich zu erleichtern.
Mesos unterstützt erweiterte Funktionen wie zum Beispiel:
- Fixierte Verbindungen
- SSL-Offloading
- VHost-basierter Lastenausgleich, sodass Sie einzelne VMs für Ihre Anwendung angeben können
Automatische Skalierung
Mit Kubernetes können Sie eine Zielanzahl an Pods mit Bereitstellungen definieren. Um die automatische Skalierung auszulösen, können Sie auch Schwellenwerte für Ressourcenkennzahlen definieren, zum Beispiel CPU- oder Arbeitsspeicher-Auslastung.
Mesos überwacht kontinuierlich die Anzahl der Container und plant einen Container auf einem anderen Slave-Knoten ein, wenn dieser ausfällt. Die automatische Skalierung mithilfe von Ressourcenkennzahlen wird nicht nativ unterstützt, es gibt jedoch einige von der Community unterstützte Komponenten.
Speicher
Kubernetes unterstützt nicht persistente, kurzlebige Volumes wie emptyDir, configMap, downwardAPI und CSI Ephemeral zur kurzfristigen Speicherung.
Es unterstützt auch persistenten Speicher (Datei- oder Blockspeicher) einschließlich iSCSI, NFS, FC und Cloud-Speicher, wie er in AWS oder Azure verfügbar ist. Anwendungen, die auf von Kubernetes gehosteten Containern ausgeführt werden, kommunizieren nicht direkt mit dem Speicher, da Kubernetes die Ebene abstrahiert.
Mesos unterstützt persistenten lokalen Speicher auf reservierten Ressourcen für zustandsbehaftete Anwendungen. Container müssen auf demselben Knoten ausgeführt werden, da die Volumes lokal auf dem Knoten erstellt werden.
Mesos unterstützt persistenten externen Speicher, aber die Umgehung der Ressourcenverwaltung erschwert die Durchsetzung von Kontingentsteuerung, Reservierung und gleichmäßiger Auslastung.
Netzwerke
Kubernetes weist Pods eindeutige IP-Adressen zu, sodass dem Host-Port keine Container-Ports mehr zugeordnet werden müssen. Es betreibt ein Netzwerk mit flacher Topologie – mit einem für Pods und einem anderen für Services. Pods können frei mit anderen Pods und Services kommunizieren. IP-Tabellen steuern die Konnektivität zwischen Pods und verwalten die meisten Regeln für Netzwerkbetrieb und Port-Weiterleitung.
Mesos unterstützt zwei Arten des Netzwerkbetriebs: IP pro Container und Netzwerk‑Port-Zuordnung. Container erhalten ihre IPs nicht standardmäßig, aber durch die Calico-Integration erhält jeder Mesos-Container eine eigene IP. Dies verhindert Port-Konflikte, macht dynamische Port-Zuweisungen überflüssig und ermöglicht eine auf DNS‑A-Einträgen basierte Diensterkennung. Container können auf einem lokalen Host nicht miteinander kommunizieren.
Vollständige Protokollierung und Einblicke – kostenlos
Falcon LogScale Community Edition (ehemals Humio) ist eine kostenlose moderne Log-Management-Plattform für die Cloud. Durch die Erfassung von Streaming-Daten erhalten Sie einen sofortigen Überblick über verteilte Systeme und können Zwischenfälle verhindern bzw. beheben.
Falcon LogScale Community Edition ist sofort kostenlos verfügbar und bietet folgende Vorteile:
- Erfassung von bis zu 16 GB pro Tag
- Speicherung bis zu 7 Tage
- Keine Kreditkarte erforderlich
- Unbegrenzter Zugriff ohne Testzeitraum
- Indexlose Protokollierung, Echtzeit-Warnungen und Live-Dashboards
- Zugriff auf unseren Marktplatz und zugehörige Pakete, einschließlich Leitfäden zur Entwicklung neuer Pakete
- Lernen und Kooperation in einer aktiven Gemeinschaft