Bästa svaret
OpenStack är moln för infrastruktur som en tjänst (IaaS). Det ger användarna ett gränssnitt för att starta system för specifikt cpu / minne / disk / nätverk med en bild baserad på ett visst operativsystem (+ andra funktioner). Slutanvändaren kan bestämma hur systemet ska användas efter att Openstack skapat ett system / vm. Han / hon kan installera valfri applikation etc & köra deras arbetsbelastning. OpenStack stöder flera virtualiseringshypervisorer.
OpenShift är plattform som en tjänst (PaaS) moln. Det ger användarna ett gränssnitt för att välja en applikationsplattform som jboss / python och direkt köra sin arbetsbelastning med den applikationsspecifika koden / konfigurationen som ska köras. Detta implementeras med hjälp av container / pods. Man kan använda Red Hats register för testade / certifierade containrar eller använda dockerregister eller andra tredjepartsregister.
Svar
Det finns inget sätt att jämföra eftersom de mestadels är olika saker. Med det sagt ska jag först försöka definiera behovet av var och en av dem och länka dem ihop.
Låt oss börja med botten av stacken. Du behöver infrastruktur för att köra dina servrar. Vad kan du gå med? Du kan använda en VPS-leverantör som DigitalOcean eller använda AWS.
Vad händer om du av någon icke-teknisk anledning inte kan använda AWS? Till exempel finns det en lagstadgad efterlevnad som anger att data jag lagrar och servrar jag kör är i samma geografi som kunderna jag betjänar, och AWS inte har en region för samma?
Detta är där OpenStack kommer in. Det är en plattform för att hantera din infrastruktur. Tänk på det som en öppen källkodsimplementering av AWS som du kan köra på bare metal-datacenter.
Därefter flyttar vi upp stacken. Vi vill ha ett effektivt sätt att paketera och skicka vår app. Tänk på ett verkligt exempel där du vill flytta en fast mängd bilar, kol och bomull från punkt A till punkt B. Vi staplar inte alla i fartyget och skickar det! Vi använder containrar. En container är en standardiserad enhet som ger korrekt isolering och förpackning av dina varor så att de kan flyttas effektivt.
Källa: Behållare på ett lastfartygsfoto av Axel Ahoi (@axelahoi) på Unsplash
Docker är programvaruekvivalenten för en fysisk behållare. Det ger isolering och förpackning för dina appar. Du kan enkelt skala dem. Det finns många containeriseringstekniker, men Docker är den dominerande.
Du inser att Docker ger dig så många fördelar och du börjar använda mer av det. Du ”containeriserar” dina applikationer och skickar dem till produktion. Snart står du inför ett nytt problem. Hur hanterar jag alla dessa containrar effektivt? Hur kan jag orkestrera mina containrar?
Källa : Orkesterövningsfoto av Manuel Nägeli (@gwundrig) på Unsplash
Varför behöver containrar i första hand orkestrering? Chansen är stor att du läser det här svaret på din stationära dator, som kör ett operativsystem. När du öppnar din webbläsare tilldelar ditt operativsystem resurser som minne och datorkraft för webbläsarprocessen. Efter ett tag byter du webbläsarflikar och öppnar sedan ett nytt program ett ögonblick senare. Operativsystemet gör mycket hårt arbete bakom kulisserna så att alla dina processer får en rättvis andel av de datorresurser de behöver. Vi behöver något som ett operativsystem på containernivå. Detta är den exakta roll som Kubernetes spelar.
Vi ger Kubernetes en uppsättning datorer (kallade noder) och arbetsbelastning, som ”Hej, skapa och ge mig 3 behållare för att köra denna PHP-app ”, och Kubernetes planerar att skapa de nämnda behållarna ovanpå mina befintliga datorresurser. Det finns också andra containerorkestrationslösningar, som Docker-svärm och Mesos.
Kubernetes är för ditt kluster vad en Linux-kärna är för ditt operativsystem. Precis som kärnan hanterar endast processerna i ditt operativsystem, hanterar Kubernetes bara behållarna. För att köra ett fullfjädrat operativsystem behöver du mycket mer, som användare, behörigheter, enhetsdrivrutiner och andra saker. På samma sätt har Kubernetes i sig begränsad nytta. Det kan tillhandahålla containrar åt dig om du ger det en specifikation eller en arbetsbelastning. Hur bygger du din container innan du ger den till Kubernetes? Hur kan du automatiskt utlösa en ny Kubernetes-provisionering när du skickar ny kod? Det finns många lösningar byggda ovanpå Kubernetes för att göra det. Du kan antingen optimera och koppla dem efter dina behov, eller så kan du använda OpenShift .
Källa: Present, båge, band och jul HD-foto av Ben White (@benwhitephotography) på Unsplash
OpenShift är en Kubernetes-distribution som kombinerar alla dessa godsaker ovanpå nakna Kubernetes på ett snyggt förpackat sätt. OpenShift är för Kubernetes vad Ubuntu är för Linux-kärnan. Det är inte en ”gaffel” av Kubernetes utan bygger istället ovanpå den.
Om du vill göra ett djupt dyk på vad OpenShift bygger ovanpå Kubernetes kan du kolla in mitt inlägg på ämne, OpenShift vs Kubernetes – Craft of Coding .