Meilleure réponse
OpenStack est le cloud dinfrastructure en tant que service (IaaS). Il donne aux utilisateurs une interface pour démarrer des systèmes de processeur / mémoire / disque / réseau spécifique en utilisant une image basée sur un certain système dexploitation (+ dautres fonctionnalités). Lutilisateur final peut décider de la manière dutiliser le système une fois quOpenstack a créé un système / vm. Il / Elle peut installer une application de son choix, etc. et exécuter sa charge de travail. OpenStack prend en charge plusieurs hyperviseurs de virtualisation.
OpenShift est un cloud Platform as a Service (PaaS). Il donne aux utilisateurs une interface pour sélectionner une plate-forme dapplication comme jboss / python et exécuter directement leur charge de travail avec le code / configuration spécifique à lapplication à exécuter. Ceci est implémenté à laide de conteneurs / pods. On peut utiliser le registre de Red Hat pour les conteneurs testés / certifiés ou utiliser le registre docker ou tout autre registre tiers également.
Réponse
Il ny a pas une seule façon de comparer car ils sont principalement différentes choses. Cela dit, je vais dabord essayer de définir le besoin de chacun de ces éléments et de les lier ensemble.
Commençons par le bas de la pile. Vous avez besoin dune infrastructure pour faire fonctionner vos serveurs. Avec quoi pourriez-vous aller? Vous pouvez utiliser un fournisseur VPS comme DigitalOcean ou utiliser AWS.
Et si, pour une raison non technique, vous ne pouvez pas utiliser AWS? Par exemple, il existe une conformité légale qui stipule que les données que je stocke et les serveurs que jexécute sont dans la même géographie que les clients que je sers, et AWS na pas de région pour la même?
Cest où OpenStack entre en jeu. Cest une plate-forme pour gérer votre infrastructure. Considérez-le comme une implémentation open source dAWS que vous pouvez exécuter sur des centres de données bare metal.
Ensuite, nous montons dans la pile. Nous voulons un moyen efficace de conditionner et dexpédier notre application. Prenons un exemple concret où vous souhaitez déplacer une quantité fixe de voitures, de charbon et de coton du point A au point B. Nous ne les empilons tout simplement pas dans le navire pour lenvoyer! Nous utilisons des conteneurs. Un conteneur est une unité standardisée qui fournit une isolation et un emballage appropriés de vos marchandises afin quelles puissent être déplacées efficacement.
Source: Conteneurs sur un cargo photo par Axel Ahoi (@axelahoi) sur Unsplash
Docker est léquivalent logiciel dun conteneur physique. Il fournit une isolation et un packaging pour vos applications. Vous pouvez les mettre à léchelle facilement. Il existe de nombreuses technologies de conteneurisation, mais Docker est la principale.
Vous réalisez que Docker vous offre tellement davantages et vous commencez à en utiliser davantage. Vous «conteneurisez» vos applications et les expédiez en production. Bientôt, vous êtes confronté à un nouveau problème. Comment gérer efficacement tous ces conteneurs? Comment puis-je orchestrer mes conteneurs?
Source : Photo de répétition de lorchestre par Manuel Nägeli (@gwundrig) sur Unsplash
Pourquoi les conteneurs ont-ils besoin dorchestration en premier lieu? Il y a de fortes chances que vous lisiez cette réponse sur votre ordinateur de bureau, qui exécute un système dexploitation. Lorsque vous ouvrez votre navigateur, votre système dexploitation alloue des ressources telles que la mémoire et la puissance de calcul pour le processus du navigateur. Après un certain temps, vous changez donglet de navigateur, puis, un instant plus tard, ouvrez un nouveau programme. Le système dexploitation fait beaucoup de travail en arrière-plan pour que tous vos processus obtiennent une part équitable des ressources informatiques dont ils ont besoin. Nous avons besoin de quelque chose comme un système dexploitation au niveau des conteneurs. Cest le rôle exact joué par Kubernetes .
Nous donnons à Kubernetes un ensemble de ressources informatiques (appelées nœuds) et une charge de travail, comme « Hé, créez et donnez-moi 3 conteneurs pour exécuter cette application PHP », et Kubernetes entreprend de créer lesdits conteneurs en plus de mes ressources informatiques existantes. Il existe également dautres solutions dorchestration de conteneurs, comme Docker swarm et Mesos.
Kubernetes est à votre cluster ce quun noyau Linux est à votre système dexploitation. Tout comme le noyau ne gère que les processus de votre système dexploitation, Kubernetes ne gère que les conteneurs. Pour exécuter un système dexploitation à part entière, vous avez besoin de beaucoup plus, comme des utilisateurs, des autorisations, des pilotes de périphérique et dautres éléments. Dans le même ordre didées, Kubernetes a en soi une utilité limitée. Il peut provisionner des conteneurs pour vous si vous lui donnez une spécification ou une charge de travail. Comment construisez-vous votre conteneur avant de le donner à Kubernetes? Comment pouvez-vous déclencher automatiquement un nouveau provisionnement Kubernetes une fois que vous expédiez un nouveau code? Il existe de nombreuses solutions basées sur Kubernetes pour ce faire. Vous pouvez soit les optimiser et les câbler en fonction de vos besoins, soit utiliser OpenShift .
Source: Cadeau, arc, ruban et photo HD de Noël par Ben White (@benwhitephotography) sur Unsplash
OpenShift est une distribution Kubernetes qui combine tous ces goodies au-dessus de Kubernetes nu dune manière soigneusement emballée. OpenShift est à Kubernetes ce quUbuntu est au noyau Linux. Ce nest pas un «fork» de Kubernetes, mais plutôt une construction par dessus.
Si vous voulez approfondir ce quOpenShift construit sur Kubernetes, vous pouvez consulter mon article sur le topic, OpenShift vs Kubernetes – Artisanat de codage .