BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース コンテナオーケストレーションソフトウェアを比較する

コンテナオーケストレーションソフトウェアを比較する

ブックマーク

原文(投稿日:2017/02/08)へのリンク

先日の記事で,現在入手可能なコンテナオーケストレーションの選択肢が比較されている。取り上げられていた範囲は,セルフホストの必要なオープンソースからコンテナ・アズ・ア・サービス製品まで,スタートアップからエンタープライズ規模にまで及ぶ。

それぞれのオーケストレーションの選択肢は,コンテナのプロビジョニング,ローンチおよびディスカバリ,システム監視とクラッシュリカバリ,宣言型のシステムコンフィギュレーション,コンテナ配置とパフォーマンスに関するルールと制約の定義といった,共通する機能に加えて,それぞれが特定のニーズに応じるための機能を備えている。

オープンソースのオーケストレーションにはDocker Swarm, Kuberenes, Marathon, Nomadなどがある。いずれも自身のデータセンタ内にオンプレミスで,あるいは大部分のパブリッククラウドにインストール可能だ。Kubernetesについては,Google Container Engineの一部としてホスト型ソリューションとしても利用できる。Kubernetesはポッドと呼ばれる論理ユニットをスケジュールする。ポッドとは,特定のタスクに対して一緒にデプロイされるコンテナのグループだ。ポッドを使用して,デプロイメントのように,より高度な抽象化を構成することができる。それぞれのポッドは,標準的な方法に加えて,ユーザが定義したヘルスチェックで監視することが可能だ。KubernetesはOpenStackのようなプロジェクトでも,コミュニティおよびベンダサポートの下で採用されている。

Docker SwarmはDockerのネイティブなオーケストレーション製品だ。Docker 1.12には,複数ホストを対象としたオーケストレーションを行なう“swarm mode”機能が追加されているが,Docker Swarmは独立した製品として存続している。Docker SwarmにはDocker API経由でアクセスして,docker composeなどのツールを起動し,サービスやコンテナの宣言型オーケストレーションを行なう。Docker Swarmは,企業レベルのコンテナ展開を目的とした大規模製品 — Docker Datacenter — を構成している。

SwarmとKubernetesは,いずれもYAMLコンフィギュレーションファイルを使用する。 どちらもオープンソースだが,KubernetesはCNCF (Cloud Native Computing Foundation)プロジェクトの一部であり,Dockerとは依存関係を一切持っていない。ただし,オンプレミスのみでなく,AWSなどのパブリッククラウド上でも実行可能な点は同じだ。

MarathonオーケストレーションフレームワークはApache Mesosプロジェクトをベースとする。Apache MesosはそのAPIを通じて,物理的に分散したデータセンタ群のリソース管理とスケジュールの抽象化を可能にする。Mesos上のシステムは,基盤となるコンピューティング,ネットワーキング,ストレージといったリソースを,仮想マシンがハイパーバイザ経由で基盤リソースを使うように利用することができる。MarathionはMesosを利用してその上で動作し,長時間実行するアプリケーションにコンテナオーケストレーション機能を提供する。MarathonはMesosとDockerコンテナランタイムの両方をサポートする。

Amazon EC2 Container Service (ECS)とAzure Container Serviceはいずれもホスト型ソリューションで,後者が最新だ。ECSはAWSインフラストラクチャ上で動作するコンテナをサポートし,エラスティックロードバランシングやロギング用のCloudTrailなどのAWS機能を利用することができる。ECSタスクスケジューラは,オーケストレーション用のサービスにタスクをグループ分けする。データストレージの永続化には,データボリュームやAmazonのElastic File System(EFS)が利用可能だ。Azureのコンテナサービスは基盤となるクラスタマネージャにMesosを使用する。オーケストレーションはApache Mesosphere Datacenter Operating System(DC/OS),Kubernetes,Docker Swarmから選択できる。

HashicorpのNomadはDockerコンテナの他,VMやスタンドアロンのアプリケーションもサポートするオープンソース製品だ。Nomadは,各ホストにデプロイされたエージェントが中央のNomadサービスと通信を行なう,エージェントモデルを採用している。Nomadサーバは,各ホストの持つ利用可能なリソースに基づいて,ジョブのスケジューリングを管理する。Nomadは複数のデータセンタを対象として,Consulなど他のHashicorpツールと統合することができる。

記事では,特定のインフラ(AWSやAzureのような)へのロックインが受け入れられるかどうかが,オーケストレーションツールを選択する場合の決定条件のひとつである,と結論付けている。

 
 

この記事を評価

関連性
スタイル
 
 

この記事に星をつける

おすすめ度
スタイル

BT