コンテナ・オーケストレーションとは
コンテナ・オーケストレーションは、コンテナ・アプリケーションのプロビジョニングと導入と管理を自動化および簡素化します。
IBMのニュースレターを購読する
青と黒の背景
コンテナ・オーケストレーションとは

コンテナ・オーケストレーションは、コンテナのプロビジョニング、導入、ネットワーキング、スケーリング、可用性、およびライフサイクル・マネジメントを自動化します。 今日、Kubernetesが最も人気のあるコンテナ・オーケストレーション・プラットフォームであり、Amazon Web Services(AWS)、Google Cloud Platform、 IBM Cloud、そしてMicrosoft Azureなど、パブリック・クラウド・プロバイダーのトップ企業の数々が、Kubernetesのマネージド・サービスを提供しています。 その他のコンテナ・オーケストレーション・ツールには、Docker SwarmやApache Mesosなどがあります。

コンテナの詳細とオーケストレーションが必要である理由

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

コンテナを作成する能力は数十年にわたって存在してきましたが、それが幅広く利用可能となったのは、 Linux がコンテナ機能をその中核に据えた2008年です。そしてさらに、 Docker オープンソース コンテナ化プラットフォームが2013年に発表されて以降、一層幅広く使用されるようになりました。 (Dockerは非常に人気があるため、「Dockerコンテナ」と「コンテナ」という用語が、区別なく使用されることがよくあります。) 

より資源効率が良く、仮想マシン(VM)より移植しやすいため、コンテナ(より具体的には、コンテナ化されたマイクロサービスまたはサーバーレス機能)は、現代のクラウドネイティブ・アプリケーション事実上のコンピュート・ユニットになっています。 (コンテナの利点の詳細については、以下のインタラクティブ・データをご参照ください)

数量が少ない場合は、コンテナの導入や管理は手動で簡単に行えます。 しかし、ほとんどの組織で コンテナ化されたアプリケーション の数は急速に増えており、それらを(特に、 継続的組み込み/継続的デリバリー (CI/CD)または DevOps パイプラインの一部として)大規模に管理することは、 自動化をしなければ不可能です。

コンテナ・オーケストレーションを取り入れ、 コンテナ化されたアプリケーション とサービスの 導入 と実行にかかるオペレーション・タスクを自動化しましょう。  最新のIBMの 調査 (PDF、1.4MB)では、コンテナを使用する開発者の 70%がコンテナ・オーケストレーション・ソリューションを使用しており、そのさらに70%はフルマネージド(クラウド管理された)コンテナ・オーケストレーション・サービスを組織内で使用していると報告されています。

レポート全体をダウンロードする:企業におけるコンテナ(1.4 MB)(英語)
コンテナ・オーケストレーションの仕組み

ツール間の方法論の違いや能力差はありますが、コンテナ・オーケストレーションのプロセスには、基本的に3つのステップがあります(反復アジャイルや DevOps パイプラインの一部である場合は、プロセスが循環することもあります)。

多くの コンテナ・オーケストレーション・ツール は、 宣言型 の構成モデルをサポートしています。つまり、開発者が希望する構成状態を定義する 構成ファイル (使用するツールに応じて YAML 形式また JSON 形式で)を作成すると、オーケストレーション・ツールが、インテリジェンスを使用してそのファイルを実行し、その構成状態を実現します。  構成ファイル は通常次のことを行います。

  • どの コンテナ・イメージ がアプリケーションを構成し、どこ(どのレジストリー)に配置されているかを定義する

  • ストレージおよびその他のリソースとともにコンテナをプロビジョニングする

  • コンテナ間のネットワーク接続を定義して保護する

  • バージョンの管理をする(段階的またはカナリア・ロールアウトの場合)

オーケストレーション・ツールはコンテナ(そしてレジリエンシーのためにコンテナのレプリカも)のホストへの導入をスケジュールし、CPU能力、メモリー、または 構成ファイル の中に指定されたその他の条件や制約に基づいて、最良のホストを選択します。

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

  •  拡張性 (拡張と縮小)、 コンテナ間のロード・バランシング、リソース 割り振り を管理する

  • システム・リソース障害または不足が発生した場合に別のホストにコンテナを再配置して可用性とパフォーマンスを確保する

  • アプリケーションの正常性とパフォーマンスをモニタリングするために使用される、ログ・データや他のテレメトリを収集して保管する

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


コンテナ・オーケストレーションの主な利点が オートメーション であることは明らかですが、 それは膨大な コンテナ化されたアプリケーション を管理する上での手間や複雑さを大幅に削減してくれるからだけではありません。 オペレーションを自動化することで、オーケストレーションはアジャイルや DevOps アプローチをサポートし、チームが開発とデプロイを急速に繰り返して新機能や改善のリリースを早めることを可能にします。

加えて、オーケストレーション ツールのインテリジェンスは、コンテナ化の固有の利点の多くを向上 または拡張 することができます。 例えば、 宣言型 構成に基づく自動化されたホスト選択とリソースの 割り振りにより、コンピューティング・リソースの利用効率を最大化できます。自動化された正常性モニタリングおよびコンテナの再配置により、可用性を最大化できます。

Kubernetes

前述のとおり、 Kubernetes は最も人気がある コンテナ・オーケストレーション・プラットフォームです。 コンテナ エコシステム内の他のツールと組み合わせることで、 Kubernetes は企業が生産性の高い Platform-as-a-Service(PaaS) を提供することを可能にします。これは、インフラストラクチャおよび運用に関連するタスクと クラウドネイティブ アプリケーション開発周辺の問題の多くに対処します。これにより、開発チームはコーディングとイノベーションに集中することができます。

Kubernetesが他のオーケストレーション・ソリューションに勝っているのは、以下のような複数の分野において、より包括的かつ洗練された機能を備えているためです。

  • コンテナのデプロイ。 Kubernetesは、指定された数のコンテナを指定されたホストにデプロイし、それらのコンテナを 適切な状態で稼働し続けます。

  • ロールアウト。 ロールアウトはデプロイメントに加える変更です。 Kubernetes では、ユーザーがロールアウトを開始、一時停止、再開、ロールバックできます。

  • サービスの検出。 Kubernetes は DNS 名または IPアドレスを使用して、コンテナをインターネットまたは他のコンテナに自動で公開できます。

  • ストレージ プロビジョニング。 開発者は必要に応じて、コンテナ用に永続的なローカル・ストレージまたはクラウド・ストレージをマウントするように Kubernetes を設定できます。

  • ロード・バランシング と 拡張性。 コンテナへのトラフィックが急増した場合、 Kubernetes は ロード・バランシング とスケーリングを適用し、ネットワーク全体にトラフィックを分散させて安定性とパフォーマンスを確保することができます。 (開発者が ロード・バランサーの設定をせずに済むということでもあります。)

  • 高可用性のための自己修復。 コンテナに障害が発生した場合は、 Kubernetes がそのコンテナを自動的に再始動または置換します。 正常性チェックの要件を満たさないコンテナを削除することもできます。

     
  • 複数の クラウド・プロバイダーにおけるサポートと 携帯性 。 前述の通り、Kubernetesは全てのクラウド・プロバイダートップ企業に対して、幅広いサポートを行っています。 これはアプリケーションを  ハイブリッド クラウド またはハイブリッド マルチクラウド 環境にデプロイする組織にとって特に重要です。

  • 成長している エコシステム の オープンソース ツール。 Kubernetes はまた、Kubernetes APIを介してその機能を向上し、拡大を続けるユーザビリティとネットワーキング・ツールの土台を持ちます。  Knativeもこれに含まれ、コンテナをサーバーレス・ワークロードとして稼働させることを可能にします。また、オープンソース・サービス・メッシュである Istioも含まれています。 

 Kubernetesの詳細はこちら

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

Red Hat OpenShift on IBM Cloudは、パブリック環境やハイブリッド環境でOpenShiftを活用して、俊敏性、市場への即応性、拡張性、信頼性の向上を図ります。

Red Hat OpenShift on IBM Cloudの詳細はこちら
IBM Cloud Satellite

IBM Cloud Satelliteでは、オンプレミス、エッジ、パブリッククラウドなどのあらゆる環境で、一貫したクラウド・サービスをご利用いただけます。

IBM Cloud Satelliteの詳細はこちら
IBM Cloud Code Engine

コンテナ・イメージ、バッチ・ジョブ、またソースコードをサーバーレス・ワークロードとして実行します。サイジング、デプロイ、ネットワーキング、スケーリングは不要です。

IBM Cloud Code Engineの詳細はこちら
参考情報 企業におけるコンテナ

新しいIBMの調査では、コンテナとKubernetesを導入する勢いが高まっていることが明らかになっています。

クラウドと従来型のITの最高の機能を組み合わせる

コンテナ・オーケストレーションはオープン・ハイブリッド・クラウド戦略の主要コンポーネントであり、場所を問わずワークロードの作成と管理を可能にします。

Dockerとは

Dockerは、コンテナ化されたアプリケーションを構築、デプロイ、管理するためのオープンソース・プラットフォームです。

次のステップ

Red Hat OpenShift on IBM Cloudを使用すると、開発者は、迅速かつセキュアな方法で、エンタープライズ・ワークロードをKubernetesクラスターにコンテナ化しデプロイできます。セキュリティー管理、コンプライアンス管理、デプロイメント管理、進行中のライフサイクル管理などの単調で反復的なタスクから解放されることができるようになります。さらにOpenShift Container Platform(OCP)はIBMが管理をするため、お客様はコア・タスクに集中できる時間が増加します。

Red Hat OpenShift on IBM Cloudの詳細はこちら