コンテナ オーケストレーションは、コンテナのプロビジョニング、デプロイ、ネットワーキング、スケーリング、可用性、ライフサイクル管理を自動化します。今日、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は、コンテナエコシステムに含まれる他のツールとともに、クラウドネイティブなアプリケーション開発にまつわるインフラや運用に関連するタスクや問題の多くに対処する、生産性の高い PaaS(Platform-as-a-Service )を提供することを可能にし、開発チームはコーディングとイノベーションのみに集中することができる。
他のオーケストレーション ソリューションに対する Kubernetes の利点は主に、次のようないくつかの領域におけるより包括的で洗練された機能の結果です。
Red Hat OpenShift on IBM Cloud は、パブリック環境およびハイブリッド環境で OpenShift を活用して、速度、市場対応性、拡張性、信頼性を実現します。
IBM Cloud Satellite を使用すると、オンプレミス、エッジ、パブリック・クラウド環境など、どこでも一貫したクラウド・サービスを開始できます。
コンテナー イメージ、バッチ ジョブ、またはソース コードをサーバーレス ワークロードとして実行します。サイジング、デプロイ、ネットワーク、スケーリングは必要ありません。
Turbonomicソフトウェアは、リソースの適切な割り振りと、それを実行するタイミングを自動的に決定することで、SLOを満たすために必要なものをKubernetes環境と基幹業務を担うアプリケーションが確実に取得できるようにします。