Migration von Mesos auf Kubernetes: Warum, wann und wie?
Kubernetes ist durch seine aktive Community und Schnelllebigkeit omnipräsent. Aber für wenige Mesos-Nutzer lohnt sich der Wechsel. Es bietet sich an, beide zusammen zu verwenden.
Die IT-Industrie sucht ständig nach skalierbaren und effizienten Methoden, um Hosting-Ressourcen und Verbindungstechnologie zu Pools zusammenzufassen, mit denen anschließend Anwendungen bereitgestellt und betrieben werden. Container erfüllen dieses Bedürfnis beispielsweise besser als virtuelle Maschinen (VM) und werden entsprechend immer beliebter.
Es gibt derzeit zwei Modelle für die Bereitstellung, Orchestrierung und den Betrieb von Containern: Mesos und Kubernetes.
Beide Lösungen stammen aus dem Open-Source-Sektor. Mesos ist ein Apache-Projekt, in das Mesospheres Marathon und DC/OS eingeflossen sind. Letzteres ist ein Container-Betriebssystem. Mesos ist kein Orchestrator im eigentlichen Sinne. Vielmehr könnte man die Lösung als verteiltes Betriebssystem bezeichnen, das eine gemeinsame Abstraktionsschicht der Ressourcen, auf denen es läuft, bereitstellt.
Mesos wurde auf Skalierung und hohe Geschwindigkeit hin optimiert. Sind dies also die primären Ziele, kommt man am Mesos-Ökosystem kaum vorbei. Allerdings ist auch um Kubernetes, das aus dem Borg-Projekt von Google entstanden ist, ein ganzes Ökosystem gewachsen, das sehr viel größer und aktiver ist als das von Mesos. Kubernetes skaliert schlechter und ist weniger leistungsstark als Mesos. Doch der breite Support führt dazu, dass Kubernetes schnell aufholt und sich weiterentwickelt.
Mesos mit Kubernetes einsetzen
Kombiniert mit Marathon ist Mesos die bessere Option für größere Umgebungen und für Unternehmen, die sehr viele unterschiedliche Anwendungstechnologien gleichzeitig unterstützen, beispielsweise Java, Container und Datenbanken. Auch für Anwendungen, die Datenpersistenz brauchen (stateful sind) eignet sich Mesos besser.
Zwar gibt es Kubernetes-Komponenten für all diese Aufgaben, aber sie haben noch nicht dieselbe Reife, Leistung oder Skalierbarkeit erreicht. Daher ist es für Organisationen sinnvoll, auch bei Mesos zu bleiben, wenn die Anwendung, wegen derer Mesos eingeführt wurde, im Einsatz bleiben soll.
Eine Kubernetes-Migration ist gar nicht zwingend notwendig. Unternehmen können Kubernetes durchaus auf Mesos laufen lassen. Diese Kombination besitzt die positiven Aspekte beider Welten: die Skalierbarkeit und Leistung von Mesos sowie das sich zügig weiterentwickelnde Kubernetes-Ökosystem und seine große Entwickler-Community.
Der kombinierte Einsatz beider Plattformen schafft auch die Basis für eine vollständige Kubernetes-Migration, wenn diese doch irgendwann durchgeführt werden muss.
Bei der Evaluierung von Kubernetes kommt es nicht nur auf die Orchestrierung an. Man sollte sich auch die Föderations-, Multi- und Hybrid-Cloud-Fähigkeiten ansehen. Ein weiterer Faktor sind die Funktionen für die Vernetzung von Services zu einem Service Mesh und die Verfügbarkeit serverloser Funktionen. Wer all das nicht braucht, der hat vermutlich kein – oder zumindest noch kein – Interesse am Wechsel zu Kubernetes. Allerdings kann sich das schnell ändern.
Der Wechsel in eine voll ausgebaute Kubernetes-Umgebung bedeutet gegenüber der Verwendung von Kubernetes als reinem Orchestrator keine erheblich gesteigerte Komplexität. Die meisten Kubernetes-Ökosysteme funktionieren problemlos, wenn Kubernetes auf Mesos und DC/OS läuft.
Auch die Installation von Kubernetes auf Mesos ist unkompliziert. Es empfiehlt sich eine individuelle Installation, die auf die Ansprüche vorhandener Anwendungen zugeschnitten ist, um von der Hochverfügbarkeit und weiteren Mesos-Funktionen zu profitieren. Mesos lässt sich auch bei einer Kubernetes-Installation direkt als Basis für Frameworks wie Apache Kafka zur Verarbeitung von Echtzeit-Events oder für Hadoop, die Open-Source-Plattform für Big Data, verwenden. Kubernetes-Apps können Mesos-Services ohne Weiteres nutzen, der umgekehrte Weg ist schwieriger.
Migration von Mesos auf Kubernetes
Zieht man eine Migration von Mesos auf Kubernetes in Betracht, sollten Veränderungen der Produktionsumgebung vermieden werden, bis die Containerumgebung dauerhaft stabil ist. Am besten testet man die Kubernetes-Funktionen auf einem kleinen, separaten Mesos-Cluster und behält diesen als Testumgebung, bis die Migration abgeschlossen ist.
Jeder Migrationsschritt sollte als erstes zur Probe auf diesem Cluster vollzogen werden. Es müssen nicht gleich Laborbedingungen gegeben sein. Es reicht schon, ein Set von Anwendungen abzutrennen, um die Reichweite von Veränderungen so lange zu begrenzen, bis sie sicher laufen.
Eine erhebliche Umstellung in Hinblick auf die Funktionalität und den Effekt auf den bestehenden Betrieb, ist eine Kubernetes-Migration, die Mesos vollständig ersetzt. IT-Manager sollten daher genau überlegen, ob dieser radikale Schritt tatsächlich nötig ist. Oft bestehen nämlich die anfänglichen Gründe für die Entscheidung zu einer Mesos-Installation noch immer. Dann ist es auch langfristig akzeptabel, Kubernetes und Mesos innerhalb einer Umgebung gleichzeitig zu nutzen.
Soll Mesos vollständig ersetzt werden, migriert man Service für Service. Bei jedem Schritt ist sicherzustellen, dass die Kubernetes-Version des betreffenden Service sowohl für Kubernetes- als auch für Mesos-Anwendungen verfügbar ist.
Der Übergang auf Kubernetes, ob nun als überlagernde Technologieschicht oder vollständiger Mesos-Ersatz, braucht Zeit. Dies gilt umso mehr, wenn ein Kubernetes-Ökosystem oder Teile davon für die Multi oder Hybrid-Cloud, ein Service-Mesh oder Serverless-Umgebungen verwendet werden sollen.
Daher lohnt es sich, den Test-Cluster sorgfältig zu warten, um neue Vorgehensweisen und Funktionen zu validieren. Mit der Zeit integriert man den Testcluster in den normalen Ablauf des App-Lifecycle-Managements, zum Beispiel als Vehikel für Integrationstests oder als Entwicklungsumgebung.
Es lohnt sich, die Weiterentwicklung von beiden, Kubernetes und Mesos, im Auge zu behalten. Möglicherweise entwickelt sich Kubernetes mit der Zeit so viel schneller als Mesos weiter, dass die Kompatibilität zwischen beiden beeinträchtigt wird. Oder aber Mesos könnte kritische Funktionen und Fähigkeiten hinzufügen, die es nun attraktiver machen. Es ist daher wichtig, jeden Migrationsschritt der Organisation sorgfältig zu dokumentieren, damit er zurückgenommen oder wiederholt werden kann, wenn es notwendig werden sollte.