Apa perbedaan antara Mesos Apache dan Kubernet Google

385

Apa sebenarnya perbedaan antara Mesos Apache dan Kubernetes Google? Saya mengerti keduanya adalah perangkat lunak manajemen server cluster. Adakah yang bisa menjelaskan di mana perbedaan utamanya - kapan kerangka mana yang lebih disukai?

Mengapa Anda ingin menggunakan Kubernet di atas Mesosphere ?

binaryanomaly
sumber

Jawaban:

516

Kubernetes adalah proyek sumber terbuka yang menghadirkan kapabilitas manajemen klaster 'gaya Google' ke dunia mesin virtual, atau skenario 'on the metal'. Ini bekerja sangat baik dengan lingkungan sistem operasi modern (seperti CoreOS atau Red Hat Atomic) yang menawarkan 'node' komputasi ringan yang dikelola untuk Anda. Itu ditulis dalam Golang dan ringan, modular, portabel dan dapat diperpanjang. Kami (tim Kubernetes) bekerja dengan sejumlah perusahaan teknologi yang berbeda (termasuk Mesosphere yang mengelola proyek open source Mesos) untuk menetapkan Kubernetes sebagai cara standar untuk berinteraksi dengan cluster komputasi. Idenya adalah untuk mereproduksi pola yang kami lihat dibutuhkan orang untuk membangun aplikasi cluster berdasarkan pengalaman kami di Google. Beberapa konsep ini meliputi:

  • polong - cara mengelompokkan wadah bersama
  • pengendali replikasi - cara untuk menangani siklus hidup kontainer
  • label - cara untuk menemukan dan meminta wadah, dan
  • layanan - seperangkat wadah melakukan fungsi umum.

Jadi dengan Kubernetes saja Anda akan memiliki sesuatu yang sederhana, mudah untuk dijalankan, portabel dan dapat diperluas yang menambahkan 'cluster' sebagai kata benda untuk hal-hal yang Anda kelola dengan cara yang paling ringan. Jalankan aplikasi pada sebuah cluster, dan berhenti mencemaskan tentang satu mesin. Dalam hal ini, cluster adalah sumber daya yang fleksibel seperti VM. Ini adalah unit komputasi logis. Nyalakan, gunakan, ubah ukuran, turunkan dengan cepat dan mudah.

Dengan Mesos, ada cukup banyak tumpang tindih dalam hal visi dasar, tetapi produk berada pada titik yang sangat berbeda dalam siklus hidup mereka dan memiliki titik-titik manis yang berbeda. Mesos adalah kernel sistem terdistribusi yang menjahit banyak mesin yang berbeda menjadi komputer logis. Itu lahir untuk dunia di mana Anda memiliki banyak sumber daya fisik untuk membuat cluster komputasi statis besar. Hal yang hebat tentang hal itu adalah bahwa banyak aplikasi pemrosesan data skalabel modern berjalan dengan baik di Mesos (Hadoop, Kafka, Spark) dan itu bagus karena Anda dapat menjalankan semuanya pada kumpulan sumber daya dasar yang sama, bersama dengan aplikasi kemasan wadah zaman baru Anda. . Ini agak lebih berat daripada proyek Kubernetes, tetapi semakin mudah dan lebih mudah untuk dikelola berkat pekerjaan orang-orang seperti Mesosphere.

Sekarang yang menjadi sangat menarik adalah bahwa Mesos saat ini sedang diadaptasi untuk menambahkan banyak konsep Kubernetes dan untuk mendukung API Kubernetes. Jadi itu akan menjadi pintu gerbang untuk mendapatkan lebih banyak kemampuan untuk aplikasi Kubernetes Anda (master ketersediaan tinggi, semantik penjadwalan lebih lanjut, kemampuan untuk skala ke sejumlah besar node) jika Anda membutuhkannya, dan sangat cocok untuk menjalankan beban kerja produksi (Kubernetes masih dalam kondisi alfa).

Ketika ditanya, saya cenderung mengatakan:

  1. Kubernetes adalah tempat yang bagus untuk memulai jika Anda baru mengenal dunia pengelompokan; ini adalah cara tercepat, termudah dan teringan untuk menendang ban dan mulai bereksperimen dengan pengembangan berorientasi klaster. Ini menawarkan tingkat portabilitas yang sangat tinggi karena didukung oleh banyak penyedia berbeda (Microsoft, IBM, Red Hat, CoreOs, MesoSphere, VMWare, dll).

  2. Jika Anda memiliki beban kerja yang ada (Hadoop, Spark, Kafka, dll), Mesos memberi Anda kerangka kerja yang memungkinkan Anda menghubungkan beban kerja tersebut satu sama lain, dan mencampur beberapa hal baru termasuk aplikasi Kubernetes.

  3. Mesos memberi Anda katup pelarian jika Anda membutuhkan kemampuan yang belum diimplementasikan oleh komunitas dalam kerangka Kubernetes.

Craig Mcluckie
sumber
4
Ikhtisar hebat. Dua pemikiran singkat: 1) Saya percaya Kubernetes sekarang beta daripada alpha? 2) Tambahkan informasi tentang Marathon?
knite
57
Singkatnya (untuk bacaan cepat - Saya harap saya bisa melakukannya dengan benar): kubernetes adalah manajer cluster untuk kontainer (hanya?) Sementara mesos adalah kernel sistem terdistribusi yang akan membuat cluster Anda terlihat seperti satu sistem komputer raksasa untuk semua kerangka kerja yang didukung dan aplikasi yang dibangun untuk dijalankan di mesos. Namun kubernet adalah salah satu (di antara yang lain) kerangka kerja yang bisa dijalankan di mesos. Dengan demikian, menggabungkan Anda berakhir dengan sebuah cluster yang tidak ada cluster dan manajer cluster yang tidak memiliki cluster untuk dikelola. Dunia baru yang hebat :-) (J / K ada banyak manfaat yang Anda dapatkan dari ini sejak kub. Lebih dari clst. Phys. Res.)
masi
7
Inilah Mesosphere yang membicarakan hal ini dengan tepat di acara Peluncuran Kubernetes 1.0: youtube.com/... - disclaimer: ini saya.
Air
68

Kedua proyek bertujuan untuk mempermudah penerapan & mengelola aplikasi di dalam wadah di pusat data atau cloud Anda.

Untuk menyebarkan aplikasi di atas Mesos, seseorang dapat menggunakan Marathon atau Kubernetes untuk Mesos.

Marathon adalah sistem init dan kontrol cluster-lebar untuk menjalankan layanan Linux dalam cgroups dan wadah Docker. Marathon memiliki sejumlah fitur penyebaran kenari yang berbeda dan merupakan proyek yang sangat matang.

Marathon berjalan di atas Mesos, yang merupakan manajer sumber daya yang sangat scalable, teruji pertempuran, dan fleksibel. Marathon terbukti memiliki skala dan berjalan di banyak lingkungan produksi.

Tumpukan teknologi Mesos dan Mesosphere menyediakan lingkungan seperti awan untuk menjalankan beban kerja Linux yang ada, tetapi juga menyediakan lingkungan asli untuk membangun sistem terdistribusi baru.

Mesos adalah kernel sistem terdistribusi, dengan API lengkap untuk pemrograman langsung terhadap pusat data. Ini abstrak perangkat keras yang mendasarinya (misalnya bare metal atau VMs) dan hanya mengekspos sumber daya. Ini berisi primitif untuk menulis aplikasi terdistribusi (misalnya Spark pada awalnya adalah Aplikasi Mesos, Chronos, dll.) Seperti Pengesahan Pesan, Eksekusi Tugas, dll. Dengan demikian, seluruh aplikasi baru dimungkinkan. Apache Spark adalah salah satu contoh untuk kerangka kerja baru (dalam jargon Mesos disebut) yang awalnya dibangun untuk Mesos. Ini memungkinkan pengembangan sangat cepat - pengembang Spark tidak perlu khawatir tentang jaringan untuk mendistribusikan tugas di antara node karena ini adalah inti primitif di Mesos.

Sepengetahuan saya, Kubernetes tidak digunakan di dalam Google dalam penyebaran produksi hari ini. Untuk produksi, Google menggunakan Omega / Borg, yang jauh lebih mirip dengan model Mesos / Marathon. Namun hal yang hebat tentang menggunakan Mesos sebagai fondasi adalah bahwa baik Kubernetes dan Marathon dapat berjalan di atasnya.

Sumber informasi lain tentang Marathon:

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

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

mesospherian
sumber
37

Kubernetes dan Mesos adalah pasangan yang dibuat di surga. Kubernetes memungkinkan abstraksi Pod (grup dari wadah yang ditempatkan bersama), bersama dengan label Pod untuk penemuan layanan, penyeimbangan muatan, dan kontrol replikasi. Mesos menyediakan alokasi sumber daya berbutir halus untuk pod lintas node dalam sebuah cluster, dan dapat membuat Kubernet bermain dengan baik dengan kerangka kerja lain yang berjalan pada sumber daya cluster yang sama.

dari readme of kubernetes-mesos

herodot
sumber
18

Mesos dan Kubernetes dapat digunakan untuk mengelola sekelompok mesin dan memisahkan perangkat keras.

Mesos, berdasarkan desain, tidak memberi Anda penjadwal (untuk memutuskan di mana dan kapan menjalankan proses dan apa yang harus dilakukan jika proses gagal), Anda dapat menggunakan sesuatu seperti Marathon atau Chronos, atau menulis sendiri.

Kubernetes akan melakukan penjadwalan untuk Anda di luar kotak, dan dapat digunakan sebagai penjadwal untuk Mesos (tolong perbaiki saya jika saya salah di sini!) Yang merupakan tempat Anda dapat menggunakannya bersama-sama. Mesos dapat memiliki beberapa penjadwal berbagi kluster yang sama, jadi secara teori Anda bisa menjalankan kubernet dan chronos bersama pada perangkat keras yang sama.

Sangat simpel: jika Anda ingin mengontrol bagaimana wadah Anda dijadwalkan, pilih Mesos, kalau tidak batu Kubernet.

pengguna2851943
sumber
1
Jawaban ini tidak akurat dan membingungkan. Tidak ada cara mudah untuk menjalankan Mesos di Kubernetes - dan pada kenyataannya, itu akan menjadi inversi arsitektur. Karena Kubernetes kurang umum dalam fokus daripada Mesos, lebih masuk akal untuk menjalankannya di atas Mesos.
ssk2
1
Ya, maksud saya kubernet berjalan di atas Mesos .. Kubernetes menyediakan logika penjadwalan untuk kerangka kerja mesos dan mesos menangani pekerjaan yang sedang berjalan dll. Maaf jika itu tidak jelas.
user2851943
2
@air Saya tertarik untuk mengetahui bagaimana Anda mendefinisikan penjadwal di sini? Mesos sendiri tampaknya tidak menyediakan logika penjadwalan apa pun? Ini semua ditangani di Chronos / Marathon / etc? (mungkin saya telah melewatkan sesuatu! :))
user2851943
6
Saya rasa saya mengerti apa yang Anda maksud - Mesos adalah kerangka kerja yang memungkinkan penjadwal untuk dihubungkan. Saya bingung dengan kata-kata yang menunjukkan bahwa Mesos menghapus sesuatu yang penting ("Mesos tidak memberi Anda"), ketika itu dengan rancangan. Saya menghapus downvote saya.
Air
5
Jawaban ini akurat. Mesos berfokus pada manajemen sumber daya dan memisahkan penjadwalan dengan memungkinkan kerangka kerja pluggable. Contoh yang baik adalah yang dilakukan Netflix dengan menulis kerangka penjadwalan: Fenzo techblog.netflix.com/2015/08/...
Camilo Crespo
5

Saya suka video pendek ini di sini materi pembelajaran mesos

dengan kluster logam kosong, Anda perlu menelurkan tumpukan seperti HDFS, SPARK, MR dll ... jadi jika Anda meluncurkan tugas yang terkait dengan ini hanya menggunakan manajemen kluster logam kosong, akan ada banyak waktu mulai yang dingin.

dengan mesos, Anda dapat menginstal layanan ini di atas logam kosong dan Anda dapat menghindari waktu penggunaan layanan dasar tersebut. Ini adalah sesuatu yang dilakukan mesos dengan baik. dan dapat dimanfaatkan oleh bangunan kubernet di atasnya.

zinking
sumber
3

"Saya mengerti keduanya adalah perangkat lunak manajemen server cluster."

Pernyataan ini tidak sepenuhnya benar. Kubernetes tidak mengelola cluster server, ia mengatur wadah sedemikian rupa sehingga mereka bekerja bersama dengan kerumitan dan paparan minimal. Kubernetes memungkinkan Anda untuk mendefinisikan bagian-bagian dari aplikasi Anda sebagai "pod" (satu atau lebih kontainer) yang dikirimkan oleh "penyebaran" atau "set daemon" (dan beberapa lainnya) dan diekspos ke dunia luar melalui layanan. Namun, Kubernetes tidak mengelola cluster itu sendiri (ada alat yang dapat menyediakan, mengkonfigurasi, dan skala cluster untuk Anda, tetapi itu bukan bagian dari Kubernetes itu sendiri).

Mesos di sisi lain datang lebih dekat ke "manajemen cluster" karena dapat mengontrol apa yang berjalan di mana, tetapi tidak hanya dalam hal penjadwalan kontainer. Mesos juga mengelola perangkat lunak mandiri yang berjalan di server cluster. Meskipun sebagian besar digunakan sebagai alternatif untuk Kubernetes, Mesos dapat dengan mudah bekerja dengan Kubernetes karena sementara fungsi tumpang tindih di banyak daerah, Mesos dapat melakukan lebih banyak (tetapi pada bagian yang tumpang tindih Kubernetes cenderung lebih baik).

Andrei Dascalu
sumber