La mejor respuesta
OpenStack es una nube de infraestructura como servicio (IaaS). Brinda a los usuarios una interfaz para iniciar sistemas de CPU / memoria / disco / red específicos usando una imagen basada en un determinado sistema operativo (+ otras funcionalidades). El usuario final puede decidir cómo usar el sistema después de que Openstack cree un system / vm. Él / Ella puede instalar alguna aplicación de su elección, etc. y ejecutar su carga de trabajo. OpenStack admite múltiples hipervisores de virtualización.
OpenShift es una plataforma como servicio (PaaS) en la nube. Brinda a los usuarios una interfaz para seleccionar una plataforma de aplicación como jboss / python y ejecutar directamente su carga de trabajo con el código / configuración específica de la aplicación para ejecutar. Esto se implementa mediante contenedores / pods. Se puede usar el registro de Red Hat para contenedores probados / certificados o usar el registro de Docker o cualquier otro registro de terceros también.
Respuesta
No hay una forma de comparar porque la mayoría cosas diferentes. Dicho esto, primero intentaré definir la necesidad de cada uno de estos y vincularlos.
Comencemos con la parte inferior de la pila. Necesita infraestructura para ejecutar sus servidores. ¿Con qué podrías ir? Puede utilizar un proveedor de VPS como DigitalOcean o utilizar AWS.
¿Qué pasa si, por alguna razón no técnica, no puede utilizar AWS? Por ejemplo, existe un cumplimiento legal que establece que los datos que almaceno y los servidores que ejecuto se encuentran en la misma geografía que los clientes a los que atiendo, y AWS no tiene una región para los mismos.
Esto es donde entra OpenStack . Es una plataforma para administrar su infraestructura. Piense en ello como una implementación de código abierto de AWS que puede ejecutar en centros de datos completos.
A continuación, avanzamos en la pila. Queremos una forma eficiente de empaquetar y enviar nuestra aplicación. Considere un ejemplo del mundo real en el que desea mover una cantidad fija de automóviles, carbón y algodón del punto A al punto B. ¡Simplemente no los apilamos todos en el barco y los enviamos! Usamos contenedores. Un contenedor es una unidad estandarizada que proporciona el aislamiento y el embalaje adecuados de sus mercancías para que puedan moverse de manera eficiente.
Fuente: Foto de contenedores en un buque de carga de Axel Ahoi (@axelahoi) en Unsplash
Docker es el software equivalente a un contenedor físico. Proporciona aislamiento y empaquetado para sus aplicaciones. Puede escalarlos fácilmente. Hay muchas tecnologías de contenedorización, pero Docker es la dominante.
Te das cuenta de que Docker te ofrece tantas ventajas y empiezas a usar más. Usted “coloca en contenedores” sus aplicaciones y las envía a producción. Pronto, se enfrenta a un nuevo problema. ¿Cómo gestionar todos estos contenedores de forma eficiente? ¿Cómo puedo orquestar mis contenedores?
Fuente : Foto de ensayo de orquesta de Manuel Nägeli (@gwundrig) en Unsplash
¿Por qué los contenedores necesitan orquestación en primer lugar? Lo más probable es que esté leyendo esta respuesta en su computadora de escritorio, que ejecuta un sistema operativo. Cuando abre su navegador, su sistema operativo asigna recursos como memoria y potencia informática para el proceso del navegador. Después de un tiempo, cambia las pestañas de su navegador y luego, un momento después, abre un nuevo programa. El sistema operativo hace mucho trabajo detrás de escena para que todos sus procesos obtengan una parte justa de los recursos informáticos que necesitan. Necesitamos algo así como un sistema operativo a nivel de contenedores. Esta es la función exacta que desempeña Kubernetes .
Le damos a Kubernetes un conjunto de recursos informáticos (llamados nodos) y carga de trabajo, como «Oye, crea y dame 3 contenedores para ejecutar esta aplicación PHP ”, y Kubernetes se propone crear dichos contenedores además de mis recursos informáticos existentes. También hay otras soluciones de orquestación de contenedores, como Docker swarm y Mesos.
Kubernetes es para su clúster lo que un kernel de Linux es para su sistema operativo. Al igual que el kernel administra solo los procesos en su sistema operativo, Kubernetes administra solo los contenedores. Para ejecutar un sistema operativo completo, necesita mucho más, como usuarios, permisos, controladores de dispositivos y otras cosas. En una línea similar, Kubernetes por sí solo tiene una utilidad limitada. Puede aprovisionar contenedores para usted si le da una especificación o una carga de trabajo. ¿Cómo construyes tu contenedor antes de dárselo a Kubernetes? ¿Cómo puede activar automáticamente un nuevo aprovisionamiento de Kubernetes una vez que envía un nuevo código? Hay muchas soluciones creadas sobre Kubernetes para hacer eso. Puede optimizarlos y conectarlos para que se adapten a sus necesidades, o puede usar OpenShift .
OpenShift es una distribución de Kubernetes que combina todas estas ventajas en la parte superior de Kubernetes desnudo de una manera perfectamente empaquetada. OpenShift es para Kubernetes lo que Ubuntu es para el kernel de Linux. No es una «bifurcación» de Kubernetes, sino que se basa en él.
Si desea profundizar en lo que OpenShift crea sobre Kubernetes, puede consultar mi publicación en el tema, OpenShift frente a Kubernetes: arte de la codificación .