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.

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.

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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.