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

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

コンテナの詳細と、なぜオーケストレーションが必要なのか?

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

コンテナを作成する機能は何十年も前から存在していたが、2008年にLinuxがそのカーネルにコンテナ機能を搭載したことで広く利用されるようになり、2013年にオープンソースのコンテナ化プラットフォーム Dockerが 登場したことで広く利用されるようになりました。 (Docker は非常に人気があるため、「Docker コンテナー」と「コンテナー」が同じ意味で使用されることがよくあります。)

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

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

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

レポート全文をダウンロードするエンタープライズにおけるコンテナ
コンテナオーケストレーションの仕組み

ツールによって方法論や機能に違いはありますが、コンテナ オーケストレーションは基本的に 3 段階のプロセス (反復的なアジャイルまたは DevOps パイプラインの一部である場合はサイクル) です。

ほとんどのコンテナ・オーケストレーション・ツールは、宣言型コンフィギュレーション・モデルをサポート:開発者は、希望するコンフィギュレーション状態を定義するコンフィギュレーションファイル(ツールによってYAMLかJSON)を書き、オーケストレーションツールはそのファイルを実行し、その状態を実現するために独自のインテリジェンスを使用します。通常、構成ファイル

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

  • コンテナにストレージやその他のリソースをプロビジョニングします

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

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

オーケストレーションツールは、利用可能なCPU容量、メモリ、または構成ファイルで指定されたその他の要件や制約に基づいて最適なホストを選択し、ホストへのコンテナ(および弾力性のためのコンテナのレプリカ)のデプロイをスケジュールします。

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

  • スケーラビリティ (上下)、負荷分散、コンテナ間のリソース割り当ての管理

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

  • アプリケーションの健全性とパフォーマンスを監視するために使用されるログ データとその他のテレメトリを収集および保存します。

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


コンテナ オーケストレーションの主な利点は 自動化であることはおそらく明らかです。自動化により、 大規模なコンテナ化されたアプリケーション資産の管理にかかる労力と複雑さが大幅に軽減されるだけではありません。運用を自動化することで、オーケストレーションはアジャイルまたは DevOps アプローチをサポートし、チームが迅速な反復サイクルで開発およびデプロイし、新しい機能をより迅速にリリースできるようにします。

さらに、オーケストレーション ツールのインテリジェンスにより、コンテナ化に固有の利点の多くを強化または拡張できます。たとえば、宣言型構成に基づいて自動化されたホスト選択とリソース割り当てにより、コンピューティング リソースの効率的な使用が最大化されます。自動化されたヘルスモニタリングとコンテナの再配置により、可用性が最大化されます。

Kubernetes

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

他のオーケストレーション ソリューションに対する 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 を活用して、速度、市場対応性、拡張性、信頼性を実現します。

IBM Cloud 上の Red Hat OpenShift を探索する
IBM Cloud Satellite

IBM Cloud Satellite を使用すると、オンプレミス、エッジ、パブリック・クラウド環境など、どこでも一貫したクラウド・サービスを開始できます。

IBMクラウド・サテライトを探索する
IBM Cloud Code Engine

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

IBM クラウド・コード・エンジンについて詳しく見る
IBM® Turbonomic® で Kubernetes を最適化する

Turbonomicソフトウェアは、リソースの適切な割り振りと、それを実行するタイミングを自動的に決定することで、SLOを満たすために必要なものをKubernetes環境と基幹業務を担うアプリケーションが確実に取得できるようにします。

IBM Turbonomicの詳細はこちら
参考情報 企業内のコンテナ

IBM の新しい調査では、コンテナーと Kubernetes の導入の勢いが急速に高まっていることが文書化されています。

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

コンテナ オーケストレーションは、どこからでもワークロードを構築および管理できるオープン ハイブリッド クラウド戦略の重要なコンポーネントです。

Dockerとは?

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

次のステップ

Red Hat OpenShift on IBM Cloud は、エンタープライズ ワークロードを Kubernetes クラスターにコンテナ化してデプロイするための高速かつ安全な方法を開発者に提供します。セキュリティ管理、コンプライアンス管理、展開管理、継続的なライフサイクル管理を含む、退屈で反復的なタスクの負荷を軽減します。IBM が OpenShift Container Platform (OCP) を管理しているため、コアタスクに集中できる時間が増えます。

IBM Cloud 上の Red Hat OpenShift を探索する