La migliore risposta
OpenStack è il cloud Infrastructure as a Service (IaaS). Fornisce agli utenti uninterfaccia per avviare sistemi di cpu / memoria / disco / rete specifici utilizzando unimmagine basata su un determinato sistema operativo (+ altre funzionalità). Lutente finale può decidere come utilizzare il sistema dopo che Openstack ha creato un sistema / vm. Lui / lei può installare alcune applicazioni a scelta ecc. Ed eseguire il proprio carico di lavoro. OpenStack supporta più hypervisor di virtualizzazione.
OpenShift è il cloud Platform as a Service (PaaS). Fornisce agli utenti uninterfaccia per selezionare una piattaforma applicativa come jboss / python ed eseguire direttamente il loro carico di lavoro con il codice / configurazione specifico dellapplicazione da eseguire. Questo è implementato usando container / pod. È possibile utilizzare il registro di Red Hat per container testati / certificati o utilizzare anche il registro docker o qualsiasi altro registro di terze parti.
Risposta
Non esiste un modo per confrontare perché sono principalmente cose differenti. Detto questo, proverò prima a definire la necessità di ciascuno di questi e a collegarli insieme.
Cominciamo con il fondo della pila. Hai bisogno di uninfrastruttura per eseguire i tuoi server. Con cosa potresti andare? Puoi utilizzare un provider VPS come DigitalOcean o AWS.
E se, per qualche motivo non tecnico, non fosse possibile utilizzare AWS? Ad esempio, esiste una conformità legale che afferma che i dati che memorizzo e i server che gestisco si trovano nella stessa area geografica dei clienti che servo e AWS non ha una regione per lo stesso?
Questo è dove entra in gioco OpenStack . È una piattaforma per gestire la tua infrastruttura. Considerala unimplementazione open source di AWS che puoi eseguire su data center bare metal.
Successivamente, ci spostiamo verso lalto. Vogliamo un modo efficiente per imballare e spedire la nostra app. Considera un esempio del mondo reale in cui desideri spostare una quantità fissa di auto, carbone e cotone dal punto A al punto B. Semplicemente non li impiliamo tutti sulla nave e lo spediamo! Usiamo contenitori. Un container è ununità standardizzata che fornisce un isolamento e un imballaggio adeguati delle tue merci in modo che possano essere spostate in modo efficiente.
Fonte: Foto di container su una nave da carico di Axel Ahoi (@axelahoi) su Unsplash
Docker è lequivalente software di un contenitore fisico. Fornisce isolamento e packaging per le tue app. Puoi ridimensionarli facilmente. Esistono molte tecnologie di containerizzazione, ma Docker è quella dominante.
Ti rendi conto che Docker ti offre così tanti vantaggi e inizi a usarne di più. Tu “containerizzi” le tue applicazioni e le spedisci alla produzione. Presto dovrai affrontare un nuovo problema. Come gestire tutti questi contenitori in modo efficiente? Come posso orchestrare i miei contenitori?
Fonte : Foto delle prove dellorchestra di Manuel Nägeli (@gwundrig) su Unsplash
Perché i container hanno bisogno dellorchestrazione in primo luogo? È probabile che tu stia leggendo questa risposta sul tuo computer desktop, che esegue un sistema operativo. Quando apri il browser, il tuo sistema operativo alloca risorse come memoria e potenza di calcolo per il processo del browser. Dopo un po , cambi le schede del browser e poi, un attimo dopo, apri un nuovo programma. Il sistema operativo fa molto duro lavoro dietro le quinte in modo che tutti i tuoi processi ottengano una buona parte delle risorse di elaborazione di cui hanno bisogno. Abbiamo bisogno di qualcosa come un sistema operativo a livello di container. Questo è il ruolo esatto svolto da Kubernetes .
Diamo a Kubernetes una serie di risorse di elaborazione (chiamate nodi) e un carico di lavoro, come “Ehi, crea e dammi 3 contenitori per eseguire questa app PHP “, e Kubernetes si propone di creare i suddetti contenitori in aggiunta alle mie risorse di elaborazione esistenti. Esistono anche altre soluzioni di orchestrazione dei contenitori, come Docker swarm e Mesos.
Kubernetes è per il tuo cluster ciò che un kernel Linux è per il tuo sistema operativo. Proprio come il kernel gestisce solo i processi nel tuo sistema operativo, Kubernetes gestisce solo i contenitori. Per eseguire un sistema operativo completo, hai bisogno di molto di più, come utenti, autorizzazioni, driver di dispositivo e altre cose. Allo stesso modo, Kubernetes da solo ha unutilità limitata. Può fornire container per te se gli dai una specifica o un carico di lavoro. Come costruisci il tuo container prima di darlo a Kubernetes? Come puoi attivare automaticamente un nuovo provisioning Kubernetes una volta spedito il nuovo codice? Ci sono molte soluzioni costruite su Kubernetes per farlo. Puoi ottimizzarli e cablarli in base alle tue esigenze oppure puoi utilizzare OpenShift .
Fonte: Regalo, fiocco, nastro e foto natalizia in HD di Ben White (@benwhitephotography) su Unsplash
OpenShift è una distribuzione Kubernetes che combina tutte queste chicche su Kubernetes nudo in un modo ben confezionato. OpenShift è per Kubernetes ciò che Ubuntu è per il kernel Linux. Non è un “fork” di Kubernetes, ma si basa invece su di esso.
Se vuoi fare unanalisi approfondita di ciò che OpenShift costruisce su Kubernetes, puoi controllare il mio post sul topic, OpenShift vs Kubernetes – Craft of Coding .