Najlepsza odpowiedź
OpenStack to chmura infrastruktury jako usługi (IaaS). Daje użytkownikom interfejs do uruchamiania systemów z określonym procesorem / pamięcią / dyskiem / siecią przy użyciu obrazu opartego na określonym systemie operacyjnym (+ inne funkcje). Użytkownik końcowy może zdecydować, jak korzystać z systemu po utworzeniu przez Openstack systemu / maszyny wirtualnej. Potrafi zainstalować wybraną aplikację itp. I wykonywać swoje zadania. OpenStack obsługuje wiele hiperwizorów wirtualizacji.
OpenShift jest chmurą typu Platform as a Service (PaaS). Daje użytkownikom interfejs do wybierania platformy aplikacji, takiej jak jboss / python, i bezpośredniego uruchamiania obciążenia za pomocą kodu / konfiguracji specyficznej dla aplikacji do uruchomienia. Jest to realizowane za pomocą kontenera / zasobników. Można użyć rejestru Red Hata dla przetestowanych / certyfikowanych kontenerów lub użyć rejestru docker lub innych rejestrów stron trzecich.
Odpowiedź
Nie ma jednego sposobu na porównanie, ponieważ są to głównie różne rzeczy. To powiedziawszy, najpierw spróbuję zdefiniować potrzebę każdego z nich i połączyć je ze sobą.
Zacznijmy od dołu stosu. Do obsługi serwerów potrzebujesz infrastruktury. Z czym mógłbyś iść? Możesz użyć dostawcy VPS, takiego jak DigitalOcean, lub AWS.
A co, jeśli z jakiegoś nietechnicznego powodu nie możesz korzystać z AWS? Na przykład istnieje zgodność z prawem, która stanowi, że dane, które przechowuję i serwery, które obsługuję, znajdują się w tym samym miejscu, co klienci, których obsługuję, a AWS nie ma regionu dla tego samego?
To jest gdzie pojawia się OpenStack . Jest to platforma do zarządzania Twoją infrastrukturą. Potraktujcie to jako implementację AWS typu open source, którą można uruchamiać w czystych centrach danych.
Następnie przechodzimy w górę. Chcemy efektywnego sposobu pakowania i wysyłania naszej aplikacji. Rozważmy przykład z rzeczywistego świata, w którym chcesz przenieść określoną ilość samochodów, węgla i bawełny z punktu A do punktu B. Po prostu nie układamy ich wszystkich na statku i nie wysyłamy! Używamy kontenerów. Kontener to ustandaryzowana jednostka, która zapewnia odpowiednią izolację i pakowanie towarów, aby można je było efektywnie przenosić.
Źródło: Kontenery na statku towarowym, zdjęcie Axela Ahoi (@axelahoi) na Unsplash
Docker to programowy odpowiednik fizycznego kontenera. Zapewnia izolację i pakowanie aplikacji. Możesz je łatwo skalować. Istnieje wiele technologii konteneryzacji, ale Docker jest tą dominującą.
Zdajesz sobie sprawę, że Docker daje Ci tak wiele korzyści i zaczynasz go używać. „Kontenerujesz” swoje aplikacje i wysyłasz je do produkcji. Wkrótce stajesz przed nowym problemem. Jak sprawnie zarządzać wszystkimi tymi kontenerami? Jak mogę zaaranżować moje kontenery?
Źródło : Zdjęcie z próby orkiestry autorstwa Manuela Nägeli (@gwundrig) na Unsplash
Dlaczego przede wszystkim kontenery wymagają orkiestracji? Możliwe, że czytasz tę odpowiedź na komputerze stacjonarnym z systemem operacyjnym. Po otwarciu przeglądarki system operacyjny przydziela zasoby, takie jak pamięć i moc obliczeniowa, do procesu przeglądarki. Po chwili przełączasz karty przeglądarki, a po chwili otwierasz nowy program. System operacyjny wykonuje dużo ciężkiej pracy za kulisami, dzięki czemu wszystkie procesy mają odpowiedni udział w zasobach obliczeniowych, których potrzebują. Potrzebujemy czegoś w rodzaju systemu operacyjnego na poziomie kontenerów. To jest dokładna rola, jaką odgrywa Kubernetes .
Dajemy Kubernetes zestaw zasobów obliczeniowych (zwanych węzłami) i obciążenia, na przykład „Hej, utwórz i daj mi 3 kontenery do uruchomienia tej aplikacji PHP ”, a Kubernetes postanawia utworzyć te kontenery na podstawie moich istniejących zasobów obliczeniowych. Istnieją również inne rozwiązania do orkiestracji kontenerów, takie jak Docker swarm i Mesos.
Kubernetes jest dla twojego klastra tym, czym jądro Linuksa dla twojego systemu operacyjnego. Tak jak jądro zarządza tylko procesami w Twoim systemie operacyjnym, Kubernetes zarządza tylko kontenerami. Aby uruchomić pełnoprawny system operacyjny, potrzebujesz znacznie więcej, takich jak użytkownicy, uprawnienia, sterowniki urządzeń i inne rzeczy. W podobny sposób Kubernetes sam ma ograniczoną użyteczność. Może udostępniać kontenery, jeśli podasz mu specyfikację lub obciążenie. Jak zbudować kontener, zanim przekażesz go Kubernetes? Jak możesz automatycznie uruchomić nową obsługę administracyjną Kubernetes po wysłaniu nowego kodu? Istnieje wiele rozwiązań opartych na Kubernetes, które to umożliwiają. Możesz je zoptymalizować i połączyć zgodnie z własnymi potrzebami lub użyć OpenShift .
OpenShift to dystrybucja Kubernetes, która łączy wszystkie te gadżety z nagim Kubernetesem w zgrabny sposób. OpenShift jest dla Kubernetes tym, czym Ubuntu dla jądra Linuksa. To nie jest „rozwidlenie” Kubernetes, ale zamiast tego tworzy się na nim.
Jeśli chcesz dokładniej przeanalizować, co OpenShift tworzy na platformie Kubernetes, możesz sprawdzić mój post na topic, OpenShift kontra Kubernetes – Craft of Coding .