Marathon vs Kubernetes vs Docker Swarm na DC / OS z kontenerami Docker

101

Szukam kilku zalet i wad, czy wybrać Marathon i Chronos, Docker Swarm lub Kubernetes podczas uruchamiania kontenerów Docker w DC / OS.

Na przykład, kiedy lepiej jest używać Marathon / Chronos niż Kubernetes i odwrotnie?

Obecnie głównie eksperymentuję, ale mam nadzieję, że po lecie zaczniemy używać jednej z tych usług w produkcji. Może to zdyskwalifikować Docker Swarm, ponieważ nie jestem pewien, czy do tego czasu będzie gotowy do produkcji.

W Docker Swarm podoba mi się to, że zasadniczo są to tylko „polecenia Dockera” i nie musisz uczyć się czegoś zupełnie nowego. Już używamy docker-composei to będzie działać po wyjęciu z pudełka z Docker Swarm (przynajmniej w teorii), więc byłby to duży plus. Moim głównym zmartwieniem w przypadku Docker Swarm jest to, czy obejmie wszystkie przypadki użycia wymagane do uruchomienia systemu w środowisku produkcyjnym.

Johan
źródło

Odpowiedzi:

167

Spróbuję rozbić unikalne aspekty każdego frameworka aranżacji kontenerów na Mesos.

Użyj Docker Swarm, jeśli:

Użyj Kubernetes-Mesos, jeśli:

  • Chcesz uruchomić K8s Pods, które są grupami kontenerów współdzielonych i współdzielonych.
  • Chcesz uruchomić usługę obok jednego lub więcej kontenerów pomocniczych (np. Archiwizatora logów, monitora metryk), które znajdują się obok kontenera nadrzędnego.
  • Chcesz używać opartego na etykietach wykrywania usług, równoważenia obciążenia i kontroli replikacji K8.
  • Zobacz http://kubernetesio.blogspot.com/2015/04/kubernetes-and-mesosphere-dcos.html

Użyj Marathon, jeśli:

  • Chcesz uruchomić długo działające aplikacje / usługi platformy Docker lub innej niż Docker.
  • Chcesz użyć atrybutów Mesos do planowania opartego na ograniczeniach.
  • Chcesz używać grup aplikacji i zależności do uruchamiania, skalowania lub uaktualniania powiązanych usług.
  • Chcesz użyć kontroli kondycji, aby automatycznie ponownie uruchomić usługi w złej kondycji lub wycofać wdrożenia / uaktualnienia w złej kondycji.
  • Chcesz zintegrować HAProxy lub Consul w celu wykrywania usług.
  • Chcesz uruchamiać i monitorować aplikacje za pośrednictwem interfejsu internetowego lub interfejsu API REST.
  • Chcesz użyć frameworka zbudowanego od początku z myślą o Mesosie.

Użyj Chronosa, jeśli:

  • Chcesz uruchomić zadania platformy Docker lub inne niż Docker, które mają zakończyć się.
  • Chcesz zaplanować uruchomienie zadania o określonej godzinie / harmonogramie (a la cron).
  • Chcesz zaplanować przepływ pracy DAG zadań zależnych.
  • Chcesz uruchamiać i monitorować zadania za pośrednictwem interfejsu internetowego lub interfejsu API REST.
  • Chcesz użyć frameworka zbudowanego od początku z myślą o Mesosie.
Adam
źródło
1
Chciałem tylko dodać, że od K8s 1.6 obsługuje następujące (niektóre z nich przez długi czas): * Docker-CRI (beta) i cri-o, frakti, rkt (alfa) dla kontenerów innych niż Docker. * Kontrole stanu, aby zobaczyć, kiedy kontener się uruchomił / nie odpowiada. * Odtworzenie niezdrowych strąków. * Cron jak zadania, zarówno cykliczne, jak i jednorazowe. * Zadania wsadowe (uruchamiane ręcznie i uruchamiane do zakończenia raz). Ponieważ sami Mesosphere mówią, że K8s jest obywatelem pierwszej kategorii na Mesos, argument "zbudowany od początku" również wydaje się nieco mętny ...
Jonas Schubert Erlandsson
15

Chociaż jest nieco przestarzały, pomocne może być przeczytanie Jaka jest różnica między Mesosem Apache a Kubernetesem Google , aby uzyskać prawidłowe podstawy. Zauważ też, że Mesos działa na innym poziomie niż Kubernetes / Marathon / Chronos. Wreszcie, zobacz Docker Swarm + Mesos autorstwa Timothy'ego Chena, pamiętając, że Marathon i Swarm mogą działać jednocześnie na tym samym klastrze Mesos.

Michael Hausenblas
źródło