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

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

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

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

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

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

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

最大インスタンス数は、サービスレベルまたはリビジョン レベルで構成できます。特にリビジョン レベルでインスタンスを制限する必要がある場合を除き、サービスレベルの最大インスタンス数を使用することをおすすめします。

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

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

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

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

必要なロール

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

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

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

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

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

コンソール

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

    Cloud Run に移動

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

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

  4. [インスタンスの最大数] フィールドで、必要なコンテナ インスタンスの最大数を指定します。1 からサービスで可能な上限までの任意の整数値を使用します。

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

gcloud

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

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

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

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

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

gcloud beta 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/launch-stage: BETA
        run.googleapis.com/maxScale: 'MAX-INSTANCE'

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

    • SERVICE: Cloud Run サービスの名前。
    • MAX-INSTANCE: 必要なコンテナ インスタンスの最大数。1 からサービスで可能な上限までの任意の整数値を使用します。
  3. 次のコマンドを使用して、サービスを作成または更新します。

    gcloud run services replace service.yaml

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

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. サービスリストで更新するサービスを見つけてクリックし、そのサービスの詳細を開きます。

  3. [新しいリビジョンの編集とデプロイ] をクリックして、リビジョンのデプロイ フォームを表示します。

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

  5. [リビジョン スケーリング] セクションを見つけます。[インスタンスの最大数] フィールドで、コンテナ インスタンスの最大数を指定します。

  6. [デプロイ] をクリックします。

gcloud

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

gcloud beta 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
      annotations:
        run.googleapis.com/launch-stage: BETA
    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

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

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 です。