コンテナオーケストレーションとは何ですか?

コンテナオーケストレーションは、アプリケーションを大規模に展開できるように、コンテナのネットワークと管理を自動化するプロセスです。コンテナ化は、アプリケーションのコードを、任意のインフラストラクチャで実行するために必要なすべてのファイルとライブラリにバンドルします。マイクロサービスアーキテクチャには、アプリケーションが拡大して複雑になるにつれて、数百、場合によっては数千のコンテナが含まれる場合があります。コンテナオーケストレーションツールは、プロビジョニングやスケジューリングからデプロイや削除までのライフサイクル全体を自動化することで、コンテナインフラストラクチャの管理を簡素化することを目的としています。組織は、追加のメンテナンスのオーバーヘッドを発生させることなく、大規模なコンテナ化の恩恵を受けることができます。

コンテナオーケストレーションはなぜ必要なのですか?

コンテナは、クラウドネイティブアプリケーションの標準コンピューティング単位になっています。クラウドプロバイダーは、あらゆる種類のコンピューティングワークロードを実行するための仮想サーバーインスタンスを提供しており、コンテナベースのワークロードに最適です。コンテナを実行するための唯一の要件は、サーバー自体が Docker のようなコンテナ化サービスを実行することです。Docker は、ソフトウェアと関連ライブラリ、システムツール、コード、ランタイムをコンテナにパッケージ化するためのオープンソースツールです。単一のサーバーインスタンス上で少数のコンテナを実行および管理するための軽量な解決ですが、拡張が課題になります。

マネージドコンテナオーケストレーションプラットフォームが存在する前は、組織は複雑なスクリプトを使用して、複数のマシンにわたるコンテナのデプロイ、スケジューリング、削除を管理していました。これらのスクリプトを管理するとバージョン管理などの課題が発生し、セットアップの拡張も困難でした。コンテナオーケストレーションはこれらの複雑さを自動化して解決し、手動管理に関連する課題を解消します。 

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

コンテナオーケストレーションツールは、次のような場合に必要になります:

  • 複数のインスタンスにわたってコンテナを管理および拡張します。 
  • さまざまなコンテナー化されたアプリケーションを実行します。
  • さまざまなバージョンのアプリケーション (たとえば、CI/CD でのテストと本番環境) を一度に実行できます。
  • コンテナの複数の重複インスタンス (レプリカ) を実行することで、サーバーに障害が発生した場合でもアプリケーションサービスの継続性を確保します。
  • アプリの複数のインスタンスを複数の異なる地理的地域で実行します。
  • 予算の都合上、複数のサーバーインスタンスの使用率を最大化します。
  • 何千もの異なるマイクロサービスで構成される大規模なコンテナ化されたアプリケーションを実行します。

コンテナオーケストレーションにはどのような利点がありますか?

コンテナオーケストレーション解決なしで複雑なコンテナアーキテクチャを管理することは難しい場合があります。コンテナオーケストレーションは、コンテナの作成、設定、スケジューリング、展開、削除を管理します。また、以下もサポートしています:

  • アプリケーションの負荷分散とトラフィック管理。
  • コンテナ間のアプリケーションサービスの継続性。
  • コンテナ化全体のセキュリティ。
  • コンテナステータスの監視。
  • 基盤となるサーバーまたはインスタンス資源からコンテナを調達します。

コンテナオーケストレーションのその他の利点は次のとおりです。

ビルトイン・レジリエンス

シンプルなコンテナ化サービスは通常、コンテナがオフラインになっても再起動しません。同様に、コンテナが実行されているマシンがダウンした場合、マシンの再起動時にコンテナは再起動されません。コンテナオーケストレーション解決を使用すると、マシンに障害が発生した場合でも、コンテナが自動的に再起動されるか、複数のバージョンが常に稼働していることを確認できます。

強化されたパフォーマンス

コンテナオーケストレーションの最大の利点の 1 つは、コンテナ化されたアプリケーションのスケーラビリティ、可用性、パフォーマンスを自動化できることです。コンテナーオーケストレーションツールは、需要、ネットワークの可用性、およびインフラストラクチャの制限に基づいてスケーリングするように構成できます。コンテナオーケストレーション解決は、コンテナネットワーク全体のパフォーマンスを監視し、最適なパフォーマンスが得られるようにコンテナを自動的に再構成できます。

リソースの最適化

基盤となるサーバーとインスタンスの運用にはコストがかかるため、コストを最適化するためには効率的に使用する必要があります。コンテナオーケストレーションにより、組織は利用可能な各インスタンスの使用率を最大化できるだけでなく、資源が不足した場合はオンデマンドインスタンスをインスタンス化できます。これはインフラのコスト削減につながります。

コンテナオーケストレーションはどのように機能しますか?

コンテナは、ほぼすべてのタイプのマシンで実行するために必要なすべてのライブラリと関数がバンドルされた、自己完結型の Linux ベースのアプリケーションまたはマイクロサービスです。コンテナオーケストレーションは、サーバーインスタンス (ノードとも呼ばれる) のグループ全体でコンテナーを管理することで機能します。相互接続されたコンテナを実行するノードのグループをクラスターと呼びます。 

コンテナオーケストレーションには、まず、クラスター内のすべてのノードで実行される基盤となるコンテナ化解決が必要であり、通常は Docker です。ノードはオーケストレーションツールも実行する必要があります。コントロールプレーンを備えた指定されたマスターノードは、オーケストレーション解決自体のコントローラーです。解決管理者は、マスターノードの GUI またはコマンドラインコントローラーを使用して、コンテナーオーケストレーションツールを管理および監視します。 

作成とスケジューリング

コンテナオーケストレーション解決は、YAML または JSON で記述された宣言型構成ファイルを読み取って、システムの特定の必要な状態を学習します。ファイルに指定されている情報を使用して、ツールは次のことを行います:

  1. コンテナーレジストリーからコンテナーイメージを取得します。
  2. 個々の要件に合わせてコンテナをプロビジョニングします。
  3. コンテナ間で必要なネットワークを決定します。 

次に、ツールはマルチコンテナアプリケーションをクラスター全体にスケジュールして展開します。ノードとコンテナ間の最適な適合は、構成ファイルで指定されているのではなく、コンテナオーケストレーションツールによって決定されます。このツールは、CPU、メモリなどのノードの資源制約と、定義されたコンテナ要件に基づいて、各コンテナを実行する実際のノードを選択します。 

管理

コンテナがクラスター全体で稼働すると、オーケストレーションツールはシステム全体の状態を管理して、指定されたパフォーマンス状態を維持します。これには以下が含まれる場合があります:

  • コンテナ間の資源割り当て。
  • 新しいノードへのコンテナの展開、またはコンテナの削除。
  • アプリケーションへのトラフィックの負荷分散。

コンテナオーケストレーション解決は、コンテナのライフサイクルを管理して、大規模で複雑なマルチコンテナのワークロードと環境を最適化して保護します。組織が必要とするコンテナ化されたアプリケーションをいくつでも管理できます。高可用性と耐障害性を実現するために複数のマスターノードを実行することは、組織の要求が高い場合によく見られます。

コンテナオーケストレーションの課題は何ですか?

以下は、コンテナオーケストレーションのいくつかの課題です。

追加の管理レイヤー

Kubernetes は、組織で広く使用されているオープンソースのコンテナオーケストレーション解決です。使いやすさ、クロスプラットフォームの可用性、開発者サポートで知られています。ただし、それでも基盤となる資源管理が必要です。コンテナの代わりに、Kubernetes の資源プロビジョニングを管理する必要があります。クラウドネイティブのコンテナオーケストレーションツールは、独自のリソース要件を自己管理するため、より良い選択肢です。 

トレーニングが不十分

適切なツールを用意するだけでは、最適なコンテナオーケストレーションを実現するには不十分です。また、オーケストレーションを正しく処理し、望ましい状態を定義し、監視出力を理解するには、熟練したツール管理者も必要です。複雑なコンテナ環境をうまく管理するには、 DevOps と CI/CD プロセス、コンテナ化、マシンアーキテクチャを深く理解する必要があります。チームで適切なスキルセットを構築するには、トレーニングが必要な場合があります。

バージョン構成

ソフトウェアアプリケーションはバージョン管理されており、開発、テスト、本番などの特定の環境向けに特定のビルドがあります。同様に、コンテナオーケストレーションツールでは、バージョン履歴を含む複数の構成を文書化する必要があります。つまり、展開と管理に加えて、迅速かつ反復可能なプロビジョニングを処理できるということです。

AWS はコンテナオーケストレーションの要件をどのようにサポートできますか?

Amazon ECS は、組織が AWS 上でコンテナ化されたアプリケーションを大規模に構築、デプロイ、管理するための完全マネージド型コンテナオーケストレーションサービスです。バージョンレスで、クラスターの提供を自動的に管理します。CPU とメモリの要件、ネットワークと IAM のポリシー、起動タイプとデータボリュームを指定する機能によって、コンテナの動作プロパティを保持できます。API コールを使用すると、コンテナベースのアプリケーションを起動および停止したり、クラスターの完全な状態をクエリしたり、セキュリティグループ、Elastic Load Balancing (ELB), Amazon Elastic Block Store (EBS) ボリューム, and AWS Identity Access Management (IAM) 役割などの使い慣れた AWS 機能にアクセスしたりできます。 

コンテナオーケストレーションに Kubernetes を使用しているユーザーにとって、Amazon Elastic Kubernetes Service (Amazon EKS) は、AWS クラウドまたはオンプレミスのデータセンターで Kubernetes サービスを実行するためのマネージド型 Kubernetes サービスです。オンプレミスでは、EKS は、統合されたツールと AWS Outposts、仮想マシン、またはベアメタルサーバーへの簡単なデプロイを備えた、一貫性のあるフルサポートの Kubernetes 解決を提供します。クラウドでは、Amazon EKS は、コンテナのスケジューリング、アプリケーションの可用性の管理、クラスターデータの保存、および他の重要なタスクを担当する Kubernetes コントロールプレーンノードの可用性とスケーラビリティを自動的に管理します。AWS インフラストラクチャのパフォーマンス、スケール、信頼性、可用性をすべて利用できるほか、AWS ネットワーキングおよびセキュリティ サービスとの統合も利用できます。

今すぐアカウントを作成して、AWS の使用を開始しましょう。 

AWS での次のステップ

無料のアカウントにサインアップ

AWS 無料利用枠にすぐにアクセスできます。

サインアップ 
コンソールで構築を開始する

AWS マネジメントコンソールで構築を始めましょう。

サインイン