Als CloudFoundry (Vergangenheit) und Kubernetes (Gegenwart) Commiter bin ich wahrscheinlich einzigartig qualifiziert, um diese Frage zu beantworten.
PaaS-ähnlich
Ich nenne CloudFoundry gerne "Application PaaS" und Kubernetes "Container PaaS", aber die Unterscheidung ist ziemlich subtil und fließend, da sich beide Projekte im Laufe der Zeit ändern, um auf denselben Märkten zu konkurrieren.
Der Unterschied zwischen beiden besteht darin, dass CF über eine Staging-Ebene verfügt, die eine (12-Faktor-) Benutzer-App (z. B. JAR oder Gem) und ein Buildpack im Heroku-Stil (z. B. Java + Tomcat oder Ruby) verwendet und ein Tröpfchen erzeugt (analog zu a) Docker-Bild). CF stellt die Containerisierungsschnittstelle dem Benutzer nicht zur Verfügung, Kubernetes jedoch.
Publikum
Die Hauptzielgruppe von CloudFoundry sind Entwickler von Unternehmensanwendungen, die zustandslose 12-Faktor-Apps mithilfe von Buildpacks im Heroku-Stil bereitstellen möchten.
Das Publikum von Kubernetes ist etwas breiter, einschließlich zustandsloser Anwendungsentwickler und Entwickler von Stateful Services, die ihre eigenen Container bereitstellen.
Diese Unterscheidung könnte sich in Zukunft ändern:
Funktionsvergleich
Wenn beide Projekte reifen und miteinander konkurrieren, werden sich ihre Ähnlichkeiten und Unterschiede ändern. Nehmen Sie also den folgenden Funktionsvergleich mit einem Salzkorn.
Sowohl CF als auch K8 haben viele ähnliche Funktionen gemeinsam, wie Containerisierung, Namespace, Authentifizierung,
Wettbewerbsvorteile von Kubernetes:
- Gruppieren und skalieren Sie Pods von Containern, die sich einen Netzwerkstapel teilen, anstatt nur unabhängig zu skalieren
- Bringen Sie Ihren eigenen Behälter mit
- Stateful Persistance Layer
- Größere, aktivere OSS-Community
- Erweiterbarere Architektur mit austauschbaren Komponenten und Plugins von Drittanbietern
- Kostenlose Web-GUI
Wettbewerbsvorteile von CloudFoundry:
- Unterstützung für ausgereifte Authentifizierung, Benutzergruppierung und Mandantenfähigkeit [x]
- Bringen Sie Ihre eigene App mit
- Enthaltener Load Balancer
- Von BOSH bereitgestellt, skaliert und am Leben erhalten [x]
- Robuste Protokollierung und Metrikaggregation [x]
- Enterprise Web GUI [x]
[x] Diese Funktionen sind nicht Teil von Diego oder in Lattice enthalten.
Einsatz
Einer der Wettbewerbsvorteile von CloudFoundry besteht darin, dass es über eine ausgereifte Bereitstellungs-Engine, BOSH, verfügt, die Funktionen wie Skalierung, Wiederbelebung und Überwachung der wichtigsten CF-Komponenten ermöglicht. BOSH unterstützt auch viele IaaS-Schichten mit einer steckbaren Cloud-Provider-Abstraktion. Leider sind die Lernkurve von BOSH und das Management der Bereitstellungskonfiguration ein Albtraum. (Als BOSH-Committer kann ich das mit Genauigkeit sagen.)
Die Bereitstellungsabstraktion von Kubernetes steckt noch in den Kinderschuhen. Im Kern-Repo stehen mehrere Zielumgebungen zur Verfügung, die jedoch nicht alle funktionieren, gut getestet oder von den Hauptentwicklern unterstützt werden. Dies ist meistens eine Reifesache. Man könnte erwarten, dass sich dies im Laufe der Zeit verbessert und die Abstraktion zunimmt. Mit Kubernetes unter DCOS können Sie beispielsweise Kubernetes mit einem einzigen Befehl in einem vorhandenen DCOS- Cluster bereitstellen .
Historischer Zusammenhang
Diego ist eine Neufassung von CFs Droplet Execution Agent. Es wurde ursprünglich vor der Ankündigung von Kubernetes entwickelt und hat im Zuge der Entwicklung der Wettbewerbslandschaft mehr Funktionsumfang erhalten. Das ursprüngliche Ziel bestand darin, Tröpfchen (Benutzeranwendung + CF-Buildpack) zu generieren und in Warden-Containern (beim Umschreiben in Go in Garden umbenannt) auszuführen. Seit seiner Gründung wurde es auch als Lattice neu verpackt , was eine Art CloudFoundry-Lite ist (obwohl dieser Name von einem bestehenden Projekt übernommen wurde). Aus diesem Grund ist Lattice insofern etwas spielzeugartig, als es die Zielgruppe und den Umfang der Benutzer absichtlich reduziert hat und explizit Funktionen fehlt, die es "unternehmensfähig" machen würden. Funktionen, die CF bereits bietet. Dies liegt zum Teil daran, dass Lattice zum Testen der Kernkomponenten verwendet wird, ohne dass ein Teil des Overheads durch die komplexere CF entsteht. Sie können Lattice jedoch auch in internen Umgebungen mit hohem Vertrauen verwenden, in denen Sicherheit und Mandantenfähigkeit nicht so wichtig sind .
Erwähnenswert ist auch, dass CloudFoundry und Warden (seine Container-Engine) ebenfalls ein paar Jahre älter sind als Docker.
Kubernetes hingegen ist ein relativ neues Projekt, das von Google auf der Grundlage jahrelanger Containernutzung mit BORG und Omega entwickelt wurde. Kubernetes könnte als Container-Orchestrierung der 3. Generation bei Google betrachtet werden, genauso wie Diego die Container-Orchestrierung der 3. Generation bei Pivotal / VMware (v1 bei VMware geschrieben; v2 bei VMware mit Hilfe von Pivotal Labs; v3 bei Pivotal nach Übernahme des Projekts). .