Azure Container Instances のコンテナー グループ

Azure Container Instances の最上位のリソースは、コンテナー グループです。 この記事では、コンテナー グループとは何か、およびそれらによってどのような種類のシナリオが有効になるかを説明します。

コンテナー グループとは

コンテナー グループは、同じホスト コンピューター上にスケジュール設定されるコンテナーのコレクションです。 コンテナー グループ内のコンテナーでは、ライフサイクル、リソース、ローカル ネットワーク、ストレージ ボリュームを共有します。 これは、Kubernetes におけるポッドの概念に似ています。

次の図は、複数のコンテナーを含むコンテナー グループの例を示しています。

Container groups diagram

この例のコンテナー グループは:

  • 単一のホスト コンピューター上にスケジュール設定されます。
  • DNS 名ラベルが割り当てられます。
  • 単一のパブリック IP アドレスを公開し、1 つの公開ポートを持ちます。
  • 次の 2 つのコンテナーから構成されます。 片方のコンテナーはポート 80 でリッスンし、他方のポートはポート 5000 でリッスンします。
  • ボリューム マウントとして 2 つの Azure ファイル共有が含まれています。各コンテナーは共有のいずれかをローカルにマウントします。

Note

現在、複数コンテナー グループでサポートされているのは、Linux コンテナーのみです。 Windows コンテナーの場合、Azure Container Instances では、1 つのコンテナー インスタンスのデプロイのみをサポートします。 Microsoft ではすべての機能を Windows コンテナーにも取り入れるように取り組んでいますが、現在のプラットフォームの違いは、サービスの概要に関するページで確認できます。

デプロイ

複数コンテナー グループをデプロイするには、一般的な方法が 2 つあります: Resource Manager テンプレートまたは YAML ファイルを使用します。 コンテナー インスタンスのデプロイ時に追加の Azure サービス リソース (Azure Files 共有など) をデプロイする必要がある場合は、Resource Manager テンプレートをお勧めします。 YAML フォーマットは簡潔であるため、デプロイにコンテナー インスタンスのみが含まれている場合は、YAML ファイルをお勧めします。 設定できるプロパティの詳細については、「Resource Manager テンプレート リファレンス」または「YAML リファレンス」のドキュメントを参照してください。

コンテナー グループの構成を保持するために、Azure CLI の az container export コマンドを使用して、YAML ファイルに構成をエクスポートできます。 エクスポートを使用すると、コンテナー グループの構成を "コードとしての構成" のバージョン管理に格納できます。または、YAML で新しい構成を開発するときに、エクスポートされたファイルを出発点として使用します。

リソース割り当て

Azure Container Instances では、グループにインスタンスのリソース要求を追加することで、CPU、メモリ、必要に応じて GPU (プレビュー) などのリソースをマルチコンテナー グループに割り当てます。 たとえば、CPU リソースを例に挙げると、それぞれが 1 CPU を要求する 2 つのコンテナー インスタンスを持つ 1 つのコンテナー グループを作成すると、コンテナー グループに 2 CPU が割り当てられます。

コンテナー インスタンス別のリソース使用量

グループ内の各コンテナー インスタンスには、そのリソース要求で指定されたリソースが割り当てられます。 ただし、省略可能なリソース制限プロパティを構成している場合、グループ内のコンテナー インスタンスに使用される最大リソースが異なる場合があります。 コンテナー インスタンスのリソース制限は、必須のリソース要求プロパティ以上にする必要があります。

  • リソース制限を指定しない場合、コンテナー インスタンスの最大リソース使用量はそのリソース要求と同じになります。

  • コンテナー インスタンスの制限を指定した場合、インスタンスの最大使用量は要求よりも大きくなり、設定した上限に達する可能性があります。 それに応じて、グループ内の他のコンテナー インスタンスによるリソースの使用量が減少する可能性があります。 コンテナー インスタンスに設定できるリソース制限の最大値は、グループに割り当てられているリソース合計になります。

たとえば、あるグループに属する 2 つのコンテナー インスタンスがそれぞれ 1 CPU を要求するとき、あるコンテナーで実行されるワークロードが他のコンテナーのそれと比べ、多くの CPU 実行を要求することがあります。

このシナリオでは、コンテナー インスタンスに対して最大 2 つの CPU のリソース制限を設定できます。 この構成にすると、コンテナー インスタンスには最大 2 つの CPU (使用可能な場合) を使用できます。

Note

コンテナー グループの少量のリソースは、サービスの基になるインフラストラクチャによって使用されます。 コンテナーでは、グループに割り当てられているほとんどのリソースにアクセスできますが、すべてのリソースにアクセスできるわけではありません。 このため、グループ内のコンテナーのリソースを要求するときは、小さいリソース バッファーを計画してください。

最小値と最大値の割り当て

  • 最小値の 1 CPU と 1 GB メモリをコンテナー グループに割り当てます。 グループ内の個々のコンテナー インスタンスは、1 CPU と 1 GB メモリ未満でプロビジョニングできます。

  • コンテナー グループ内の最大リソースについては、デプロイ リージョンでの Azure Container Instances に対するリソースの可用性に関するページを参照してください。

ネットワーク

コンテナー グループは、外部に接続する IP アドレス、その IP アドレス上の 1 つ以上のポート、完全修飾ドメイン名 (FQDN) を持つ DNS ラベルを共有することができます。 外部クライアントがグループ内のコンテナーにアクセスできるようにするには、IP アドレスのポートをコンテナーから公開する必要があります。 コンテナー グループの IP アドレスと FQDN は、コンテナー グループを削除すると解放されます。

コンテナー グループ内では、コンテナー インスタンスは任意のポートの localhost を通じて相互にアクセスできます。それらのポートがグループの IP アドレスまたはコンテナーで外部に公開されていなくてもかまいません。

必要に応じて、Azure 仮想ネットワークにコンテナー グループをデプロイして、コンテナーで仮想ネットワーク内の他のリソースと安全に通信できるようにします。

ストレージ

コンテナー グループにマウントする外部ボリュームを指定できます。 サポートされるボリュームは次のとおりです。

これらのボリュームは、グループの個別のコンテナーの特定のパスにマップできます。

一般的なシナリオ

複数コンテナー グループは、1 つの機能タスクを少数のコンテナー イメージに分割する場合に便利です。 これらのイメージは複数のチームによって配布可能であり、異なるリソース要件を持っています。

次のような使用例が考えられます。

  • Web アプリケーションにサービスを提供するコンテナーとソース管理から最新のコンテンツをプルするコンテナー。
  • アプリケーション コンテナーとログ記録コンテナー。 ログ記録コンテナーは、メイン アプリケーションによって出力されるログとメトリックを収集し、長期保存される記憶域に書き込みます。
  • アプリケーション コンテナーと監視コンテナー。 監視コンテナーは、要求を定期的にアプリケーションに送信して、アプリケーションが実行中であり、正常に応答していることを確認します。そうでない場合はアラートを発生させます。
  • フロントエンド コンテナーとバックエンド コンテナー。 フロントエンドは、データを取得するためにサービスを実行しているバックエンドと共に、Web アプリケーションを提供する可能性があります。

次のステップ

Azure Resource Manager テンプレートを使用してマルチコンテナーのコンテナー グループをデプロイする方法を確認します。