Beste svaret
OpenStack er Infrastructure as a service (IaaS) sky. Det gir brukerne et grensesnitt for å starte systemer med spesifikk CPU / minne / disk / nettverk ved hjelp av et bilde basert på et bestemt operativsystem (+ andre funksjoner). Sluttbrukeren kan bestemme hvordan systemet skal brukes etter at Openstack oppretter et system / vm. Han / hun kan installere en applikasjon etter eget valg osv. Og kjøre arbeidsmengden. OpenStack støtter flere virtualiseringshypervisorer.
OpenShift er Platform as a Service (PaaS) sky. Det gir brukerne et grensesnitt for å velge en applikasjonsplattform som jboss / python og kjøre arbeidsmengden direkte med den applikasjonsspesifikke koden / konfigurasjonen som skal kjøres. Dette implementeres ved hjelp av container / pods. Man kan bruke Red Hats register for testede / sertifiserte containere eller bruke dockerregister eller andre tredjepartsregister.
Svar
Det er ingen måte å sammenligne fordi de er for det meste forskjellige ting. Når det er sagt, prøver jeg først å definere behovet for hver av disse og knytte dem sammen.
La oss begynne med bunnen av bunken. Du trenger infrastruktur for å kjøre serverne dine. Hva kan du gå med? Du kan bruke en VPS-leverandør som DigitalOcean, eller bruke AWS.
Hva om du av en ikke-teknisk grunn ikke kan bruke AWS? For eksempel er det en lovoverensstemmelse som sier at dataene jeg lagrer og serverne jeg kjører er i samme geografi som kundene jeg betjener, og AWS ikke har en region for det samme?
Dette er der OpenStack kommer inn. Det er en plattform for å administrere infrastrukturen din. Tenk på det som en åpen kildekodeimplementering av AWS som du kan kjøre på bare metal-datasentre.
Deretter beveger vi oss opp i bunken. Vi ønsker en effektiv måte å pakke og sende appen vår på. Tenk på et eksempel fra den virkelige verden der du vil flytte en fast mengde biler, kull og bomull fra punkt A til punkt B. Vi stabler ikke alle sammen i skipet og sender det avgårde! Vi bruker containere. En container er en standardisert enhet som gir riktig isolering og emballering av varene dine slik at de kan flyttes effektivt.
Kilde: Beholdere på et lasteskipfoto av Axel Ahoi (@axelahoi) på Unsplash
Docker er programvareekvivalenten til en fysisk container. Det gir isolasjon og emballasje for appene dine. Du kan skalere dem enkelt. Det er mange containeriseringsteknologier, men Docker er den dominerende.
Du skjønner at Docker gir deg så mange fordeler, og du begynner å bruke mer av det. Du «containeriserer» applikasjonene dine og sender dem til produksjon. Snart står du overfor et nytt problem. Hvordan håndterer jeg alle disse containerne effektivt? Hvordan kan jeg orkestrere containerene mine?
Kilde : Øvrig orkesterfoto av Manuel Nägeli (@gwundrig) på Unsplash
Hvorfor trenger containere orkestrering i utgangspunktet? Sjansen er stor for at du leser dette svaret på din stasjonære datamaskin, som kjører et operativsystem. Når du åpner nettleseren din, tildeler operativsystemet ressurser som minne og datakraft til nettleserprosessen. Etter en stund bytter du nettleserfanen og åpner et nytt program et øyeblikk senere. OS gjør mye hardt arbeid bak kulissene, slik at alle prosessene dine får en god andel av databehandlingsressursene de trenger. Vi trenger noe som et operativsystem på containernivå. Dette er den nøyaktige rollen Kubernetes spiller.
Vi gir Kubernetes et sett med databehandlingsressurser (kalt noder) og arbeidsmengde, som «Hei, lage og gi meg 3 containere for å kjøre denne PHP-appen ”, og Kubernetes setter seg for å lage de nevnte containerne på toppen av mine eksisterende databehandlingsressurser. Det finnes også andre containerorkestrasjonsløsninger, som Docker-sverm og Mesos.
Kubernetes er for klyngen din hva en Linux-kjerne er for operativsystemet ditt. Akkurat som kjernen bare administrerer prosessene i operativsystemet ditt, administrerer Kubernetes bare containerne. For å kjøre et fullverdig operativsystem, trenger du mye mer, som brukere, tillatelser, enhetsdrivere og andre ting. På samme måte har Kubernetes i seg selv begrenset nytte. Det kan skaffe containere for deg hvis du gir den en spesifikasjon eller en arbeidsmengde. Hvordan bygger du containeren din før du gir den til Kubernetes? Hvordan kan du automatisk utløse en ny Kubernetes-klargjøring når du har sendt ny kode? Det er mange løsninger bygget på toppen av Kubernetes for å gjøre det. Du kan enten optimalisere og koble dem til dine behov, eller du kan bruke OpenShift .
Kilde: Present, bue, bånd og jul HD-bilde av Ben White (@benwhitephotography) på Unsplash
OpenShift er en Kubernetes-distribusjon som kombinerer alle disse godbitene på toppen av bare Kubernetes på en pent pakket måte. OpenShift er for Kubernetes hva Ubuntu er for Linux-kjernen. Det er ikke en «gaffel» av Kubernetes, men bygger i stedet oppå den.
Hvis du vil gjøre et dypdykk på hva OpenShift bygger på toppen av Kubernetes, kan du sjekke ut innlegget mitt på emne, OpenShift vs Kubernetes – Craft of Coding .