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


385

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

Mesosphereの上でKubernetesを使用する理由は何ですか?

回答:


516

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

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

そのため、Kubernetesだけで、シンプルで使いやすく、移植可能で拡張可能なものになり、可能な限り最軽量の方法で管理するものに「クラスター」を名詞として追加します。クラスターでアプリケーションを実行し、個々のマシンについて心配するのをやめます。この場合、クラスターはVMと同じように柔軟なリソースです。これは論理計算ユニットです。それを上げて、使用して、サイズを変更し、すばやく簡単に下げます。

Mesosでは、基本的なビジョンの面でかなりの重複がありますが、製品はライフサイクルのかなり異なる段階にあり、スイートスポットが異なります。Mesosは、多数の異なるマシンを論理コンピューターに結び付ける分散システムカーネルです。これは、大きな静的コンピューティングクラスタを作成するために多くの物理リソースを所有する世界のために生まれました。多くの最新のスケーラブルなデータ処理アプリケーションがMesos(Hadoop、Kafka、Spark)で適切に実行され、新しい時代のコンテナーパッケージ化されたアプリと共に、すべてを同じ基本リソースプールで実行できるので、すばらしいことです。 。Kubernetesプロジェクトよりもやや重いですが、Mesosphereのような人々の仕事のおかげで、管理がますます簡単になっています。

現在、本当に興味深いのは、MesosがKubernetesの概念の多くを追加し、Kubernetes APIをサポートするように現在調整されていることです。したがって、必要な場合は、Kubernetesアプリのより多くの機能(高可用性マスター、より高度なスケジューリングセマンティクス、非常に多くのノードにスケーリングする機能)へのゲートウェイとなり、本番ワークロード(Kubernetesの実行に適しています)まだアルファ状態です)。

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

  1. Kubernetesは、クラスタリングの世界に慣れていない場合に最適な場所です。これは、タイヤをキックしてクラスター指向開発の実験を開始するための最も速く、簡単で、最も軽い方法です。多くの異なるプロバイダー(Microsoft、IBM、Red Hat、CoreOs、MesoSphere、VMWareなど)でサポートされているため、非常に高いレベルの移植性を提供します。

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

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


4
素晴らしい概観。2つの簡単な考え:1)Kubernetesがアルファではなくベータになったと思いますか?2)マラソンに関する情報を追加しますか?
knite

57
まとめると(クイックリード-正しく理解できればと思います):kubernetesはコンテナー(唯一?)のクラスターマネージャーですが、mesosは、サポートされているすべてのフレームワークに対してクラスターを1つの巨大なコンピューターシステムのように見えるようにする分散システムカーネルですメソ上で実行するために構築されたアプリ。しかし、kubernetesは、mesos上で実行できるフレームワークの1つです。したがって、両方を組み合わせると、クラスターではないクラスターと、管理するクラスターがないクラスターマネージャーができます。素晴らしい新しい世界:-)(J / K kub。はclst。phys。res。なので、これから多くのメリットがあります)
masi

7
これは、Kubernetes 1.0の発売イベントでまさにこれについて話しているMesosphereです:youtube.com/…-免責事項:これは私です。
エア

68

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

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

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

MarathonはMesosの上で実行されます。Mesosは、非常にスケーラブルで、戦闘テスト済みで、柔軟なリソースマネージャーです。マラソンは、多くの実稼働環境でスケーリングおよび実行できることが証明されています。

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

Mesosは、データセンターに対して直接プログラミングするための完全なAPIを備えた分散システムカーネルです。基盤となるハードウェア(ベアメタルやVMなど)を抽象化し、リソースを公開します。メッセージパッシング、タスク実行などの分散アプリケーション(SparkはもともとMesosアプリ、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


37

KubernetesとMesosは天国で行われた試合です。Kubernetesは、ポッド(同じ場所に配置されたコンテナーのグループ)の抽象化と、サービスの検出、負荷分散、レプリケーション制御のためのポッドラベルを有効にします。Mesosは、クラスター内のノード全体のポッドにきめ細かなリソース割り当てを提供し、Kubernetesを同じクラスターリソースで実行されている他のフレームワークとうまく連携させることができます。

kubernetes-mesosのreadmeから


18

MesosとKubernetesの両方を使用して、マシンのクラスターを管理し、ハードウェアを抽象化できます。

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

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

非常に単純化して:コンテナーのスケジュールを制御したい場合はMesosを使用します。


1
この答えは不正確で混乱を招きます。MesosをKubernetesで実行する簡単な方法はありません。実際、それはアーキテクチャの逆になります。Kubernetesの焦点はMesosよりも一般的ではないため、Mesosの上で実行する方が理にかなっています。
ssk2 2015

1
はい、Mesos上でkubernetesを実行することを意味しました。Kubernetesは、mesosフレームワークのスケジューリングロジックを提供し、mesosは実行中のジョブなどを処理します。それが明確でない場合は、申し訳ありません。
user2851943 2015

2
@airここでスケジューラをどのように定義するのか知りたいですか?Mesos自体がスケジューリングロジックを提供していないようですか?これはすべてChronos / Marathon / etcで処理されますか?(おそらく私は何かを見逃しました!:))
user2851943

6
私はあなたが何を手に入れているかを理解していると思います-Mesosはスケジューラーをプラグインできるフレームワークです。設計。反対票を削除しました。
エア

5
この答えは正確です。Mesosはリソース管理に焦点を当てており、プラグイン可能なフレームワークを許可することでスケジューリングを分離します。良い例は、Netflixがスケジューリングフレームワークを記述して何をしたかです。Fenzotechblog.netflix.com /2015
Camilo Crespo

5

この短いビデオのようなIここ学習教材mesos

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

メソを使用すると、ベアメタルの上にこれらのサービスをインストールでき、これらの基本サービスの起動時間を回避できます。これは、mesosがうまく機能するものです。その上に構築されたkubernetesで利用できます。


3

「私はどちらもサーバークラスタ管理ソフトウェアであることを理解しています。」

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

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.