Docker SwarmとKubernetesの比較

夜のレインボーブリッジ

Docker SwarmとKubernetes。コンテナのオーケストレーション・ツールのうち、あなたに適しているのはどれでしょうか。

アプリケーション・マイクロサービスの管理を自動化することがこれまで以上に重要になっている現代の世界では、ワークロードのオーケストレーションは欠かせません。しかしこのオーケストレーションにおいては、Docker SwarmとKubernetesのどちらが優れた選択肢なのか、という激しい議論があります。ここからは、Docker SwarmとKubernetesの類似点と相違点を確認して、あなたの環境に適したものを選択する方法をご紹介します。

     

    The DX Leaders

    AI活用のグローバル・トレンドや日本の市場動向を踏まえたDX、生成AIの最新情報を毎月お届けします。登録の際はIBMプライバシー・ステートメントをご覧ください。

    ご登録いただきありがとうございます。

    ニュースレターは日本語で配信されます。すべてのニュースレターに登録解除リンクがあります。サブスクリプションの管理や解除はこちらから。詳しくはIBMプライバシー・ステートメントをご覧ください。

    コンテナとは

    一言で言えば、コンテナはアプリとそのすべての依存関係をパッケージ化する標準的な方法であり、ランタイム環境間でアプリを先に移動できるようにします。アプリのコード、依存関係、および設定を 1 つの使いやすい構成要素へとパッケージ化することで、コンテナはデプロイメント時間の短縮とアプリケーションの信頼性の向上に向けた重要な一歩を可能にします。

    エンタープライズ・アプリケーションでは、コンテナの数はすぐに管理不能な数に膨れ上がりがちです。コンテナを最も効果的に使用するには、コンテナ化されたアプリケーションをオーケストレーションする必要があります。そこでKubernetesとDocker Swarmが登場します。

    OpenShift

    OpenShiftを使用してクラウドでコンテナを実行する方法をご覧ください

    コンテナを使用すると、さまざまな環境間でアプリケーションを簡単に構築、実行、移動できます。このビデオでは、IBM Cloudを使用したOpenShiftでコンテナ化されたアプリケーションのチームによる効率的な管理を支援し、クラウド開発の迅速化と信頼性を高める方法を紹介します。

    Kubernetesとは

    Kubernetesは、コンテナとその複雑な運用ワークロードや拡張性を管理するための、ポータブルなオープンソース・プラットフォームです。Kubernetesを使用すると、開発者とDevOpsチームはクラスターの柔軟性を利用して可用性の高いアプリをスケジュール、デプロイ、管理、検出することができます。Kubernetesクラスターは、ワーカー・ノードと呼ばれるコンピュート・ホストで構成されます。これらのノードは、クラスター内のすべてのリソースを制御・監視するKubernetesマスターが管理しています。ノードは仮想マシン (VM)または物理ベアメタル・マシンのいずれかです。

    初期のKubernetesでは、コミュニティーコントリビューターは、BorgとOmegaの2つのクラスター管理システムなど、社内ツールの作成と実行に関する知識を活用していました。Cloud Native Computing Foundation(CNCF)が登場し、Linux Foundationと提携したことで、コミュニティは、チームの大規模な運用に役立つKubernetesクラスターの一連のルールであるOpen Governance for Kubernetesを採用しました。IBMはCNCFの創設メンバーとして、Google、Red Hat、Microsoft、Amazonなどの企業とともに、CNCFのクラウドネイティブプロジェクトに積極的に貢献しています。

    Kubernetesの利点

    • Kubernetesは、サービス検出、イングレスとロードバランシング、自己修復、ストレージオーケストレーション、水平拡張性、自動ロールアウト/ロールバック、バッチ実行など、幅広い主要機能を提供します。
    • 統一されたAPIセットと、クラスター状態に関する強力な保証を備えています。
    • オープンソース・コミュニティで、コードベースの開発に非常に積極的です。
    • 急成長を続けるKubeConカンファレンスで、1年を通じてユーザーのインサイトを提供しています。
    • Kubernetesは市場で最大の導入数を誇っています。
    • Googleや私たちIBMなどの大手企業のワークロードによる実戦テストを経ており、ほとんどのオペレーティング・システムで動作します。
    • パブリッククラウドでもオンプレミスでも利用でき、あらゆる大手クラウド・プロバイダー(IBM Cloud、AWS、Microsoft Azure、Google クラウド・プラットフォームなど)のマネージドまたは非マネージド製品もそろっています。
    • Sysdig、LogDNA、Portworx、その他多数のクラウド・ツール・ベンダーのエコシステムが広範なKubernetesサポートを提供しています。

    Kubernetesの課題

    • 学習曲線が急であり、Kubernetesマスターの管理には専門知識が必要になります。
    • オープンソース・コミュニティからのアップデートが頻繁に行われており、ワークロードの中断を避けるために注意深くパッチを当てる必要があります。
    • 個人開発者が単純なアプリや低頻度のデプロイメント用にセットアップするには規模が大きすぎるものです。
    • 多くの場合、アクセス、ID、ガバナンス、セキュリティーを完全に管理するために、追加のツール(kubectl CLIなど)やサービス、継続的統合/継続的デプロイメント(CI/CD)ワークフローおよびその他のDevOpsプラクティスが必要になります。

    Docker Swarmとは

    Docker Swarm は、しばらく前から存在しているもう1つのオープンソース・コンテナ・オーケストレーションプラットフォームです。Swarm(より正確にはSwarmモード)は、 DockerエンジンのクラスターをオーケストレーションするためのDockerのネイティブ・サポートです。Swarmクラスターは、Docker EngineによってクラスターをデプロイされたSwarmマネージャー・ノード(クラスターのオーケストレーションと管理を行う)とワーカー・ノード(マネージャー・ノードによってタスク実行の指示を受ける)で構成されます。

    Docker Swarmのメリット

    • Dockerは、コンテナ化されたアプリケーションの構築とデプロイに使用される一般的なコンテナ・プラットフォームです。SwarmはDocker Engineで使用するために構築されており、すでにほとんどのチームにとっては使い慣れたプラットフォームの一部になっています。
    • Docker環境へのインストールとセットアップは簡単です。
    • Dockerコンテナで動作するツール、サービス、ソフトウェアは、Swarmでも問題なく動作します。
    • Swarmには独自のSwarm APIが備わっています。
    • Docker Engineと同じコマンドライン・インターフェイス(CLI)を使用するため、Docker ComposeやDocker CLIなどのDockerツールとスムーズに統合できます。
    • フィルタリングおよびスケジューリング・システムを使用してインテリジェントなノード選択を可能にし、コンテナのデプロイメントに最適なクラスター内のノードを選択できるようにします。

    Docker Swarmの課題

    • Docker Swarmのカスタマイズと拡張機能は限定的です。
    • Kubernetesに比べると機能がそれほど豊富ではなく、自動化機能も少なくなっています。
    • DevOpsパイプラインにおいて、Dev-Test-Prodのワークロードを分離する簡単な方法はありません。

    混乱のないように申し上げると、Docker Enterprise Editionは現在、Kubernetesもサポートしています

    Kubernetes vs. Docker Swarm:シンプルな直接比較

    ここまで利点と課題を説明してきたので、次にKubernetesとDocker Swarmの類似点と相違点を見てみましょう。どちらのプラットフォームでも、コンテナの管理やアプリケーションのデプロイメントの拡張が可能です。その違いは複雑さです。Kubernetesは、複雑な構成を伴う需要の高いアプリケーションに最適なコンテナ管理のための、効率的な手段を提供します。一方、Docker Swarmは使いやすさを考慮して設計されているため、迅速にデプロイでき、管理が容易なシンプルなアプリケーションに適しています。

    Docker SwarmとKubernetesの詳細な違いは以下の通りです。

    インストールとセットアップ

    Kubernetesの複雑さのおかげで、Docker Swarm のインストールと構成はより簡単になっています。

    • Kubernetes:手動インストールはオペレーティングシステムによって異なる場合があります。クラウド・プロバイダーによるマネージドサービスの場合、インストールは必要ありません。
    • Swarm: Dockerでシンプルにインストールできるようになっており、インスタンスは通常、どのオペレーティング・システムでも同一です。

    拡張性

    Kubernetesはトラフィックに基づくオールインワンのスケーリング機能を提供しますが、Docker Swarmは迅速なスケーリングを重視しています。

    • Kubernetes:水平自動スケーリングが組み込まれています。
    • Swarm:オンデマンドでグループの自動スケーリングを提供しています。

    ロード・バランシング

    Docker Swarmには自動ロード・バランシングの機能がありますが、Kubernetesには自動ロード・バランシングはありません。ただし、Kubernetesのサードパーティツールを使って外部のロードバランサーを簡単に統合することができます。

    • Kubernetes:サービスのディスカバリーは、単一のDNS名で可能になっています。Kubernetesは、IPアドレスまたはHTTPルートを通じてコンテナ・アプリケーションにアクセスできます。
    • Swarm:内部ロードバランサーが付属しています。

    高可用性

    どちらのツールも高レベルの可用性を提供します。

    • Kubernetes: 不健全なPodからトラフィックを迂回させることで、Kubernetesは自己修復を行います。複製を通じてインテリジェントなスケジュール設定とサービスの高可用性を実現しています。
    • Swarm: Swarm Managerは可用性コントロールを提供し、マイクロサービスを簡単に複製できます。

    あなたに最適なコンテナ・オーケストレーションツールは?

    ほとんどのプラットフォームの決定と同様に、適切なツールは組織のニーズによって異ります。

    Kubernetesは広く採用されており、大規模なコミュニティが味方についています。Kubernetesはすべての主要なクラウド・プロバイダーと、Docker Enterprise EditionなどのDIY製品でサポートされています。より強力で、カスタマイズ性と柔軟性に優れていますが、その代わりに最初の習得までに時間がかかるという欠点があります。Kubernetesの稼働には経験と能力のあるチームが必要です。ただし、オープンソースの管理責任を簡素化し、アプリケーションの開発に集中できるよう、マネージド・サービス・プロバイダーの利用を選択する企業もあります。

    Docker Swarmの利点は、広く知られていること、使いやすさを重視していることにあります。Docker Engineでデプロイでき、お使いの環境ですぐに利用できます。結果、Swarmは簡単に使い始めることができるため、比較的小規模なワークロードには理想的と言えるでしょう。

    ここまで、KubernetesとDocker Swarmの違いについてお読みいただきました。この後はIBM Cloud Kubernetes Serviceの詳細と、Kubernetes 上でスケーラブルな Web アプリケーションを構築する方法をご覧ください。

    Kubernetesとコンテナの詳細はこちら

    Kubernetesを無料で実際に体験してみませんか。Kubernetes チュートリアルと認定を提供する新しいインタラクティブ・プラットフォーム、IBM CloudLabsをご活用ください。コストもかからず、構成設定も必要ありません。

    著者

    Chris Rosen

    Director, Product Management, Cloud Native PaaS & Satellite

    IBM Blog

    関連ソリューション
    IBM Red Hat OpenShift

    Red Hat OpenShift on IBM Cloudは、フルマネージドのOpenShiftコンテナ・プラットフォーム(OCP)です。

    Red Hat OpenShiftの詳細はこちら
    コンテナ・ソリューション

    コンテナ・ソリューションは、セキュリティー、オープンソースのイノベーション、迅速なデプロイメントにより、コンテナ化されたワークロードを実行およびスケールアップします。

    コンテナの詳細はこちら
    クラウド・コンサルティング・サービス 

    IBMのクラウド・コンサルティング・サービスで新しい機能にアクセスし、ビジネスの俊敏性を高めましょう。ハイブリッドクラウド戦略や専門家とのパートナーシップを通じて、ソリューションを共創し、デジタル・トランスフォーメーションを加速させ、パフォーマンスを最適化する方法をご覧ください。

    クラウド・サービス
    次のステップ

    IBMのコンテナ・ソリューションでインフラストラクチャーをモダナイズします。IBMの包括的なコンテナ・プラットフォームを使用して、柔軟性、セキュリティー、効率性を備えたコンテナ化されたワークロードを環境全体で実行、拡張、管理します。

    コンテナ・ソリューションの詳細はこちら 無料のIBM Cloudアカウントを作成