Marathon vs Kubernetes vs Docker Swarm di DC / OS dengan container Docker

101

Saya mencari beberapa pro dan kontra apakah akan menggunakan Marathon dan Chronos, Docker Swarm atau Kubernetes saat menjalankan kontainer Docker di DC / OS.

Misalnya, kapan lebih baik menggunakan Marathon / Chronos daripada Kubernetes dan sebaliknya?

Saat ini saya sebagian besar bereksperimen tetapi mudah-mudahan kita akan mulai menggunakan salah satu layanan ini dalam produksi setelah musim panas. Ini dapat mendiskualifikasi Docker Swarm karena saya tidak yakin apakah itu akan siap produksi saat itu.

Yang saya suka dari Docker Swarm adalah pada dasarnya ini hanya "perintah Docker" dan Anda tidak perlu mempelajari sesuatu yang benar-benar baru. Kami sudah menggunakan docker-composedan itu akan berhasil di luar kotak dengan Docker Swarm (setidaknya dalam teori) sehingga itu akan menjadi nilai tambah yang besar. Perhatian utama saya dengan Docker Swarm adalah jika itu akan mencakup semua kasus penggunaan yang diperlukan untuk menjalankan sistem dalam produksi.

Johan
sumber

Jawaban:

167

Saya akan mencoba memecah aspek unik dari setiap kerangka orkestrasi kontainer di Mesos.

Gunakan Docker Swarm jika:

Gunakan Kubernetes-Mesos jika:

  • Anda ingin meluncurkan Pod K8s, yang merupakan grup kontainer yang dijadwalkan bersama dan ditempatkan bersama, berbagi resource.
  • Anda ingin meluncurkan layanan bersama satu atau lebih kontainer sidekick (misalnya pengarsip log, monitor metrik) yang hidup di sebelah kontainer induk.
  • Anda ingin menggunakan kontrol penemuan, load-balancing, dan replikasi berbasis label K8s.
  • Lihat http://kubernetesio.blogspot.com/2015/04/kubernetes-and-mesosphere-dcos.html

Gunakan Marathon jika:

  • Anda ingin meluncurkan aplikasi / layanan yang berjalan lama Docker atau non-Docker.
  • Anda ingin menggunakan atribut Mesos untuk penjadwalan berbasis kendala.
  • Anda ingin menggunakan Grup dan Dependensi Aplikasi untuk meluncurkan, menskalakan, atau meningkatkan layanan terkait.
  • Anda ingin menggunakan health check untuk secara otomatis memulai ulang layanan yang tidak sehat atau mengembalikan penerapan / peningkatan yang tidak sehat.
  • Anda ingin mengintegrasikan HAProxy atau Consul untuk penemuan layanan.
  • Anda ingin meluncurkan dan memantau aplikasi melalui UI web atau REST API.
  • Anda ingin menggunakan kerangka kerja yang dibangun dari awal dengan Mesos dalam pikiran.

Gunakan Chronos jika:

  • Anda ingin meluncurkan tugas Docker atau non-Docker yang diharapkan keluar.
  • Anda ingin menjadwalkan tugas untuk dijalankan pada waktu / jadwal tertentu (a la cron).
  • Anda ingin menjadwalkan alur kerja DAG tugas dependen.
  • Anda ingin meluncurkan dan memantau pekerjaan melalui UI web atau REST API.
  • Anda ingin menggunakan kerangka kerja yang dibangun dari awal dengan Mesos dalam pikiran.
Adam
sumber
1
Saya hanya ingin menambahkan bahwa pada K8s 1.6 itu untuk mendukung yang berikut (beberapa di antaranya untuk waktu yang lama): * Docker-CRI (beta) dan cri-o, frakti, rkt (alpha) untuk wadah non Docker. * Pemeriksaan kesehatan untuk melihat kapan penampung telah dimulai / tidak lagi merespons. * Rekreasi polong yang tidak sehat. * Cron menyukai pekerjaan, baik berulang maupun sekali. * Pekerjaan batch (dimulai secara manual dan berjalan sampai selesai sekali). Karena Mesosphere sendiri mengatakan K8s adalah warga negara kelas satu di Mesos, argumen "dibangun dari awal" juga terasa agak kabur ...
Jonas Schubert Erlandsson
15

Meskipun agak ketinggalan jaman, mungkin berguna untuk membaca Apa perbedaan antara Apache's Mesos dan Google Kubernetes , untuk mendapatkan beberapa dasar yang benar. Juga, perhatikan bahwa Mesos beroperasi pada level yang berbeda dari Kubernetes / Marathon / Chronos. Last but not least, lihat Docker Swarm + Mesos oleh Timothy Chen, ingatlah bahwa Marathon dan Swarm dapat beroperasi secara bersamaan di cluster Mesos yang sama.

Michael Hausenblas
sumber