Beste Antwort
OpenStack ist IaaS-Cloud (Infrastructure as a Service). Es bietet Benutzern eine Schnittstelle zum Starten von Systemen mit einer bestimmten CPU / einem bestimmten Speicher / einer bestimmten Festplatte / einem bestimmten Netzwerk unter Verwendung eines Images, das auf einem bestimmten Betriebssystem basiert (+ andere Funktionen). Der Endbenutzer kann entscheiden, wie das System verwendet werden soll, nachdem Openstack ein System / VM erstellt hat. Er / Sie kann eine Anwendung Ihrer Wahl usw. installieren und deren Arbeitslast ausführen. OpenStack unterstützt mehrere Virtualisierungshypervisoren.
OpenShift ist eine PaaS-Cloud (Platform as a Service). Es bietet Benutzern eine Schnittstelle zur Auswahl einer Anwendungsplattform wie jboss / python und zur direkten Ausführung ihrer Workload mit dem anwendungsspezifischen Code / der Konfiguration, die ausgeführt werden soll. Dies wird mithilfe von Containern / Pods implementiert. Sie können die Red Hat-Registrierung für getestete / zertifizierte Container verwenden oder auch das Docker-Register oder andere Registrierungen von Drittanbietern verwenden.
Antwort
Es gibt keine Möglichkeit zum Vergleichen, da es sich meistens um Vergleiche handelt verschiedene Dinge. Trotzdem werde ich zuerst versuchen, die Notwendigkeit für jedes dieser Elemente zu definieren und sie miteinander zu verknüpfen.
Beginnen wir mit dem unteren Rand des Stapels. Sie benötigen eine Infrastruktur, um Ihre Server zu betreiben. Womit könntest du gehen? Sie können einen VPS-Anbieter wie DigitalOcean oder AWS verwenden.
Was ist, wenn Sie AWS aus nicht technischen Gründen nicht verwenden können? Beispielsweise gibt es eine gesetzliche Konformität, die besagt, dass sich die von mir gespeicherten Daten und von mir ausgeführten Server in derselben Region befinden wie die Kunden, die ich betreue, und dass AWS keine Region für dieselbe hat?
Dies ist Hier kommt OpenStack ins Spiel. Es ist eine Plattform zur Verwaltung Ihrer Infrastruktur. Stellen Sie sich das als Open Source-Implementierung von AWS vor, die Sie in Bare-Metal-Rechenzentren ausführen können.
Als Nächstes rücken wir den Stapel nach oben. Wir möchten eine effiziente Möglichkeit zum Verpacken und Versenden unserer App. Stellen Sie sich ein Beispiel aus der Praxis vor, bei dem Sie eine feste Menge von Autos, Kohle und Baumwolle von Punkt A nach Punkt B bewegen möchten. Wir stapeln einfach nicht alle im Schiff und senden sie ab! Wir benutzen Container. Ein Container ist eine standardisierte Einheit, die eine ordnungsgemäße Isolierung und Verpackung Ihrer Waren gewährleistet, damit diese effizient transportiert werden können.
Quelle: Container auf einem Frachtschifffoto von Axel Ahoi (@axelahoi) auf Unsplash
Docker ist das Software-Äquivalent eines physischen Containers. Es bietet Isolation und Verpackung für Ihre Apps. Sie können sie einfach skalieren. Es gibt viele Containerisierungstechnologien, aber Docker ist die dominierende.
Sie erkennen, dass Docker Ihnen so viele Vorteile bietet, und Sie beginnen, mehr davon zu verwenden. Sie „containerisieren“ Ihre Anwendungen und senden sie an die Produktion. Bald stehen Sie vor einem neuen Problem. Wie können all diese Container effizient verwaltet werden? Wie kann ich meine Container orchestrieren ?
Quelle : Orchesterprobenfoto von Manuel Nägeli (@gwundrig) auf Unsplash
Warum müssen Container überhaupt orchestriert werden? Möglicherweise lesen Sie diese Antwort auf Ihrem Desktop-Computer, auf dem ein Betriebssystem ausgeführt wird. Wenn Sie Ihren Browser öffnen, weist Ihr Betriebssystem Ressourcen wie Speicher und Rechenleistung für den Browserprozess zu. Nach einer Weile wechseln Sie die Registerkarten Ihres Browsers und öffnen einen Moment später ein neues Programm. Das Betriebssystem leistet hinter den Kulissen viel harte Arbeit, damit alle Ihre Prozesse einen angemessenen Anteil an den benötigten Computerressourcen erhalten. Wir brauchen so etwas wie ein Betriebssystem auf Containerebene. Dies ist die genaue Rolle, die Kubernetes spielt.
Wir geben Kubernetes eine Reihe von Rechenressourcen (Knoten genannt) und Arbeitslast, wie z. Erstellen Sie und geben Sie mir 3 Container, um diese PHP-App auszuführen. “Kubernetes macht sich daran, diese Container zusätzlich zu meinen vorhandenen Computerressourcen zu erstellen. Es gibt auch andere Container-Orchestrierungslösungen wie Docker Swarm und Mesos.
Kubernetes ist für Ihren Cluster das, was ein Linux-Kernel für Ihr Betriebssystem ist. So wie der Kernel nur die Prozesse in Ihrem Betriebssystem verwaltet, verwaltet Kubernetes nur die Container. Um ein vollwertiges Betriebssystem auszuführen, benötigen Sie viel mehr, z. B. Benutzer, Berechtigungen, Gerätetreiber und andere Dinge. In ähnlicher Weise hat Kubernetes an sich nur einen begrenzten Nutzen. Es kann Container für Sie bereitstellen, wenn Sie ihm eine Spezifikation oder eine Arbeitslast geben. Wie bauen Sie Ihren Container, bevor Sie ihn Kubernetes geben? Wie können Sie automatisch eine neue Kubernetes-Bereitstellung auslösen, sobald Sie neuen Code versenden? Dafür gibt es viele Lösungen, die auf Kubernetes aufbauen. Sie können sie entweder optimieren und entsprechend Ihren Anforderungen verkabeln oder OpenShift verwenden.
Quelle: Geschenk, Bogen, Band und Weihnachts-HD-Foto von Ben White (@benwhitephotography) auf Unsplash
OpenShift ist eine Kubernetes-Distribution, die all diese Extras auf ordentlich verpackte Weise auf nackten Kubernetes kombiniert. OpenShift ist für Kubernetes das, was Ubuntu für den Linux-Kernel ist. Es ist keine „Gabelung“ von Kubernetes, sondern baut darauf auf.
Wenn Sie einen tiefen Einblick in das bekommen möchten, was OpenShift auf Kubernetes aufbaut, können Sie meinen Beitrag auf der Website lesen Thema, OpenShift gegen Kubernetes – Craft of Coding .