サービスの最大インスタンス数を設定する

このページでは、デフォルトの Cloud Run 自動スケーリングの動作を使用して、Cloud Run サービスで使用できるインスタンスの最大数を設定する方法について説明します。サービスを手動でスケーリングするには、手動スケーリングをご覧ください。

Cloud Run で最大インスタンス数を指定すると、受信リクエストに応じたサービスのスケーリングを制限できます。ただし、トラフィックの急増などの要因により、短時間この最大数の設定を超過する場合があります。

この設定を使用して、コストの制御や、データベースなどのバッキング サービスへの接続数を制限できます。

サービスに適用される最大インスタンスの上限については、インスタンスの最大数をご覧ください。

Cloud Run がコンテナ インスタンスを自動スケーリングする方法については、インスタンスの自動スケーリングをご覧ください。

サービスレベルとリビジョン レベルで最大インスタンス数を適用する

最大インスタンス数は、サービス レベルまたはリビジョン レベルで構成できます。 リビジョン レベルでインスタンスを制限する必要がある場合を除き、サービスレベルの最大インスタンス数を使用してサービスのインスタンス数を上限にすることをおすすめします。 デフォルトでは、Cloud Run はリビジョンごとに 100 個のインスタンスを設定します。 サービスをより多くのインスタンスにスケーリングできるようにするには、この値を変更します。

最大インスタンス数を適用すると、設定は次のように有効になります。

  • サービスレベル: すぐに
  • リビジョン レベル: リビジョンのデプロイ時

タグ付きリビジョンとサービスレベルの最大インスタンス数

タグ付きリビジョンが開始されても、サービスレベルの最大インスタンス数にカウントされるのは、トラフィック分割の一部である場合のみです。

必要なロール

Cloud Run サービスの構成とデプロイに必要な権限を取得するには、次の IAM ロールを付与するよう管理者に依頼してください。

ソースコードからサービス または関数をデプロイする場合は、プロジェクトと Cloud Build サービス アカウントで追加のロールが付与されている必要があります。

Cloud Run に関連付けられている IAM ロールと権限のリストについては、Cloud Run IAM ロールCloud Run IAM 権限をご覧ください。Cloud Run サービスがGoogle Cloud APIs(Cloud クライアント ライブラリなど)と連携している場合は、サービス ID の構成ガイドをご覧ください。ロールの付与の詳細については、 デプロイ権限アクセスの管理をご覧ください。

費用に関する考慮事項

最大インスタンス数の設定を使用すると、費用を管理するための費用の安全上限を設定できます。最大数を大きく設定すると可用性が優先されますが、予期しないトラフィックの急増や構成ミスにより、課金のリスクが生じる可能性があります。費用の安全対策として、サービスを最初にデプロイするときに、サービスレベルでこの設定を構成します。予期しない急増から予算を保護するため、最大インスタンス数の値を 3 から始めることをおすすめします。

詳細については、Cloud Run の料金を確認するか、 料金計算ツールで費用を見積もります 。その他の費用管理ツールについては、リソース割り当ての割り当て または課金予算とアラートをご覧ください。

サービスレベルの最大インスタンス数を構成する

新しいサービスを作成するとき、または新しいリビジョンをデプロイするときに、 Google Cloud コンソール、Google Cloud CLI、YAML、または Terraform を使用して最大インスタンス数の設定を変更できます。

コンソール

  1. Google Cloud コンソールで、Cloud Run の [サービス] ページに移動します。

    Cloud Run に移動

  2. 新しいサービスを構成する場合は、[コンテナをデプロイ] をクリックして [サービスの作成] フォームを表示します。[サービスのスケーリング] フォームを見つけます。

  3. 既存のサービスを構成する場合は、サービスをクリックして詳細パネルを表示し、詳細パネルの右上にある [ サービスレベルのスケーリング設定を編集] をクリックします。

  4. [**インスタンスの最大数**] フィールドで、必要なコンテナ インスタンスの最大数を指定します。 サービスで可能な上限までの 任意の整数値を使用します。1サービスレベルの上限を削除するには、設定した値を削除します。これにより、設定がデフォルトに戻ります。

  5. 新しいサービスの場合は [作成]、既存のサービスの場合は [デプロイ] をクリックします。

gcloud

次のコマンドを使用して、特定のサービスのインスタンスの最大数を更新できます。

gcloud run services update SERVICE --max MAX-VALUE

次のように置き換えます。

  • SERVICE: サービスの名前。
  • MAX-VALUE: 必要なコンテナ インスタンスの最大数。1 からサービスで可能な上限までの任意の整数値を使用します。サービスレベルの上限を削除するには、設定した値を削除します。 これにより、設定がデフォルトに戻ります。

デプロイ中に、次のコマンドを使用してインスタンスの最大数を設定することもできます。

gcloud run deploy --image IMAGE_URL --max MAX-VALUE

次のように置き換えます。

  • IMAGE_URL: コンテナ イメージへの参照(us-docker.pkg.dev/cloudrun/container/hello:latest など)。Artifact Registry を使用する場合は、リポジトリ REPO_NAME がすでに作成されている必要があります。URL は LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG の形式です。
  • MAX-VALUE: 必要なコンテナ インスタンスの最大数。1 から上限までの任意の整数値を使用します。

YAML

構成を変更すると、新しいリビジョンが作成されます。明示的に更新しない限り、以降のリビジョンでも、この構成が自動的に設定されます。

  1. 新しいサービスを作成する場合は、この手順をスキップします。既存のサービスを更新する場合は、その YAML 構成をダウンロードします。

    gcloud run services describe SERVICE --format export > service.yaml
  2. run.googleapis.com/maxScale: 属性を更新します。

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
      annotations:
        run.googleapis.com/maxScale: 'MAX-INSTANCE'

    次のように置き換えます。

    • SERVICE: Cloud Run サービスの名前
    • MAX-INSTANCE: 必要なコンテナ インスタンスの最大数。1 からサービスで可能な上限までの任意の整数値を使用します。サービスレベルの上限を削除するには、設定した値を削除します。これにより、設定がデフォルトに戻ります。
  3. 次のコマンドを使用して、サービスを作成または更新します。

    gcloud run services replace service.yaml

    gcloud run services replace コマンドは、存在する場合はデフォルトで service.yaml ファイルを使用します。

Terraform

Terraform 構成を適用または削除する方法については、基本的な Terraform コマンドをご覧ください。

Terraform 構成の google_cloud_run_v2_service リソースに次の内容を追加します:
resource "google_cloud_run_v2_service" "default" {
name     = "SERVICE"
location = "REGION"

scaling {
  max_instance_count = MAX_INSTANCE
}

template {
  containers {
    image = "IMAGE_URL"
  }
}
}

次のように置き換えます。

  • SERVICE: Cloud Run サービスの名前。
  • REGION: Google Cloud リージョン(例: europe-west1)。
  • MAX_INSTANCE: 必要なコンテナ インスタンスの最大数。1 から上限までの任意の整数値を使用します。
  • IMAGE_URL: コンテナ イメージへの参照(us-docker.pkg.dev/cloudrun/container/hello:latest など)。Artifact Registry を使用する場合は、リポジトリ REPO_NAME がすでに作成されている必要があります。URL は LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG の形式です。

サービスレベルの最大インスタンス数を表示する

Cloud Run サービスの現在のサービスレベルの最大インスタンス数の設定を表示するには:

コンソール

  1. Google Cloud コンソールで、Cloud Run の [サービス] ページに移動します。

    Cloud Run に移動

  2. そのサービスをクリックして、[サービスの詳細] パネルを開きます。

  3. 現在の設定は、[サービスの詳細] パネルの右上、[スケーリング] の横に表示されます。

gcloud

  1. 次のコマンドを使用します。

    gcloud run services describe SERVICE
  2. 返された構成で、[スケーリング: 自動(最小: MIN_VALUE、最大: MAX_VALUE] の値を見つけます。

リビジョン レベルの最大インスタンス数を構成する

構成を変更すると、新しいリビジョンが作成されます。明示的に更新しない限り、以降のリビジョンでも、この構成が自動的に適用されます。

デフォルトでは、Cloud Run リビジョンは最大 100 個のインスタンスにスケールアップするように構成されています。

新しいサービスを作成するとき、または新しいリビジョンをデプロイするときに、 Google Cloud コンソール、Google Cloud CLI、または YAML ファイルを使用して、最大インスタンス数の設定を変更できます。

コンソール

  1. Google Cloud コンソールで Cloud Run に移動します。

    Cloud Run に移動

  2. Cloud Run ナビゲーション メニューから [サービス] を選択し、[コンテナをデプロイ] をクリックして新しいサービスを構成します。既存のサービスを構成する場合は、サービスをクリックし、[新しいリビジョンの編集とデプロイ] をクリックします。

  3. 新しいサービスを構成する場合は、最初のサービス設定のページに入力してから、[コンテナ、ネットワーキング、セキュリティ] をクリックしてサービス構成ページを開きます。

  4. [コンテナ] タブをクリックします。

gcloud

次のコマンドを使用して、特定のサービスのインスタンスの最大数を更新できます。

gcloud run services update SERVICE --max-instances MAX-VALUE

次のように置き換えます。

  • SERVICE: サービスの名前。
  • MAX-VALUE: 必要なコンテナ インスタンスの最大数。1 から上限までの任意の整数値を使用します。

YAML

  1. 新しいサービスを作成する場合は、この手順をスキップします。既存のサービスを更新する場合は、その YAML 構成をダウンロードします。

    gcloud run services describe SERVICE --format export > service.yaml
  2. autoscaling.knative.dev/maxScale: 属性を更新します。

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        metadata:
          annotations:
            autoscaling.knative.dev/maxScale: 'MAX-INSTANCE'
          name: REVISION

    次のように置き換えます。

    • SERVICE: Cloud Run サービスの名前。
    • MAX-INSTANCE: 必要なコンテナ インスタンスの最大数。1 から 上限までの任意の整数値を使用します。
    • REVISION: 新しいリビジョン名を入力するか、削除します(存在する場合)。新しいリビジョン名を指定する場合は、次の条件を満たす必要があります
      • SERVICE- で始まる
      • 小文字、数字、- のみが使用されている
      • 末尾が - ではない
      • 63 文字以内である
  3. 次のコマンドを使用して、サービスを作成または更新します。

    gcloud run services replace service.yaml

    gcloud run services replace コマンドは、存在する場合はデフォルトで service.yaml ファイルを使用します。

リビジョン レベルの最大インスタンス数の設定を表示する

Cloud Run サービスの現在のリビジョン レベルの最大インスタンス数の設定を表示するには:

コンソール

  1. Google Cloud コンソールで、Cloud Run の [サービス] ページに移動します。

    Cloud Run に移動

  2. そのサービスをクリックして、[サービスの詳細] パネルを開きます。

  3. [リビジョン] タブをクリックします。

  4. 右側の詳細パネルで、[コンテナ] タブに表示されている [リビジョンの最大インスタンス数] の設定を確認します。

gcloud

  1. 次のコマンドを使用します。

    gcloud run services describe SERVICE
  2. 返された構成で、[最大インスタンス数:] の値を見つけます。

サービスレベルとリビジョン レベルの両方の最小インスタンス数または最大インスタンス数を使用する

次の表は、サービスレベルの最大インスタンス数と、リビジョン レベルの最小インスタンス数または最大インスタンス数を組み合わせた場合の動作を示しています。

サービスレベルの設定 リビジョン レベルの設定 動作
サービスレベルの最大インスタンス数を設定 リビジョン レベルの最大インスタンス数を設定 有効な最大インスタンス数の上限は、リビジョン レベルの最大インスタンス数とサービスレベルの最大インスタンス数のうち小さい方の値です。
サービスレベルの最大インスタンス数を設定 リビジョン レベルの最小インスタンス数を設定 サービスレベルの最大インスタンス数がリビジョン レベルの最小インスタンス数より小さい値に設定されている場合、リビジョンはサービスレベルの最大インスタンス数までインスタンスを起動し、構成されたリビジョン レベルの最小インスタンス数には達しません。

トラフィック分割でサービスレベルの最大インスタンス数を使用する

トラフィック分割を使用する場合、サービスレベルの最大インスタンス数は、トラフィック分割の比率に基づいてリビジョン間で分散されます。たとえば、サービスレベルの最大インスタンス数が 100 の場合、50 対 50 のトラフィック分割により、各リビジョンにサービスレベルの最大インスタンス数 50 が割り当てられます。次の表に、構成シナリオの例を示します。

構成例 結果の動作
サービスレベルの最大インスタンス数を設定(リビジョン レベルの設定がないシナリオ): 100
  • リビジョン A のトラフィック分割: 10%
  • リビジョン B のトラフィック分割: 10%
  • リビジョン C のトラフィック分割 : 80%
サービスレベルの最大インスタンス数の一部が各リビジョンに割り当てられます。各リビジョンの有効な最大インスタンス数は、トラフィック分割に基づいて固定されます。リビジョン A の最大インスタンス数は 10、リビジョン B は 10、リビジョン C は 80 です。