Jaka jest różnica między Mesos Apache a Kubernetes Google

385

Jaka jest dokładnie różnica między Mesache Apache a Kubernetes Google? Rozumiem, że oba są oprogramowaniem do zarządzania klastrami serwerów. Czy ktoś może wyjaśnić, gdzie są główne różnice - kiedy preferowane byłyby ramy?

Dlaczego miałbyś chcieć używać Kubernetesa na szczycie Mesosfery ?

binaranomalia
źródło

Odpowiedzi:

515

Kubernetes to projekt typu open source, który przenosi możliwości zarządzania klastrami w stylu Google do świata maszyn wirtualnych lub scenariuszy „metalowych”. Działa bardzo dobrze z nowoczesnymi środowiskami systemów operacyjnych (takimi jak CoreOS lub Red Hat Atomic), które oferują lekkie „węzły” obliczeniowe, które są dla Ciebie zarządzane. Jest napisany w Golang i jest lekki, modułowy, przenośny i rozszerzalny. My (zespół Kubernetes) współpracujemy z wieloma różnymi firmami technologicznymi (w tym Mesosferą, która jest kuratorem projektu open source Mesos), aby ustanowić Kubernetes jako standardowy sposób interakcji z klastrami obliczeniowymi. Chodzi o to, aby odtworzyć wzorce, które widzimy, że ludzie muszą tworzyć aplikacje klastrowe w oparciu o nasze doświadczenie w Google. Niektóre z tych pojęć obejmują:

  • strąki - sposób na grupowanie pojemników razem
  • kontrolery replikacji - sposób obsługi cyklu życia kontenerów
  • etykiety - sposób na wyszukiwanie i wyszukiwanie kontenerów oraz
  • usługi - zestaw kontenerów pełniących wspólną funkcję.

Tak więc z samym Kubernetes będziesz mieć coś, co jest proste, łatwe do uruchomienia, przenośne i rozszerzalne, które dodaje „klaster” jako rzeczownik do rzeczy, którymi zarządzasz w możliwie najlżejszy sposób. Uruchom aplikację w klastrze i przestań martwić się o indywidualną maszynę. W tym przypadku klaster jest elastycznym zasobem, podobnie jak maszyna wirtualna. Jest to logiczna jednostka obliczeniowa. Podkręć, użyj, zmień rozmiar, szybko i łatwo ścisz.

W przypadku Mesos, podstawowa wizja nakłada się na siebie, ale produkty znajdują się w różnych momentach cyklu życia i mają różne słodkie punkty. Mesos to jądro systemów rozproszonych, które łączy wiele różnych maszyn w logiczny komputer. Stworzono go dla świata, w którym masz dużo zasobów fizycznych, aby stworzyć duży statyczny klaster obliczeniowy. Wspaniałą rzeczą jest to, że wiele nowoczesnych skalowalnych aplikacji do przetwarzania danych działa dobrze na Mesos (Hadoop, Kafka, Spark) i jest to miłe, ponieważ możesz je wszystkie uruchomić na tej samej podstawowej puli zasobów, wraz z aplikacjami kontenerowymi New Age . Jest nieco cięższy niż projekt Kubernetes, ale staje się łatwiejszy i łatwiejszy do zarządzania dzięki pracy ludzi takich jak Mesosphere.

Teraz naprawdę interesujące jest to, że Mesos jest obecnie dostosowywany w celu dodania wielu koncepcji Kubernetes i obsługi interfejsu API Kubernetes. Będzie więc bramą do uzyskania większych możliwości dla Twojej aplikacji Kubernetes (wzorzec wysokiej dostępności, bardziej zaawansowana semantyka planowania, możliwość skalowania do bardzo dużej liczby węzłów), jeśli ich potrzebujesz, i dobrze nadaje się do uruchamiania obciążeń produkcyjnych (Kubernetes jest nadal w stanie alfa).

Na pytanie mam tendencję do mówienia:

  1. Kubernetes to świetne miejsce na początek, jeśli jesteś nowy w świecie klastrów; jest to najszybszy, najłatwiejszy i najlżejszy sposób na kopnięcie opon i rozpoczęcie eksperymentowania z rozwojem zorientowanym na klaster. Oferuje bardzo wysoki poziom przenośności, ponieważ jest obsługiwany przez wielu różnych dostawców (Microsoft, IBM, Red Hat, CoreOs, MesoSphere, VMWare itp.).

  2. Jeśli masz istniejące obciążenia (Hadoop, Spark, Kafka itp.), Mesos daje Ci strukturę, która pozwala ci przeplatać te obciążenia ze sobą i mieszać niektóre nowe rzeczy, w tym aplikacje Kubernetes.

  3. Mesos daje ci zawór bezpieczeństwa, jeśli potrzebujesz możliwości, które nie zostały jeszcze zaimplementowane przez społeczność w ramach Kubernetes.

Craig Mcluckie
źródło
4
Świetny przegląd. Dwie krótkie przemyślenia: 1) Uważam, że Kubernetes jest teraz wersją beta, a nie alfa? 2) Dodaj informacje o maratonie?
knite
57
Podsumowując (do szybkiego przeczytania - mam nadzieję, że dobrze to zrozumiem): kubernetes jest menedżerem klastra dla kontenerów (tylko?), Podczas gdy mesos to jądro systemu rozproszonego, które sprawi, że twój klaster będzie wyglądał jak jeden gigantyczny system komputerowy dla wszystkich obsługiwanych frameworków oraz aplikacje, które są budowane do uruchamiania na Mesos. Jednak kubernetes to jeden (między innymi) framework, który można uruchomić na Mesos. W ten sposób połączenie obu kończy się klastrem, który nie jest klastrem, i menedżerem klastra, który nie ma klastra do zarządzania. Świetny nowy świat :-) (J / K ma wiele korzyści, które można z tego uzyskać, ponieważ kub. To więcej niż clst. Phys. Res.)
masi
7
Oto Mesosfera mówi dokładnie o tym na wydarzeniu z okazji premiery Kubernetes 1.0: youtube.com/… - wyłączenie odpowiedzialności: to ja.
Air
68

Oba projekty mają na celu ułatwienie wdrażania aplikacji i zarządzania nimi w kontenerach w centrum danych lub chmurze.

Aby wdrożyć aplikacje na Mesos, można użyć Marathon lub Kubernetes for Mesos.

Maraton jest ogólnosystemowym systemem inicjującym i kontrolnym do uruchamiania usług Linux w cgroups i kontenerach Docker. Maraton ma wiele różnych funkcji wdrażania kanaryjskiego i jest bardzo dojrzałym projektem.

Maraton działa na Mesos, który jest wysoce skalowalnym, przetestowanym w boju i elastycznym menedżerem zasobów. Udowodniono, że maraton jest skalowany i działa w wielu środowiskach produkcyjnych.

Stos technologii Mesos i Mesosphere zapewnia środowisko podobne do chmury do obsługi istniejących obciążeń Linuksa, ale zapewnia także środowisko macierzyste do budowania nowych systemów rozproszonych.

Mesos to jądro systemów rozproszonych, z pełnym API do programowania bezpośrednio w centrum danych. Wyodrębnia podstawowy sprzęt (np. Goły metal lub maszyny wirtualne) i po prostu odsłania zasoby. Zawiera prymitywy do pisania aplikacji rozproszonych (np. Spark pierwotnie był aplikacją Mesos, Chronos itp.), Takich jak przekazywanie wiadomości, wykonywanie zadań itp. W ten sposób możliwe są całkowicie nowe aplikacje. Apache Spark jest przykładem nowego frameworka (zwanego żargonem Mesos), który został pierwotnie zbudowany dla Mesos. Umożliwiło to naprawdę szybki rozwój - programiści Spark nie musieli martwić się siecią, aby rozdzielić zadania między węzły, ponieważ jest to podstawowa prymitywna wersja Mesos.

O ile mi wiadomo, Kubernetes nie jest dziś używany w Google we wdrożeniach produkcyjnych. Do produkcji Google używa Omega / Borg, który jest znacznie bardziej podobny do modelu Mesos / Marathon. Jednak wielką zaletą korzystania z Mesos jako podstawy jest to, że zarówno Kubernetes, jak i Maraton mogą na nim działać.

Więcej zasobów o maratonie:

https://mesosphere.github.io/marathon/

Wideo: https://www.youtube.com/watch?v=hZNGST2vIds

mezospherian
źródło
37

Kubernetes i Mesos to połączenie wykonane w niebie. Kubernetes umożliwia abstrakcję zasobnika (grupy kolokowanych pojemników) wraz z etykietami zasobnika w celu wykrywania usług, równoważenia obciążenia i kontroli replikacji. Mesos zapewnia dokładną alokację zasobów dla strąków między węzłami w klastrze i może sprawić, że Kubernetes będzie ładnie współpracował z innymi strukturami działającymi na tych samych zasobach klastra.

z readme kubernetes-mesos

herodot
źródło
18

Mesos i Kubernetes mogą być używane zarówno do zarządzania klastrem maszyn, jak i do usuwania sprzętu.

Mesos, z założenia, nie zapewnia harmonogramu (aby zdecydować, gdzie i kiedy uruchomić procesy i co zrobić, gdy proces się nie powiedzie), możesz użyć czegoś takiego jak Marathon lub Chronos, lub napisać własny.

Kubernetes wykona dla ciebie planowanie od razu po wyjęciu z pudełka i może być używane jako harmonogram dla Mesos (popraw mnie, jeśli się tu mylę!), Gdzie możesz ich używać razem. Mesos może mieć wiele harmonogramów współużytkujących ten sam klaster, więc teoretycznie możesz uruchamiać kubernetes i chronos razem na tym samym sprzęcie.

Bardzo uproszczone: jeśli chcesz kontrolować, jak zaplanowane są kontenery, wybierz Mesos, w przeciwnym razie Kubernetes się kołysze.

użytkownik2851943
źródło
1
Ta odpowiedź jest niedokładna i myląca. Nie ma łatwego sposobu na uruchomienie Mesos na Kubernetes - w rzeczywistości byłby to odwrócenie architektury. Ponieważ Kubernetes jest mniej ogólny niż Mesos, sensowniej jest uruchamiać go na Mesosie.
ssk2
1
Tak, miałem na myśli kubernetes działający na Mesos .. Kubernetes zapewnia logikę planowania dla szkieletu Mesos, a mesos zajmuje się uruchomieniem zadania itp. Przepraszam, jeśli nie było to jasne.
user2851943
2
@air Chcę wiedzieć, jak zdefiniowałbyś tutaj harmonogram? Sam Mesos nie wydaje się zapewniać żadnej logiki planowania? Wszystko to jest obsługiwane w Chronos / Marathon / etc? (być może coś mi umknęło! :))
user2851943
6
Wydaje mi się, że rozumiem, o co ci chodzi - Mesos to platforma, która pozwala na podłączenie harmonogramów. Zaskoczyło mnie to sformułowanie sugerujące, że Mesos pominął coś ważnego („Mesos nie zapewnia”), kiedy to projekt. Usunąłem moją opinię.
Air
5
Ta odpowiedź jest dokładna. Mesos koncentruje się na zarządzaniu zasobami i rozdziela harmonogramy, umożliwiając wtykowe ramy. Dobrym przykładem jest to, co Netflix zrobił, pisząc harmonogram: Fenzo techblog.netflix.com/2015/08/…
Camilo Crespo
5

Podoba mi się ten krótki film o materiałach do nauki mesos

w przypadku klastrów typu bare metal należy odradzać stosy, takie jak HDFS, SPARK, MR itp., więc jeśli uruchomisz zadania związane z nimi za pomocą zarządzania klastrami typu bare metal, będzie dużo zimnego czasu startu.

dzięki mesosom możesz zainstalować te usługi na surowych metalach i możesz uniknąć czasu oczekiwania na te usługi podstawowe. To jest coś, co mesos robi dobrze. i można go wykorzystać, budując na nim kubernetes.

mrugać
źródło
3

„Rozumiem, że oba są oprogramowaniem do zarządzania klastrami serwerów”.

To stwierdzenie nie jest do końca prawdziwe. Kubernetes nie zarządza klastrami serwerów, organizuje takie kontenery, że współpracują one przy minimalnym wysiłku i narażeniu. Kubernetes pozwala definiować części aplikacji jako „zasobniki” (jeden lub więcej kontenerów), które są dostarczane przez „wdrożenia” lub „zestawy demonów” (i kilka innych) i udostępniane zewnętrznemu światu za pośrednictwem usług. Jednak Kubernetes nie zarządza samym klastrem (istnieją narzędzia, które mogą udostępniać, konfigurować i skalować klastry, ale nie są one częścią samego Kubernetes).

Z drugiej strony Mesos zbliża się do „zarządzania klastrami”, ponieważ może kontrolować, co jest uruchomione, ale nie tylko w zakresie planowania kontenerów. Mesos zarządza także samodzielnym oprogramowaniem działającym na serwerach klastra. Mimo, że jest najczęściej używana jako alternatywa dla Kubernetes, Mesos może z łatwością współpracować z Kubernetes, ponieważ podczas gdy funkcjonalność nakłada się w wielu obszarach, Mesos może zrobić więcej (ale w nakładających się częściach Kubernetes zwykle jest lepszy).

Andrei Dascalu
źródło