web-dev-qa-db-fra.com

Kubernetes vs CloudFoundry

La prochaine version de CloudFoundry/Diego offrira une prise en charge native des conteneurs Docker qui seront orchestrés sur des hôtes multibles [ lien ]. Cela ressemble beaucoup à Kubernetes.

Bien sûr, le problème que Kubernetes essaie de résoudre est davantage un problème générique, où CloudFoundry est davantage axé sur le développement d'applications. Cependant, pour moi, il semble que les deux vont dans la même direction et CloudFoundry ajoute de nombreuses fonctionnalités en plus de la simple orchestration.

Je me pose donc des questions sur les cas d'utilisation où Kubernetes apporterait plus de valeur que CloudFoundry?

98
Jonny

En tant que responsable CloudFoundry (passé) et Kubernetes (présent), je suis probablement particulièrement qualifié pour répondre à cette question.

PaaS-like

J'aime qualifier CloudFoundry de "PaaS d'application" et Kubernetes de "PaaS de conteneur", mais la distinction est assez subtile et fluide, étant donné que les deux projets évoluent au fil du temps pour être concurrentiels sur les mêmes marchés.

La distinction entre les deux est que CF possède une couche intermédiaire qui prend une application utilisateur (facteur 12) (par exemple, un pot ou une gemme) et un package de construction de style Heroku (par exemple, Java + Tomcat ou Ruby) et produit une gouttelette (analogue à une Image de Docker). CF n'expose pas l'interface de conteneurisation à l'utilisateur, contrairement à Kubernetes.

Public

Le public cible de CloudFoundry est constitué des développeurs d'applications d'entreprise qui souhaitent déployer des applications sans état à 12 facteurs à l'aide de packages de génération de style Heroku.

L'audience de Kubernetes est un peu plus large, comprenant à la fois des applications sans état et des développeurs de services avec état fournissant leurs propres conteneurs.

Cette distinction pourrait changer à l'avenir:

Comparaison des fonctionnalités

À mesure que les deux projets mûrissent et se font concurrence, leurs similitudes et leurs différences vont changer. Prenez donc la comparaison suivante avec un grain de sel.

Les CF et les K8 partagent de nombreuses fonctionnalités similaires, telles que la conteneurisation, le namespacing, l’authentification,

Avantages compétitifs de Kubernetes:

  • Regroupez et mettez à l'échelle des conteneurs de conteneurs qui partagent une pile de réseau, plutôt que de faire une mise à l'échelle indépendante
  • Apportez votre propre conteneur
  • Couche de persistance stateful
  • Une communauté OSS plus importante et plus active
  • Architecture plus extensible avec des composants remplaçables et des plugins tiers
  • Interface Web gratuite

Avantages concurrentiels de CloudFoundry:

  • Authentification mature, regroupement d'utilisateurs et prise en charge de plusieurs locataires [x]
  • Apportez votre propre application
  • Equilibreur de charge inclus
  • Déployé, mis à l'échelle et maintenu en vie par BOSH [x]
  • Consignation robuste et agrégation de mesures [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 réside dans le fait qu'il dispose d'un moteur de déploiement avancé, BOSH, qui permet des fonctionnalités telles que la mise à l'échelle, la résurrection et la surveillance des composants CF essentiels. BOSH prend également en charge de nombreuses couches IaaS avec une abstraction de fournisseur de cloud connectable. Malheureusement, la courbe d'apprentissage et la gestion de la configuration de déploiement de BOSH sont cauchemardesques. (En tant que committer BOSH, je pense pouvoir dire ceci 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 correctement, ni ne sont testés, ni pris en charge par les développeurs principaux. C'est surtout une affaire de maturité. On pourrait s'attendre à ce que cela s'améliore avec le temps et que l'abstraction augmente. Par exemple, Kubernetes sur DCOS permet de déployer Kubernetes sur un cluster DCOS existant avec une seule commande.

Contexte historique

Diego réécrit l'agent d'exécution des gouttelettes de CF. Il avait été développé avant l'annonce de Kubernetes et a pris de l'ampleur au fur et à mesure de l'évolution du paysage concurrentiel. Son objectif initial était de générer des gouttelettes (application utilisateur + buildpack CF) et de les exécuter dans des conteneurs Warden (renommés Garden lors de la réécriture en Go). Depuis sa création, il a également été reconditionné en tant que Lattice , ce qui relève en quelque sorte de CloudFoundry-lite (bien que ce nom ait été pris par un projet existant ). Pour cette raison, Lattice est un peu comme un jouet, en ce sens qu’il a délibérément réduit l’audience et la portée des utilisateurs, et qu’il manque explicitement des fonctionnalités qui le rendraient "prêt pour l’entreprise". Fonctionnalités déjà fournies par CF Cela s'explique en partie par le fait que Lattice est utilisé pour tester les composants principaux, sans les frais généraux des FC plus complexes, mais vous pouvez également utiliser Lattice dans des environnements internes hautement sécurisés où la sécurité et la multi-location ne sont pas aussi une préoccupation. .

Il convient également de mentionner que CloudFoundry et Warden (son moteur de conteneur) ont également précédé Docker de quelques années.

Kubernetes, quant à lui, 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 conteneur de 3ème génération chez Google, de la même manière que Diego est une orchestration de conteneur de 3ème génération chez Pivotal/VMware (v1 écrite sur VMware; v2 sur VMware avec l'aide de Pivotal Labs; v3 sur Pivotal après avoir pris en charge le projet) .

186
KarlKFI

Cloud Foundry est un excellent outil en supposant que vous souhaitiez toujours travailler dans les limites de l'offre car il est très avisé/recommandé. L’interface utilisateur Web est agréable à regarder le premier jour, mais elle est rarement utilisée après avoir commencé à travailler avec le client et à avoir configuré votre pipeline CI/CD. J'ai trouvé que Cloud Foundry est génial jusqu'à ce que des cas d'utilisation apparaissent, qui ne sont pas facilement pris en charge complètement dans Cloud Foundry. La fourniture de ces cas d'utilisation peut retarder les projets lorsque vous tentez de résoudre ces problèmes, ce qui entraîne une perte de visibilité de l'infrastructure et des avantages des composants s'exécutant généralement en dehors de Cloud Foundry (par exemple, plusieurs bases de données, kafka, hadoop, cassandra). , etc) Je pense qu'avec le temps, l’élan autour de Docker et l’inflexibilité de Cloud Foundry conduiront les utilisateurs vers Kubernetes, Mesos ou Docker Swarm/Datacenter. Il est possible que Cloud Foundry rattrape ces trois projets, mais cela semble peu probable en raison de la popularité de ces projets open source.

10
Jim Kruk

Il est difficile de dire pourquoi une entreprise créerait un produit essentiellement similaire à un autre produit. Il y a beaucoup de raisons. Peut-être qu'ils ont déjà commencé à l'utiliser et y ont investi. Peut-être qu’ils pensent que Kubernetes est mal fait ou que l’API, le modèle ou les détails sont incorrects. Peut-être pensent-ils pouvoir agir plus rapidement s’ils contrôlent l’ensemble du produit plutôt que de contribuer.

Certes, je le dis en tant que développeur Kubernetes - on peut 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 évoluerons tous dans la même direction et que nous pourrons collaborer davantage et consacrer 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 vous permettant de créer et de déployer des applications à grande échelle très rapidement. Nous nous appuyons sur notre expérience (bien celle de Google) avec des technologies similaires pour tracer notre parcours. D'autres personnes auront des expériences ou des opinions différentes.

8
Tim Hockin

À mon avis, une différence importante réside dans l'approche qu'ils adoptent:

CF construit automatiquement le moteur d'exécution à partir de 3 composants: un binaire d'application fourni par l'utilisateur, un pack de construction contenant le middleware nécessaire à l'exécution de l'application et une image de système d'exploitation (une pile). L’utilisateur CF (un développeur) doit uniquement fournir le binaire de l’application (par exemple, un fichier jar exécutable). Les FC s'occupent du reste, à savoir empaqueter et exécuter l'application.

Kubernetes attend du 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 également tous les [micro] services qui composent votre solution au moment de l'exécution. Vous soumettez une description déclarative unique de votre environnement d'exécution et Kubernetes prend soin de l'état d'exécution réel qui correspond à la description fournie.

L’approche des FC 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 service par service plutôt que sur la description déclarative d'une exécution "idéale" cible de votre système.

3

Cloud Foundry est un système informatique en nuage de type plate-forme open source. Cloud Foundry permet de déployer des projets dans différents espaces et lie tout service cloud à votre application.

Kubernete s'apparente davantage à un outil d'ornementation de 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 à sélectionner dans votre registre de conteneurs, vos répliques, votre 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 externe écoute le port défini dans cette ressource à partir duquel il répartit la charge sur les pods internes.

Les ressources fournies par kubernetes gèrent l’accès externe aux services d’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 un nom.

Vous trouverez plus d'informations sur kubernetes ci-dessous: https://kubernetes.io/docs/

2
Manvendra Jina

[pcf vs kubernetes] [1] Différence entre pcf et kubernetes

                                PCF

(abstraction de la plate-forme au niveau de l'application) • Pivotal Cloud Foundry est une abstraction de haut niveau du développement d'applications natives dans le cloud.

• Nous avons l'abstraction de la plate-forme au niveau de l'application, en construisant et en déployant une application entièrement configurée.

• PCF est un exemple de PaaS "application" (également appelé Cloud Foundry Application Runtime).

• Le développeur gère l'application à l'avenir

• Idéal pour les nouvelles applications, les applications en nuage. PCF offre un excellent produit aux équipes travaillant avec des cycles de vie courts et des lancements fréquents.

                       Kubernetes 

(abstraction de la plate-forme au niveau du conteneur) • Kubernetes est un planificateur de conteneur ou un orchestrateur.

• Nous avons l'abstraction de la plate-forme au niveau des conteneurs, la construction et le déploiement de conteneurs faisant partie 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 et conserve ensuite le conteneur à l'avenir.

• Pour une nouvelle application, davantage de travail pour vos équipes d'ingénierie et une productivité réduite

1
Hemavathi Tamilmaran

Après 4 ans, les tendances ressemblent à ceci:

enter image description here

Les clusters Kubernetes deviennent vraiment pas chers ces jours-ci et l'environnement d'outillage pour les kubernetes est meilleur.

De plus, la plupart des fonctionnalités concurrentes énumérées par d’autres affiches sont très faciles à reproduire dans les kubernetes de nos jours.

1
Marcin Szymczak

KUBERNETES MOTEUR

Kubernetes Engine est un environnement géré, prêt à la production, permettant de déployer des applications conteneurisées. Il apporte nos dernières innovations en termes de productivité des développeurs, d’utilisation rationnelle des ressources, d’opérations automatisées et de flexibilité Open Source pour accélérer votre mise sur le marché.

Lancé en 2015, Kubernetes Engine s'appuie sur l'expérience de Google en matière de gestion de services tels que Gmail et YouTube en conteneurs depuis plus de 12 ans. Kubernetes Engine vous permet d'être opérationnel avec Kubernetes en un rien de temps, en éliminant complètement le besoin d'installer, de gérer et d'exploiter vos propres clusters Kubernetes.

Kubernetes Engine permet un développement et une itération rapides des applications en facilitant le déploiement, la mise à jour et la gestion de vos applications et services. Kubernetes Engine n'est pas uniquement destiné aux applications sans état; vous pouvez attacher un stockage persistant et même exécuter une base de données dans votre cluster. Décrivez simplement les ressources de calcul, de mémoire et de stockage requises par les conteneurs d'applications. Kubernetes Engine fournit et gère automatiquement les ressources cloud sous-jacentes. La prise en charge des accélérateurs matériels facilite l'exécution d'applications d'apprentissage automatique, de GPU à usage général, de calcul hautes performances et d'autres charges de travail bénéficiant d'accélérateurs matériels spécialisés.

Contrôlez votre environnement à partir du tableau de bord intégré de Kubernetes Engine dans la console Google Cloud. Utilisez des contrôles de santé de routine pour détecter et remplacer les applications bloquées ou en panne au sein de vos déploiements. Les stratégies de réplication du conteneur, la surveillance et les réparations automatisées garantissent que vos services sont hautement disponibles et offrent une expérience transparente à vos utilisateurs. Les ingénieurs SRE (Site Site Fiabilité) de Google surveillent en permanence votre cluster et ses ressources de calcul, de réseau et de stockage afin que vous n'ayez pas à le faire, ce qui vous laisse un peu de temps pour vous concentrer sur vos applications.

Passez d'une machine unique à plusieurs milliers: la mise à l'échelle automatique de Kubernetes Engine vous permet de faire face à une demande accrue de vos services pour vos utilisateurs, en les maintenant disponibles chaque fois que vous le souhaitez Ensuite, réduisez les périodes de silence pour économiser de l’argent ou planifiez des travaux par lots de faible priorité pour utiliser des cycles inutilisés. Kubernetes Engine vous aide à tirer le meilleur parti de votre pool de ressources.

Connectez-vous à des clusters et isolez-les, où que vous soyez, grâce à des stratégies réseau détaillées utilisant le VPC (Global Virtual Private Cloud) dans Google Cloud. Utilisez les services publics derrière une seule adresse IP globale anycast pour un équilibrage de charge transparent. Protégez-vous contre le DOS et d'autres types d'attaques Edge sur vos conteneurs.

Kubernetes Engine exécute Kubernetes certifié, garantissant la portabilité sur les clouds et sur site. Il n'y a pas de verrouillage fournisseur: vous êtes libre d'extraire vos applications de Kubernetes Engine et de les exécuter partout où Kubernetes est pris en charge, y compris sur vos propres serveurs sur site. Vous pouvez personnaliser des intégrations telles que la surveillance, la journalisation et le CI/CD à l'aide de la plateforme Google Cloud (GCP) et de solutions tierces de l'écosystème.

FONDERIE DE NUAGES

Cloud Foundry a une architecture basée sur conteneur qui exécute des applications dans n'importe quel langage de programmation. Déployez des applications sur CF en utilisant vos outils existants et sans aucune modification du code. Instanciez, déployez et gérez des clusters Kubernetes à haute disponibilité avec CF BOSH sur n'importe quel cloud.

Les applications déployées sur Cloud Foundry accèdent à des ressources externes via l'API Open Service Broker. Voir les services disponibles et les intégrations dans The Foundry.

Cloud Foundry est très adaptable et résiste aux changements technologiques pour vous permettre d'adopter de nouveaux outils, langages ou plates-formes plus tard.

En dissociant les applications de l'infrastructure, vous pouvez décider individuellement du lieu où héberger des charges de travail - sur site, dans des clouds publics ou dans des infrastructures gérées - et les déplacer en quelques minutes, si nécessaire, sans modifier l'application.

Cloud Foundry ne perturbera pas votre flux de travail actuel. Il est compatible avec la technologie et les outils que vous utilisez actuellement - qu’ils soient AWS ou Docker ou Kubernetes ou Java ou .NET - et à peu près tout dans votre environnement actuel.

Cloud Foundry est un projet Open Source avec un modèle de contribution ouverte et de gouvernance ouverte qui offre aux utilisateurs une flexibilité maximale pour éviter le blocage des fournisseurs. Nous aidons à superviser une communauté de confiance composée d'esprits divers qui se sont réunis pour relever toutes sortes de défis. Plus de perspectives et des conceptions divergentes signifient un code plus fort.

0
Kervin L