En tant que commissaire CloudFoundry (passé) et Kubernetes (présent), je suis probablement particulièrement qualifié pour répondre à celui-ci.
Comme PaaS
J'aime appeler CloudFoundry un "Application PaaS" et Kubernetes un "Container PaaS", mais la distinction est assez subtile et fluide, étant donné que les deux projets changent avec le temps pour rivaliser sur les mêmes marchés.
La distinction entre les deux est que CF a une couche intermédiaire qui prend une application utilisateur (à 12 facteurs) (par exemple jar ou gem) et un buildpack de style Heroku (par exemple Java + Tomcat ou Ruby) et produit une gouttelette (analogue à un Image Docker). CF n'expose pas l'interface de conteneurisation à l'utilisateur, contrairement à Kubernetes.
Public
Le public principal de CloudFoundry est constitué des développeurs d'applications d'entreprise qui souhaitent déployer des applications sans état à 12 facteurs à l'aide de buildpacks de style Heroku.
L'audience de Kubernetes est un peu plus large, comprenant à la fois les développeurs d'applications sans état et de services avec état qui fournissent leurs propres conteneurs.
Cette distinction pourrait changer à l'avenir:
Comparaison des fonctionnalités
Au fur et à mesure que les deux projets mûrissent et se font concurrence, leurs similitudes et leurs différences changeront. Prenez donc la comparaison des fonctionnalités suivante avec un grain de sel.
Les CF et K8 partagent de nombreuses fonctionnalités similaires, telles que la conteneurisation, l'espacement de noms, l'authentification,
Avantages concurrentiels de Kubernetes:
- Regroupez et mettez à l'échelle des pods de conteneurs qui partagent une pile réseau, plutôt que de simplement évoluer indépendamment
- Apportez votre propre contenant
- Couche de persistance avec état
- Communauté OSS plus grande et plus active
- Une architecture plus extensible avec des composants remplaçables et des plugins tiers
- Interface graphique Web gratuite
Avantages concurrentiels de CloudFoundry:
- Authentification mature, regroupement d'utilisateurs et prise en charge de l'hébergement multiclient [x]
- Apportez votre propre application
- Équilibreur de charge inclus
- Déployé, mis à l'échelle et maintenu en vie par BOSH [x]
- Journalisation et agrégation de métriques robustes [x]
- Interface graphique Web d'entreprise [x]
[x] Ces fonctionnalités ne font pas partie de Diego ou ne sont pas incluses dans Lattice.
Déploiement
L'un des avantages concurrentiels de CloudFoundry est qu'il dispose d'un moteur de déploiement mature, BOSH, qui permet des fonctionnalités telles que la mise à l'échelle, la résurrection et la surveillance des composants CF de base. BOSH prend également en charge de nombreuses couches IaaS avec une abstraction de fournisseur de cloud enfichable. Malheureusement, la courbe d'apprentissage de BOSH et la gestion de la configuration de déploiement sont cauchemardesques. (En tant que committer BOSH, je pense que je peux le dire avec précision.)
L'abstraction de déploiement de Kubernetes en est encore à ses balbutiements. Plusieurs environnements cibles sont disponibles dans le référentiel principal, mais ils ne fonctionnent pas tous, bien testés ou pris en charge par les développeurs principaux. C'est surtout une question de maturité. On pourrait s'attendre à ce que cela s'améliore avec le temps et augmente l'abstraction. Par exemple, Kubernetes sur DCOS permet de déployer Kubernetes sur un cluster DCOS existant avec une seule commande.
Contexte historique
Diego est une réécriture de l'agent d'exécution Droplet de CF. Il a été développé à l'origine avant l'annonce de Kubernetes et a pris de plus en plus de fonctionnalités à mesure que le paysage concurrentiel évoluait. Son objectif initial était de générer des gouttelettes (application utilisateur + buildpack CF) et de les exécuter dans des conteneurs Warden (renommé Garden lors de la réécriture dans Go). Depuis sa création, il a également été reconditionné en Lattice , qui est en quelque sorte un CloudFoundry-lite (bien que ce nom ait été pris par un projet existant). Pour cette raison, Lattice ressemble quelque peu à un jouet, en ce sens qu'il a délibérément réduit l'audience et la portée des utilisateurs, manquant explicitement des fonctionnalités qui le rendraient «prêt pour l'entreprise». Fonctionnalités que CF fournit déjà. Cela est en partie dû au fait que Lattice est utilisé pour tester les composants de base, sans une partie des frais généraux du CF plus complexe, mais vous pouvez également utiliser Lattice dans des environnements internes de haute confiance où la sécurité et la multi-location ne sont pas autant un problème .
Il convient également de mentionner que CloudFoundry et Warden (son moteur de conteneur) sont également antérieurs à Docker, de quelques années.
Kubernetes, d'autre part, est un projet relativement nouveau développé par Google sur la base d'années d'utilisation de conteneurs avec BORG et Omega. Kubernetes pourrait être considéré comme une orchestration de conteneurs de 3ème génération chez Google, de la même manière que Diego est l'orchestration de conteneurs de 3ème génération chez Pivotal / VMware (v1 écrite chez VMware; v2 chez VMware avec l'aide de Pivotal Labs; v3 chez Pivotal après avoir repris le projet) .