すべてのプロダクト
Search
ドキュメントセンター

Container Service for Kubernetes:アプリケーション配布の概要

最終更新日:Apr 18, 2025

分散型クラウドコンテナプラットフォーム Kubernetes 版(ACK One)のアプリケーション配布機能がサポートされています。 この機能を使用すると、Fleet インスタンスから、その Fleet インスタンスに関連付けられている複数のクラスタにアプリケーションを配布できます。 この機能を使用すると、Fleet インスタンスで配布ポリシーを設定できます。 ポリシーを使用して、対象となる Kubernetes リソースを、ポリシーと一致するクラスタに効率的に配布できます。 さらに、異なるクラスタとアプリケーションのデプロイ要件を満たすために、差別化されたポリシーを設定できます。 GitOps と比較して、この配布方法は Git リポジトリを必要としません。

アプリケーション配布の仕組み

Fleet インスタンスでアプリケーションのリソースを作成した後、PropagationPolicyClusterPropagationPolicy を作成して、Fleet インスタンスに関連付けられているクラスタに特定のリソースを配布するために使用される配布ポリシーを設定します。 また、OverridePolicyClusterOverridePolicy を作成して、ビジネス要件に基づいて配布中に特定のリソースをオーバーライドすることもできます。

説明

アプリケーションを初期化するときに PropagationPolicyOverridePolicy を作成するだけで済みます。 PropagationPolicy と OverridePolicy は、作成された後も有効です。 PropagationPolicy で配布するリソースの一致ルールを設定し、OverridePolicy でオーバーライドするリソースの一致ルールを設定できます。 後続のリソースのアップグレードまたは更新は、関連付けられたクラスタに自動的に同期されます。 AMC コマンドラインツールを使用して、関連付けられたクラスタ内のアプリケーションの配布進捗状況をクエリできます。

高度な機能

ワークロードの静的重みと動的重みに基づくスケジューリング

マルチクラスタアプリケーションスケジューリングシナリオでは、ACK One Fleet インスタンスは、配布ポリシーに基づいて ポッド レプリカを複数のクラスタにスケジュールします。 以下の配布ポリシーがサポートされています。

  • 静的重みに基づく配布ポリシー: クラスタ管理者は、ポリシーで関連付けられたクラスタに静的重みを指定できます。 スケジューラは、指定された重みに基づいて、特定の数の ポッド レプリカをクラスタにスケジュールします。 静的重みに基づく配布ポリシーの設定方法の詳細については、「replicaScheduling」をご参照ください。

  • 動的重みに基づく配布ポリシー: スケジューラは、クラスタで使用可能なリソース量に基づいて、各関連付けられたクラスタがホストできる ポッド の数を計算することにより、クラスタの動的重みを生成します。 スケジューラは、動的重みに基づいて、特定の数の ポッド レプリカをクラスタにスケジュールします。 動的重みに基づく配布ポリシーの設定方法の詳細については、「動的配布とデスケジューリング」をご参照ください。

デスケジューリング

マルチクラスタアプリケーションスケジューリングシナリオでは、各関連付けられたクラスタで使用可能なリソース量は動的に変化します。 その結果、ポッド の優先順位が低い、リソースが不足しているなどの理由で、ポッド をクラスタにスケジュールできない場合があります。 ポッド が関連付けられたクラスタにスケジュールできない場合、デスケジューラは ポッド を別のクラスタに再度スケジュールして、ポッド が正常に実行できるようにします。 デスケジューリングはデフォルトで有効になっています。 デスケジューリングの検証方法の詳細については、「デスケジューリングの検証」をご参照ください。

アプリケーションレベルのフェールオーバー

マルチクラスタアプリケーションスケジューリングシナリオでは、オンラインサービスとオフラインサービスを同じクラスタに配置することで、リソース使用率を向上させることができます。 オンラインサービスがオフラインサービスの影響を受けないようにするには、オフラインサービスにオンラインサービスよりも低い優先順位を割り当てるか、プリエンプティブル インスタンスでオフラインサービスを実行します。 この場合、ノードの例外、優先順位の高い ポッド によるリソースのプリエンプション、プリエンプティブル インスタンスの解放などの理由で、オフラインサービスの実行が停止する場合があります。

前述の問題に対処するために、ACK One Fleet インスタンスはアプリケーションレベルのフェールオーバーをサポートしています。 ジョブ または タスク の実行が停止すると、アプリケーションレベルのフェールオーバー機能によって、ジョブ または タスク が別のクラスタに自動的に移行されます。 詳細については、「Fleet インスタンスで Kube Queue を使用し、ギャングスケジューリングを使用して PyTorchJob をスケジュールする方法」をご参照ください。

マルチクラスタギャングスケジューリング

ギャングスケジューリングは、関連する ポッド のグループが同時にスケジュールされることを保証します。 スケジューリング要件が満たされない場合、ポッド はスケジュールされません。 ギャングスケジューリングは、all-or-nothing シナリオでのジョブ スケジューリングのソリューションを提供します。 マルチクラスタアプリケーション配布シナリオでは、マルチクラスタギャングスケジューリングは、リソースの事前割り当てまたは動的リソースチェックを使用して、関連する ポッド のグループを同じクラスタにスケジュールします。

PyTorch および TensorFlow トレーニングジョブはマスターワーカーアーキテクチャを使用し、Spark ジョブ はドライバエグゼキュータアーキテクチャを使用します。 複数のノードで複数の GPU を使用する PyTorch または TensorFlow トレーニングジョブを実行する場合、または Spark ジョブ を実行する場合は、マルチクラスタギャングスケジューリング機能を使用して、ジョブ の ポッド を同じクラスタにスケジュールできます。 これにより、マスター ポッド とワーカー間、およびドライバ ポッド とエグゼキュータ ポッド 間の通信を確保できます。

マルチクラスタギャングスケジューリング、デスケジューリング、およびアプリケーションレベルのフェールオーバー機能により、ACK One Fleet インスタンスは、AI ジョブ を十分なリソースを提供するクラスタにスケジュールし、正常に実行できるようにします。 詳細については、「ジョブ 配布」をご参照ください。

配布可能なリソース

次の表に、マルチクラスタアプリケーション配布と差別化されたデプロイメントでサポートされているリソースを示します。

説明

デフォルトでは、Fleet インスタンスでリソースを作成する権限を持っている場合、Fleet インスタンスからインスタンスに関連付けられているクラスタにリソースを配布する権限を持っています。

リソースレベル

リソースタイプ

APIVersion

配布ポリシー

オーバーライドポリシー

クラスタ

Namespace

v1

サポート対象

サポート対象

PersistentVolume

v1

サポート対象

サポート対象

StorageClass

storage.k8s.io/v1

サポート対象

サポート対象

CutomResourceDefinition

apiextensions.k8s.io/v1

サポート対象

サポート対象

Namespace

Deployment

apps/v1

サポート対象

サポート対象

StatefulSet

apps/v1

サポート対象

サポート対象

DaemonSet

apps/v1

サポート対象

サポート対象

Job

batch/v1

サポート対象

サポート対象

CronJob

batch/v1

サポート対象

サポート対象

Ingress

networking.k8s.io/v1

サポート対象

サポート対象

Service

v1

サポート対象

サポート対象

PersistentVolumeClaim

v1

サポート対象

サポート対象

ConfigMap

v1

サポート対象

サポート対象

Secret

v1

サポート対象

サポート対象

Pod

v1

サポート対象

サポート対象

LimitRange

v1

サポート対象

サポート対象

ResourceQuota

v1

サポート対象

サポート対象

HorizontalPodAutoscaler

autoscaling/v2

サポート対象

サポート対象

関連情報

機能

説明

関連情報

配布ポリシーを使用してアプリケーションをデプロイする

このトピックでは、kubectl を使用して PropagationPolicy を作成し、特定のリソースを Fleet インスタンスに関連付けられているクラスタに配布し、OverridePolicy を作成して配布中に特定のリソースをオーバーライドする方法について説明します。

アプリケーション配布の概要

ポリシーの説明

このトピックでは、配布ポリシーとオーバーライドポリシーの作成方法、およびポリシーテンプレートのパラメータについて説明します。 このトピックを読むことで、アプリケーション配布ポリシーについて包括的に理解できます。

PropagationPolicy と OverridePolicy

AMC を使用して関連付けられたクラスタ内のアプリケーションステータスをクエリする

このトピックでは、kubectl amc コマンドを実行して、関連付けられたクラスタ内のアプリケーションの配布進捗状況をクエリする方法について説明します。

AMC コマンドラインの使用