web-dev-qa-db-ja.com

ApacheのMesosとGoogleのKubernetesの違いは何ですか

ApacheのMesosとGoogleのKubernetesの違いは何ですか?私は両方ともサーバークラスタ管理ソフトウェアであることを理解しています。誰が主な違いがどこにあるのかを詳しく説明できますか - どのフレームワークが優先されるのか?

なぜMesosphereの上に Kubernetesを使用したいのですか

350
binaryanomaly

Kubernetesは、「Googleスタイル」のクラスタ管理機能を仮想マシンの世界に、または「on the metal」シナリオにもたらすオープンソースプロジェクトです。それはあなたのために管理されている軽量コンピューティング「ノード」を提供する最新のオペレーティングシステム環境(CoreOSやRed Hat Atomicのような)で非常にうまく機能します。それはGolangで書かれており、軽量、モジュール式、携帯用そして拡張可能です。私たち(Kubernetesチーム)は、(Mesosオープンソースプロジェクトを担当しているMesosphereを含む)さまざまなテクノロジー企業と協力して、コンピューティングクラスタと対話するための標準的な方法としてKubernetesを確立しています。そのアイデアは、Googleでの経験に基づいて、人々がクラスタアプリケーションを構築する必要があると思うパターンを再現することです。これらの概念のいくつかは次のとおりです。

  • ポッド - コンテナをグループ化する方法
  • レプリケーションコントローラ - コンテナのライフサイクルを処理する方法
  • ラベル - コンテナーを検索して照会する方法
  • サービス - 共通の機能を実行するコンテナのセット。

それで、Kubernetesだけであなたはあなたが可能な最も軽い方法で管理するものに名詞として「クラスター」を加える、シンプルで使いやすい、持ち運び可能でそして拡張可能である何かを持つでしょう。クラスタ上でアプリケーションを実行し、個々のマシンについて心配するのをやめます。この場合、clusterはVMと同じように柔軟なリソースです。これは論理計算単位です。それを上げ、それを使用し、それをサイズ変更し、それを素早くそして容易に下げなさい。

Mesosでは、基本的な観点から見てかなりの量の重複がありますが、製品はライフサイクルのかなり異なる時点にあり、それぞれ異なるスイートスポットを持っています。 Mesosは、さまざまなマシンを論理的なコンピュータにまとめる分散システムカーネルです。それはあなたが大きな静的コンピューティングクラスタを作成するためにあなたが多くの物理的なリソースを所有する世界のために生まれました。それの素晴らしいところは、Mesos(Hadoop、Kafka、Spark)上で最新のスケーラブルなデータ処理アプリケーションがうまく動くことです。そしてそれらは、すべて同じ基本リソースプール上で、そしてあなたの新しい時代のコンテナーパッケージアプリケーションで実行できるので素晴らしいです。それはKubernetesプロジェクトよりいくぶん重いですが、Mesosphereのような人々の仕事のおかげで管理がより簡単にそしてもっと簡単になっています。

Mesosは現在、Kubernetesの多くの概念を追加し、Kubernetes APIをサポートするように調整されています。そのため、必要に応じてKubernetesアプリのより多くの機能(高可用性マスター、より高度なスケジューリングセマンティクス、非常に多数のノードへの拡張機能)を取得するためのゲートウェイとなり、運用ワークロードの実行に最適です(Kubernetes)まだアルファ状態にあります)。

尋ねられるとき、私は言う傾向があります:

  1. クラスタリングの世界に慣れていない場合は、Kubernetesを始めるのに最適な場所です。それは、タイヤを蹴り上げてクラスタ指向の開発を試し始めるための最も早く、最も簡単でそして最も軽い方法です。 Microsoft、IBM、Red Hat、CoreO、MesoSphere、VMWareなど、さまざまなプロバイダでサポートされているため、非常に高いレベルの移植性があります。

  2. 既存のワークロード(Hadoop、Spark、Kafkaなど)がある場合、Mesosはそれらのワークロードを互いにインターリーブし、Kubernetesアプリを含むいくつかの新しいものを混ぜ合わせることができるフレームワークを提供します。

  3. Kubernetesフレームワークでコミュニティによってまだ実装されていない機能が必要な場合、Mesosはあなたにエスケープバルブを提供します。

468
Craig Mcluckie

どちらのプロジェクトも、データセンターまたはクラウドのコンテナ内にアプリケーションを簡単にデプロイおよび管理できるようにすることを目的としています。

Mesos上にアプリケーションをデプロイするには、MarathonまたはKubernetes for Mesosを使用できます。

Marathonは、cgroupおよびDockerコンテナでLinuxサービスを実行するためのクラスタ全体のinitおよび制御システムです。マラソンには、さまざまなカナリア展開機能があり、非常に成熟したプロジェクトです。

MarathonはMesosの上で動作します。これは非常にスケーラブルで、バトルテストされた柔軟なリソースマネージャです。マラソンは、多くの実稼働環境で多くの規模と動作が実証されています。

MesosとMesosphereテクノロジスタックは、既存のLinuxワークロードを実行するためのクラウドのような環境を提供しますが、新しい分散システムを構築するためのネイティブ環境も提供します。

Mesosは、データセンターに対して直接プログラミングするための完全なAPIを備えた分散システムカーネルです。基盤となるハードウェア(ベアメタルやVMなど)を抽象化してリソースを公開するだけです。 Message Passing、Task Executionなどの分散アプリケーション(SparkはもともとMesos App、Chronosなど)を記述するためのプリミティブを含んでいます。したがって、まったく新しいアプリケーションが可能になります。 Apache Sparkは、もともとMesos用に構築された新しい(Mesosの用語で呼ばれる)フレームワークの一例です。これは本当に速い開発を可能にしました - Sparkの開発者はMesosのコアプリミティブであるのでノード間でタスクを分配するためにネットワーキングについて心配する必要はありませんでした。

私の知る限りでは、Kubernetesは今日のプロダクション環境ではGoogleの内部では使用されていません。本番用に、GoogleはOmega/Borgを使用しています。これはMesos/Marathonモデルに非常に似ています。ただし、Mesosを基盤として使用することの優れた点は、KubernetesとMarathonの両方をその上で実行できることです。

マラソンに関するその他の資料:

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

ビデオ: https://www.youtube.com/watch?v = hZNGST2vIds

61
mesospherian

KubernetesとMesosは天国で作られた試合です。 Kubernetesは、サービス検出、ロードバランシング、およびレプリケーション制御のためのPodラベルとともに、Pod(同じ場所に配置されたコンテナのグループ)の抽象化を可能にします。 Mesosは、クラスター内のノード間でポッドにきめ細かいリソース割り当てを提供し、Kubernetesが同じクラスターリソース上で実行されている他のフレームワークとうまく連携できるようにします。

からのkubernetes-mesosのreadme

34
herodot

MesosとKubernetesはどちらも、マシンのクラスタを管理し、ハードウェアを抽象化するために使用できます。

Mesosは、設計上、スケジューラを提供しません(プロセスを実行する場所とタイミング、およびプロセスが失敗した場合の対処方法を決定するために)、MarathonやChronosなどを使用したり、独自のものを作成したりできます。

Kubernetesは箱から出してすぐにあなたのためにスケジューリングをするでしょう、そしてMesosのスケジューラとして使うことができます(私がここで間違っているなら私を修正してください!)ここであなたはそれらを一緒に使うことができます。 Mesosは同じクラスタを共有する複数のスケジューラを持つことができるので、理論的には同じハードウェア上でkubernetesとchronosを一緒に実行することができます。

非常に単純化して:あなたがあなたのコンテナがどのように予定されているかについて制御したいならば、Mesosのために行きなさい、さもなければKubernetes岩。

15
user2851943

私はここでこの短いビデオが好きです メソス教材

ベアメタルクラスターでは、HDFS、SPARK、MRなどのようなスタックを生成する必要があります。ベアメタルクラスター管理のみを使用してこれらに関連するタスクを起動すると、開始時間が長くなります。

メソでは、これらのサービスをベアメタルの上にインストールすることができ、それらの基本サービスの起動時間を避けることができます。これはmesosがうまくいくことです。そしてその上に建つkubernetesで利用することができます。

4
zinking

「どちらもサーバークラスタ管理ソフトウェアだと理解しています。」

このことは全く真実ではありません。 Kubernetesはサーバークラスタを管理するのではなく、最小限の煩わしさと露出で一緒に機能するようにコンテナを編成します。 Kubernetesを使用すると、アプリケーションの一部を「配置」または「デーモンセット」(およびその他のいくつか)によって配信され、サービスを介して外部に公開される「ポッド」(1つ以上のコンテナ)として定義できます。ただし、Kubernetesはクラスタ自体を管理しません(クラスタをプロビジョニング、構成、および拡張できるツールはありますが、それらはKubernetes自体の一部ではありません)。

一方Mesosは、コンテナのスケジューリングという観点ではなく、どこで実行されているのかを制御できるという点で「クラスタ管理」に近づいています。 Mesosは、クラスタサーバー上で動作するスタンドアロンソフトウェアも管理します。主にKubernetesの代替として使用されていますが、MesosはKubernetesと簡単に連携できますが、多くの分野で機能が重複していますが、Mesosはそれ以上のことを実行できます(ただし、重複部分ではKubernetesの方が優れている傾向があります)。

1
Andrei Dascalu