fbpx

Kubernetes か Docker Swarm か… それとも…?
#オーケストレーション #Kubernetes #Docker Swarm #コンテナ #Mirantis

この記事は1年以上前に投稿されました。情報が古い可能性がありますので、ご注意ください。

本稿はMirantisブログ「Kubernetes vs Swarm - These companies use both」を翻訳・編集し、ホワイトペーパーにまとめたものの前半部分を掲載しています。全文はこちらからダウンロードできます。

 

 

もしあなたがコンテナへの移行を検討している場合、あるいは新規プロジェクトのためにクラウドネイティブなインフラストラクチャを立ち上げようとしている場合、2つのコンテナオーケストレーションシステムを比較検討中かもしれません。つまり、KubernetesかDocker Swarmか…という選択です。

そしてすでに少しリサーチをしているのなら、次のような包括的な説明を目にしたことでしょう。「Kubernetesは業界標準である。」「Swarmはより使いやすい。」どちらも概ね正しいのですが、それだけではクラウドネイティブなプラットフォームに関する有効な判断を下せないことでしょう。

残念ながらKubernetesとDocker Swarmをめぐる議論の多くは、過度に漠然としていて表面的、かつ理論上のものです。つまりSwarmとKubernetesを一緒に使用するという第3の方法については語られていないのです。

本文書では、Swarm と Kubernetes 両方のユースケースや利点と課題を、理論上のみでなくグローバル規模でそれらを運用する組織の実体験に基づいて説明します。そして実際の企業において2つのプラットフォームの併用により、いかに業務が効率化されたかを見ていきます。

コンテナオーケストレータとは?

2022 StackOverflow Developer Survey においてDockerコンテナエンジンは、当該カテゴリーで最も使われ、望まれ、愛されているツールとしてランクインしています。これらの調査結果から大多数の開発者がコンテナを使用しており、かつコンテナを好んでいることがわかります。そして現在そうでない開発者はそうなりたいと願っていることも分かります。

業界がコンテナ化において劇的な転換期を迎えているのは当然のことです。コンテナは積み木を組み立てるようなイメージと、分離されていて容易にデプロイできる環境を提供し、開発を加速するからです。

コンテナの効率性によってコンテナオーケストレータの必要性が生まれました。Kubernetes や Docker Swarm などのシステムは、複数のホスト上で稼働する多くのコンテナ化されたサービスを協調して動作するために設計されています。

「オーケストレータ」という名称は比喩的表現に由来します。SwarmとKubernetesはさまざまな楽器からなる大規模なオーケストラの指揮者のように、コンテナ化されたさまざまなアプリケーションやサービスを指揮する役割を果たします。

オーケストレータは、たとえ個々のコンテナや時にはホストさえもがクラッシュした場合でも、コンテナ化されたワークロード同士が互いに適切に通信し、円滑に動作し続けるよう調整します。アプリケーションをコンテナ形式で提供することでシステムがコンテナベースのデプロイメントを迅速に複製し、高い可用性と回復力を得られるためです。

Kubernetes とは?

Kubernetes は元はGoogleが開発したコンテナオーケストレータです。多数の異なるホスト、アプリケーション、サービスを伴う極めて大規模なデプロイメントに適しています。

多数のノードに対してサービスをスケーリングする機能に加えて、APIの拡張性が非常に高いため企業ユーザに好まれています。現在では Kubernetes は業界標準であり、事実上「クラウド向けOS」とみなされています。

KubernetesはCloud Native Computing Foundation(CNCF)によってメンテナンスされているオープンソースプロジェクトとして、さまざまなベンダーから多種多様なディストリビューションとして提供されています。MirantisはKubernetesをマネージドサービスとして、あるいはMirantis Kubernetes Engineで商用サポート付きで提供しています。

Docker Swarm とは?

Docker SwarmはDocker Engineに組み込まれているコンテナオーケストレータです。本番環境で複数のホストにアプリケーションをデプロイするのに適しています。Docker CLIと直接統合されているため、開発段階から本番運用まで同じDocker APIを使用してコンテナを管理できることが大きな魅力です。

Mirantisは2019年にDocker Enterprise事業を買収しました。現在Mirantisはエンタープライズ級のSwarmをマネージドサービスとして、またはMirantis Kubernetes Engineで商用サポート付きで提供しています。

(「え、ちょっと待って。SwarmってKubernetesプラットフォームの一部なの?」と思われた人もいるかもしれませんね。それについては後ほど詳しく解説します。)

Kubernetes と Docker Swarm の違い

Kubernetes が今日最も広く使われているコンテナオーケストレータであることは間違いありません。このことは、プラットフォームを取り巻くエコシステムを考える際に直接的な意味をもつため重要でしょう。しかしそれを唯一の判断基準にすべきではありません。一般的なユースケースが必ずしもあなたのユースケースに合致するとは限らないからです。

考慮すべき要素は次の4つです。

  • スケーラビリティ
  • 使いやすさ
  • セキュリティ
  • エコシステム

Swarmはオペレータの俯瞰的な視点ではなく、開発者の視点から設計されていると言えます。つまりSwarmはコンテナ化されたサービスを最小限の手間で開発から本番環境に移行することに重きを置いているということです。

一方Kubernetesはグローバルな視点から設計されています。あらゆるものがAPIで管理可能になるよう抽象化されています。リッチで設定可能なシステムであることと同時に、開発者には学習コストという負荷が重くのしかかります。

これらの異なる設計の背景にある思想が、KubernetesとSwarmそれぞれの長所と短所に関連します。

では次に、上であげた4つの要素について1つずつ詳しく解説します。

続きを無料でダウンロードして読む

SwarmとKubernetesを並行して使えるMirantis Kubernetes Engineに関するお問い合わせはこちら

新規CTA