コンテナオーケストレーションとは

高速道路で車やトラックを追い越すドローン飛行の航空写真

執筆者

Stephanie Susnjara

Staff Writer

IBM Think

Ian Smalley

Staff Editor

IBM Think

コンテナオーケストレーションとは

コンテナ・オーケストレーションは、コンテナ化されたアプリケーションのプロビジョニング、デプロイ、拡張、およびライフサイクル管理を自動で行います。開発者はアジャイルやDevOpsのワークフローを効率化するためにコンテナ・オーケストレーションを活用し、現代のハイブリッド・マルチクラウド・インフラストラクチャーを支えるために必要な柔軟性とスピードを実現しています。

今日、Kubernetesは、最も人気のあるコンテナ・オーケストレーションプラットフォームであり、Amazon Web Services(AWS)、Google Cloud Platform、IBM® Cloud、Microsoft Azureをはじめとする主要なクラウド・サービス・プロバイダーの多くが、Kubernetesのマネージド・サービスを提供しています。その他のコンテナ・オーケストレーション・ツールには、Docker SwarmやApache Mesosなどがあります。

ビジネス街をバックにスマホを持つ手

The DX Leaders

「The DX Leaders」は日本語でお届けするニュースレターです。AI活用のグローバル・トレンドや日本の市場動向を踏まえたDX、生成AIの最新情報を毎月お届けします。

コンテナにオーケストレーションが必要な理由

コンテナは軽量で実行可能なアプリケーション・コンポーネントであり、アプリケーション・ソースコードと、そのコードをあらゆる環境で実行するために必要なすべてのオペレーティング・システム(OS)ライブラリーや依存関係を組み合わせています。

コンテナを作成する機能自体は数十年前から存在していましたが、2008年にLinux®がそのカーネル内にコンテナ機能を組み込んだことで、広く利用可能になりました。2013年にオープンソースのコンテナ化プラットフォームであるDockerが登場したことで、コンテナはさらに重要性を増しました。(Dockerの人気は高く、「Dockerコンテナ」と「コンテナ」が同様に使用されることがよくあります。)現在、コンテナはLinux以外にもWindowsをはじめとする多くのオペレーティング・システムと互換性があります。

コンテナは仮想マシン(VM)よりも小さく、リソース効率が高く、移植性が高いため、コンテナ、より具体的にはコンテナ化されたマイクロサービスやサーバーレス機能は、最新のクラウドネイティブ・アプリケーションの事実上のコンピュート・ユニットとなっています。

コンテナの数が少ない場合、コンテナは手動でデプロイおよび管理するのが十分に簡単です。しかし、コンテナ化されたアプリケーションと、それを大規模に管理する必要性は、現在ではほとんどの大規模組織において一般的なものとなっています。

たとえば、継続的インテグレーション/継続的デリバリー(CI/CD)DevOpsのパイプラインは、コンテナ・オーケストレーションなしでは実現できません。コンテナ・オーケストレーションは、コンテナ化されたアプリケーションやサービスのデプロイおよび実行に関する運用タスクを自動化するためです。

IBMの調査によると、回答した開発者の70%がコンテナ・オーケストレーション・ソリューションを使用しており、そのうちの70%が、組織内でフルマネージド(クラウド管理型)のコンテナ・オーケストレーション・サービスを利用していると報告しています。

コンテナ・オーケストレーションはどのように機能するのか。

コンテナ・オーケストレーションのアーキテクチャーは、複数のマシンや環境にまたがってコンテナ・クラスターを実行する仕組みで構成されています。各クラスターは通常、「ノード」(サーバー・インスタンスとも呼ばれます)のグループで構成されます。ワーカー・ノードは、Dockerなどのコンテナ・ランタイムを使用してコンテナを実行します。一方、コントロール・プレーン・ノードのグループは、クラスター全体のオーケストレーションを担います。ユーザーは、アプリケーション・プログラミング・インターフェース(API)やグラフィカル・ユーザー・インターフェース(GUI)を備えたツールを使用して、コンテナ化されたワークロードの管理や監視を行うことができます。

プラットフォームやツールによって手法や機能には違いがありますが、コンテナ・オーケストレーションは本質的には3つのステップからなるプロセス(あるいはアジャイルやDevOpsの反復的なパイプラインの一部であればサイクル)です。

  1. プロビジョン
  2. 導入
  3. ライフサイクル管理

1. プロビジョニング

ほとんどのコンテナ・オーケストレーション・ツールは、宣言型の構成モデルをサポートしています。開発者は、望ましい状態を定義する構成ファイルを(使用するツールに応じてYAMLまたはJSON形式で)作成します。ファイルを実行するオーケストレーション・ツールは、独自のインテリジェンスを使用してその状態を実現します。構成ファイルには通常、次のような内容が記述されます。

  • どのコンテナ・イメージがアプリケーションを構成するか、またそれらがどのコンテナ・レジストリーに格納されているかを定義します。
  • また、ストレージやその他のリソースをコンテナにプロビジョニングします。
  • コンテナ間のネットワーク接続を定義し、その接続を保護します。
  • また、段階的な展開やカナリア・リリースのために、バージョン管理も指定します。

2. デプロイメント

オーケストレーション・ツールは、コンテナ(およびレジリエンスのためのコンテナのレプリカ)のデプロイをホストにスケジューリングします。ツールは、構成ファイルに指定された中央処理装置(CPU)の容量、メモリー、その他の要件や制約に基づいて、最適なホストを選択します。

3. ライフサイクル管理

コンテナがデプロイされると、オーケストレーション・ツールはコンテナ定義ファイル(多くの場合、Dockerfile)に基づいてコンテナ化されたアプリケーションのライフサイクルを管理します。

ライフサイクル管理のタスクには、次のようなものがあります。

  • コンテナ間の拡張性(スケールアップおよびスケールダウン)、負荷分散、およびリソースの割り当てを管理します。
  • また、障害やシステムリソースの不足が発生した場合には、コンテナを別のホストに移動させることで、可用性とパフォーマンスを確保します。
  • アプリケーションの健全性やパフォーマンスを監視するために、ログ・データやその他のテレメトリー情報を収集・保存します。

コンテナ・オーケストレーションの仕組みを詳しく知りたい方は、こちらの動画をご覧ください。

コンテナオーケストレーションの利点

コンテナ・オーケストレーションの主な利点には、以下が含まれます。

  • オートメーション
  • 回復力
  • リソースの有効活用とパフォーマンスの向上
  • コスト効率
  • スピードと機敏性
  • 安全性の向上
  • プロダクティビティーを高める

オートメーション

コンテナ・オーケストレーションの最大の利点は自動化であり、大規模なコンテナ化アプリケーション群の管理に伴う手作業の負担と複雑さを大幅に軽減します。

回復力

コンテナ・オーケストレーション・ソリューションは、障害が発生した際にコンテナを再起動または拡張することで、レジリエンスを強化します。この機能により、高い可用性とアプリケーションのアップタイムの向上が実現します。

リソースの有効活用とパフォーマンスの向上

自動化されたホストの選定とリソースの割り当てにより、コンピューティング・リソースを最大限に効率よく活用することができます。たとえば、コンテナ・オーケストレーション・ソリューションは、個々のコンテナに応じてCPU、メモリー、ストレージを調整できるため、過剰なプロビジョニングを防ぎ、全体のパフォーマンスを向上させます。

コスト効率

コンテナ・オーケストレーションにより手動での介入が不要となり、運用コストが削減されます。また、コンテナは仮想マシン(VM)よりも必要とするリソースが少ないため、ITインフラの要件や間接コストの削減にもつながります。

スピードと機敏性

コンテナ・オーケストレーション・ツールは、アプリケーションの開発とデプロイのスピードを加速させ、現代のクラウドネイティブなプロセスにおいて重要なサポートを提供します。

安全性の向上

コンテナは、アプリケーションをホスト・システムおよび他のアプリケーションから分離することで、攻撃対象領域を減らし、セキュリティを向上させます。多くのプラットフォームには、脆弱性を検知する自動スキャン機能や、イメージ・レジストリーを保護する機能が備わっており、全体的な保護を強化します。

生産性の向上

オペレーションを自動化することで、コンテナ・オーケストレーションはアジャイルやDevOpsのアプローチを支援します。これにより、チームは迅速で反復的なサイクルで開発とデプロイを行うことができ、新機能や新たな機能強化をより早くリリースすることが可能になります。

AI Academy

ハイブリッドクラウドでAI対応を実現

IBMのエキスパートが主催するこのカリキュラムは、ビジネス・リーダーが成長を促進するAI投資に優先順位を付けるために必要な知識を習得できます。

Kubernetesを使用する利点

Googleによって開発され、2014年にリリースされたKubernetesは、オープンソース・ソフトウェアの歴史の中でも最も急成長を遂げたプロジェクトの1つとなりました。現在、KubernetesはCloud Native Computing Foundation(CNCF)によって管理されています。2016年にKubernetesがCNCFに加わって以来、コントリビューターの数は731人から8,012人へと増加しました。1

Kubernetesは、他のコンテナ・エコシステムのツールと組み合わせることで、企業が高い生産性を備えたプラットフォーム・アズ・ア・サービス(PaaS)を提供できるようにしますこのクラウド・コンピューティングモデルは、クラウドネイティブなアプリケーション開発における多くのインフラおよび運用関連のタスクや課題に対応し、開発チームがコーディングとイノベーションに専念できるようにします。

Kubernetesが他のオーケストレーション・ソリューションに比べて優れている点は、以下のような複数の分野における、より包括的かつ高度な機能に起因しています。

  • コンテナのデプロイ
  • ロールアウト
  • サービスの発見
  • ストレージのプロビジョニング
  • 負荷分散と拡張性
  • 自己修復により高可用性を実現
  • 複数のクラウド・プロバイダー間でのサポートとポータビリティ
  • オープンソースのエコシステム

コンテナのデプロイ

Kubernetesは、指定された数のコンテナを指定されたホストにデプロイし、それらを望ましい状態で実行し続けます。

ロールアウト

ロールアウトは、デプロイに対する変更です。Kubernetesを使用すると、開発者はロールアウトの開始、一時停止、再開、ロールバックを実行できます。

サービスの発見

Kubernetesは、ドメイン・ネーム・システム(DNS)名やIPアドレスを使用してサービスを検出することで、コンテナをインターネットや他のコンテナに自動的に公開することができます。

ストレージのプロビジョニング

開発者は、必要に応じて自分のコンテナーの永続的なローカル・ストレージまたはクラウド・ストレージを Kubernetesにマウントできます。

負荷分散と拡張性

コンテナへのトラフィックが急増した際には、Kubernetesがオートスケーリングや負荷分散を活用して、ネットワーク全体にトラフィックを分散させ、安定性とパフォーマンスを確保します。この機能により、開発者がロード・バランサーを個別に設定する手間も省けます。

自己修復により高可用性を実現

コンテナーに障害が発生した場合、Kubernetes はコンテナーを自動的に再起動または置き換えることができます。また、Kubernetesは、組織のヘルスチェック要件を満たさないコンテナを停止させることもできます。

複数のクラウド・プロバイダー間でのサポートと移植性

Kubernetesは、主要なすべてのクラウド・プロバイダーから幅広くサポートされています。この機能は、アプリケーションをハイブリッドクラウドパブリッククラウドプライベートクラウド、およびオンプレミスのインフラストラクチャーを組み合わせた環境)や、マルチクラウド(複数のクラウド・ベンダーのクラウド・サービスを利用する環境)にデプロイする組織にとって、不可欠な機能です。

オープンソースのエコシステム

Kubernetesには、Kubernetes APIを介して機能を強化するための使いやすさとネットワーキング・ツールの拡大を続ける安定版もあります。これには、コンテナをサーバーレス・ワークロードとして実行可能にするKnativeや、オープンソースのサービスメッシュであるIstioが含まれます。

CaaS(Containers-as-a-Service)とは

CaaS(Containers as a Service)は、コンテナ化されたアプリケーションの管理およびデプロイを開発者が行えるようにするマネージド・サービスであり、企業に対して、移植性が高くスケーラブルなクラウド・ソリューションへのアクセスを提供します。2022年、世界のCaaS市場は約20億米ドルと評価されました。2調査によると、この市場は2027年までに70億米ドルを超える規模に達すると予測されており、その期間中の年間平均成長率(CAGR)は30.2%と見込まれています。3

CaaSプロバイダーは、コンテナ・ランタイム、オーケストレーション・レイヤー、永続的ストレージの管理、他のサービスとの統合など、さまざまな利点を企業に提供します。多くの主要なパブリック・クラウド・プロバイダーは、Kubernetesを基盤技術として使用したコンテナ・オーケストレーションのマネージド・サービスを提供しています。

主なCaaSプロバイダーには以下が含まれます。

  • AWSのAmazon Elastic Container Service(Amazon ECS)
  • Google CloudのGoogle Kubernetes Engine(GKE)
  • IBM Cloud Kubernetes Service
  • Microsoft AzureのAzure Container Instances(ACI)
  • Red Hat OpenShift

コンテナ・オーケストレーションとAI

Kubernetesのようなコンテナ化されたオーケストレーション・プラットフォームは、予知保全のワークフロー(リアルタイムのヘルスチェックやリソース計画を含む)など、人工知能(AI)および機械学習(ML)の一部を自動化することができます。

機械学習は、テキスト分類、感情分析、機械翻訳などの高度な自然言語処理(NLP)を実行するために、大規模言語モデル(LLM)に依存しています。コンテナ・オーケストレーションは、NLPプロセスを自動化するために、大規模言語モデル(LLM)のデプロイを加速させるのに役立ちます。また、企業は生成AIモデルを実行・スケーリングするためにもコンテナ・オーケストレーションを活用しており、これにより高い可用性と障害耐性が確保されます。

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

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

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

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

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

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

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

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

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

1Kubernetes Project Journey Report、Cloud Native Computing Foundation、2023年6月8日。

2Containers as a Service Market worth USD 5.6 billion by 2027 - Exclusive Study by MarketsandMarkets、Cision社、2022年11月30日。

3 Container as a Service Global Market Report 2023、Yahoo Finance、2023年6月1日。