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) .
Cloud Foundry est un excellent outil en supposant que vous êtes prêt à toujours travailler dans les limites de l'offre car il est très avisé / prescrit. L'interface utilisateur Web est agréable à regarder le premier jour, mais elle est rarement utilisée une fois que vous avez commencé à travailler avec le client et que vous avez configuré votre pipeline CI / CD. J'ai trouvé que Cloud Foundry est excellent jusqu'à ce que des cas d'utilisation apparaissent qui ne sont pas facilement entièrement pris en charge dans Cloud Foundry. La livraison de ces cas d'utilisation peut retarder les projets lorsque vous essayez de résoudre ces problèmes, par conséquent, vous perdez la visibilité de l'infrastructure et les avantages de prise en charge de ces composants qui s'exécutent alors principalement en dehors de Cloud Foundry (pensez à plusieurs bases de données, kafka, hadoop, cassandra , etc.) Je soupçonne qu'avec le temps, la dynamique entourant Docker et la rigidité de Cloud Foundry conduiront les utilisateurs vers Kubernetes, Mesos ou Docker Swarm / Datacenter. Il est possible que Cloud Foundry puisse rattraper ces trois mais cela semble peu probable en raison de la popularité de ces projets open source.
la source
Il est difficile de savoir pourquoi une entreprise créerait un produit sensiblement similaire à un autre produit. Il y a beaucoup de raisons. Peut-être qu'ils ont déjà commencé à l'utiliser et y sont investis. Peut-être qu'ils (CF) pensent que Kubernetes est mal fait ou se trompe sur l'API / le modèle / les détails. Peut-être pensent-ils qu'ils peuvent agir plus rapidement s'ils contrôlent l'ensemble du produit plutôt que de contribuer.
Certes, je dis cela en tant que développeur Kubernetes - on pourrait se poser les mêmes questions que Kubernetes vs Mesos, Amazon ECS vs Kubernetes ou Docker Swarm vs Kubernetes.
J'espère qu'avec le temps, nous évoluons tous dans la même direction et pouvons collaborer davantage et passer moins de temps à réinventer le travail de chacun.
Quant à Kubernetes, l'accent est mis sur les développeurs d'applications: des primitives simples et puissantes qui vous permettent de créer et de déployer des applications à grande échelle très rapidement. Nous nous appuyons sur notre expérience (enfin, celle de Google) avec des technologies similaires pour tracer notre voie. D'autres personnes auront des expériences ou des opinions différentes.
la source
Une différence significative, à mon avis, est l'approche qu'ils adoptent:
CF construit automatiquement le runtime à partir de 3 composants: le binaire d'application fourni par l'utilisateur, le buildpack contenant le middleware nécessaire pour exécuter l'application et une image du système d'exploitation (une cellule souches). L'utilisateur CF (un développeur) doit fournir uniquement le binaire de l'application (par exemple, un fichier jar exécutable). Le CF s'occupe du reste, c'est-à-dire de l'empaquetage et de l'exécution de l'application.
Kubernetes attend d'un développeur des images Docker contenant un middleware et un système d'exploitation déjà intégrés et prêts à être exécutés. Pour cela, le «manifeste de déploiement» de Kubernetes (par exemple un graphique Helm) décrit non seulement une application ou un service unique, mais tous les [micro] services qui composent votre solution au moment de l'exécution. Vous soumettez une seule description déclarative de votre environnement d'exécution et Kubernetes veille à ce que l'état d'exécution réel corresponde à votre description fournie.
L'approche CF lui permet donc de traiter des cas d'utilisation tels que «remplacer un système d'exploitation par une faille de sécurité corrigée dans l'ensemble de votre cloud sans temps d'arrêt pour vos services». Mais il se concentre également sur le déploiement de service par service au lieu de la description déclarative d'un environnement d'exécution «idéal» cible de votre système.
la source
Cloud Foundry est un système de cloud computing open-source en tant que service. Cloud Foundry permet aux projets d'être déployés dans différents espaces et lie également tout service cloud à votre application.
Kubernete ressemble plus à un outil d'ornementation pour les conteneurs (pods) qui automatise le déploiement, la mise à l'échelle et la gestion des applications conteneurisées. Il utilise le terme pods pour définir un conteneur ou un groupe de conteneurs.
Tout déploiement de Kubernetes nécessite au moins deux ressources:
1) deployment.yaml: Cette ressource définit la version de l'image qu'elle doit récupérer dans votre registre de conteneurs, les réplicas (répliques de pod), la stratégie de déploiement, la mise à l'échelle et les sondes, etc.
2) service.yaml: c'est une interface entre vos pods internes et le monde extérieur, tout le trafic extérieur écoutera le port défini dans cette ressource d'où il distribuera la charge aux pods internes.
Une plus grande ressource est l'entrée fournie par Kubernetes qui gère l'accès externe aux services dans un cluster, généralement http. Grâce à Ingress, vous pouvez fournir un équilibrage de charge, une terminaison SSL et un hébergement virtuel basé sur le nom.
Vous trouverez plus d'informations sur kubernetes ci-dessous: https://kubernetes.io/docs/
la source
[pcf vs kubernetes] [1] Différence entre pcf et kubernetes
(abstraction de plate-forme au niveau de l'application) • Pivotal Cloud Foundry est une abstraction de haut niveau du développement d'applications cloud natives.
• Nous avons l'abstraction de la plate-forme au niveau de l'application, en créant et en déployant une application entièrement configurée
• PCF est un exemple de PaaS «d'application» (également appelé Cloud Foundry Application Runtime)
• Le développeur maintient l'application à l'avenir
• Idéal pour les nouvelles applications, les applications cloud natives. Pour les équipes travaillant avec des cycles de vie courts et des versions fréquentes, PCF offre un excellent produit.
(abstraction de la plate-forme au niveau du conteneur) • Kubernetes est un planificateur ou orchestrateur de conteneurs.
• Nous avons l'abstraction de la plate-forme au niveau du conteneur, en créant et en déployant des conteneurs dans le cadre d'une application complète.
• Kubernetes est un PaaS «conteneur» (parfois appelé CaaS).
• Avec les outils d'orchestration de conteneur, le développeur crée puis gère le conteneur à l'avenir.
• Pour une nouvelle application, plus de travail pour vos équipes d'ingénierie et diminution de la productivité
la source
Après 4 ans, les tendances ressemblent à ceci:
Les clusters Kubernetes deviennent vraiment bon marché ces jours-ci et l'environnement d'outillage pour Kubernetes est meilleur.
De plus, la plupart des fonctionnalités concurrentes répertoriées par d'autres affiches sont actuellement faciles à reproduire dans kubernetes.
la source