このページでは、デフォルトの Cloud Run 自動スケーリングの動作を使用して、Cloud Run サービスで使用できるインスタンスの最大数を設定する方法について説明します。サービスを手動でスケーリングするには、手動スケーリングをご覧ください。
Cloud Run で最大インスタンス数を指定すると、受信リクエストに応じたサービスのスケーリングを制限できます。ただし、トラフィックの急増などの要因により、短時間この最大数の設定を超過する場合があります。
この設定を使用して、コストの制御や、データベースなどのバッキング サービスへの接続数を制限できます。
サービスに適用される最大インスタンスの上限については、インスタンスの最大数をご覧ください。
Cloud Run がコンテナ インスタンスを自動スケーリングする方法については、インスタンスの自動スケーリングをご覧ください。
サービスレベルとリビジョン レベルで最大インスタンス数を適用する
最大インスタンス数は、サービスレベルまたはリビジョン レベルで構成できます。特にリビジョン レベルでインスタンスを制限する必要がある場合を除き、サービスレベルの最大インスタンス数を使用することをおすすめします。
最大インスタンス数を適用すると、設定は次のように有効になります。
- サービスレベル: すぐに
- リビジョン レベル: リビジョンのデプロイ時
タグ付きリビジョンとサービスレベルの最大インスタンス数
タグ付きリビジョンが開始されても、サービスレベルの最大インスタンス数にカウントされるのは、トラフィック分割の一部である場合のみです。
必要なロール
Cloud Run サービスの構成とデプロイに必要な権限を取得するには、次の IAM ロールを付与するよう管理者に依頼してください。
-
Cloud Run サービスに対する Cloud Run デベロッパー(
roles/run.developer
) -
サービス ID に対するサービス アカウント ユーザー(
roles/iam.serviceAccountUser
)
ソースコードからサービスまたは関数をデプロイする場合は、プロジェクトと Cloud Build サービス アカウントに追加のロールが付与されている必要があります。
Cloud Run に関連付けられている IAM ロールと権限のリストについては、Cloud Run IAM ロールと Cloud Run IAM 権限をご覧ください。Cloud Run サービスがGoogle Cloud APIs(Cloud クライアント ライブラリなど)と連携している場合は、サービス ID の構成ガイドをご覧ください。ロールの付与の詳細については、デプロイ権限とアクセス権の管理をご覧ください。
サービスレベルの最大インスタンス数を構成する
新しいサービスを作成するとき、または新しいリビジョンをデプロイするときに、 Google Cloud コンソール、Google Cloud CLI、または YAML ファイルを使用して、最大インスタンス数の設定を変更できます。
コンソール
Google Cloud コンソールで Cloud Run に移動します。
新しいサービスを構成する場合は、[サービス] を選択し、[コンテナのデプロイ] をクリックして [サービスの作成] フォームを表示します。[サービスのスケーリング] フォームを見つけます。
既存のサービスを構成する場合は、サービスをクリックして詳細パネルを表示し、詳細パネルの右上にある [
サービスレベルのスケーリング設定を編集] をクリックします。[インスタンスの最大数] フィールドで、必要なコンテナ インスタンスの最大数を指定します。
1
からサービスで可能な上限までの任意の整数値を使用します。新しいサービスの場合は [作成]、既存のサービスの場合は [デプロイ] をクリックします。
gcloud
次のコマンドを使用して、特定のサービスのインスタンスの最大数を更新できます。
gcloud beta run services update SERVICE --max MAX-VALUE
次のように置き換えます。
- SERVICE: サービスの名前。
- MAX-VALUE: 必要なコンテナ インスタンスの最大数。
1
からサービスで可能な上限までの任意の整数値を使用します。
デプロイ中に、次のコマンドを使用してインスタンスの最大数を設定することもできます。
gcloud beta run deploy --image IMAGE_URL --max MAX-VALUE
次のように置き換えます。
YAML
構成を変更すると、新しいリビジョンが作成されます。明示的に更新しない限り、以降のリビジョンでも、この構成が自動的に設定されます。
新しいサービスを作成する場合は、この手順をスキップします。既存のサービスを更新する場合は、その YAML 構成をダウンロードします。
gcloud run services describe SERVICE --format export > service.yaml
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
からサービスで可能な上限までの任意の整数値を使用します。
次のコマンドを使用して、サービスを作成または更新します。
gcloud run services replace service.yaml
サービスレベルの最大インスタンス数を表示する
Cloud Run サービスの現在のサービスレベルの最大インスタンス数の設定を表示するには:
コンソール
Google Cloud コンソールで Cloud Run に移動します。
そのサービスをクリックして、[サービスの詳細] パネルを開きます。
現在の設定は、[サービスの詳細] パネルの右上、[スケーリング] の横に表示されます。
gcloud
次のコマンドを使用します。
gcloud run services describe SERVICE
返された構成で、[スケーリング: 自動(最小: MIN_VALUE、最大: MAX_VALUE)] の値を見つけます。
リビジョン レベルの最大インスタンス数を構成する
構成を変更すると、新しいリビジョンが作成されます。明示的に更新しない限り、以降のリビジョンでも、この構成が自動的に適用されます。
デフォルトでは、Cloud Run リビジョンは最大 100 個のインスタンスにスケールアップするように構成されています。
新しいサービスを作成するとき、または新しいリビジョンをデプロイするときに、 Google Cloud コンソール、Google Cloud CLI、または YAML ファイルを使用して、最大インスタンス数の設定を変更できます。
コンソール
Google Cloud コンソールで Cloud Run に移動します。
サービスリストで更新するサービスを見つけてクリックし、そのサービスの詳細を開きます。
[新しいリビジョンの編集とデプロイ] をクリックして、リビジョンのデプロイ フォームを表示します。
[コンテナ] タブをクリックします。
[リビジョン スケーリング] セクションを見つけます。[インスタンスの最大数] フィールドで、コンテナ インスタンスの最大数を指定します。
[デプロイ] をクリックします。
gcloud
次のコマンドを使用して、特定のサービスのインスタンスの最大数を更新できます。
gcloud beta run services update SERVICE --max-instances MAX-VALUE
次のように置き換えます。
- SERVICE: サービスの名前。
- MAX-VALUE: 必要なコンテナ インスタンスの最大数。
1
から上限までの任意の整数値を使用します。
YAML
新しいサービスを作成する場合は、この手順をスキップします。既存のサービスを更新する場合は、その YAML 構成をダウンロードします。
gcloud run services describe SERVICE --format export > service.yaml
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 文字以内である
次のコマンドを使用して、サービスを作成または更新します。
gcloud run services replace service.yaml
リビジョン レベルの最大インスタンス数の設定を表示する
Cloud Run サービスの現在のリビジョン レベルの最大インスタンス数の設定を表示するには:
コンソール
Google Cloud コンソールで Cloud Run に移動します。
そのサービスをクリックして、[サービスの詳細] パネルを開きます。
[リビジョン] タブをクリックします。
右側の詳細パネルで、[コンテナ] タブに表示されている [リビジョンの最大インスタンス数] の設定を確認します。
gcloud
次のコマンドを使用します。
gcloud run services describe SERVICE
返された構成で、[最大インスタンス数:] の値を見つけます。
サービスレベルとリビジョン レベルの両方の最小インスタンス数または最大インスタンス数を使用する
次の表は、サービスレベルの最大インスタンス数と、リビジョン レベルの最小インスタンス数または最大インスタンス数を組み合わせた場合の動作を示しています。
サービスレベルの設定 | リビジョン レベルの設定 | 動作 |
---|---|---|
サービスレベルの最大インスタンス数を設定 | リビジョン レベルの最大インスタンス数を設定 | 有効な最大インスタンス数の上限は、リビジョン レベルの最大インスタンス数とサービスレベルの最大インスタンス数のうち小さい方の値です。 |
サービスレベルの最大インスタンス数を設定 | リビジョン レベルの最小インスタンス数を設定 | サービスレベルの最大インスタンス数がリビジョン レベルの最小インスタンス数より小さい値に設定されている場合、リビジョンはサービスレベルの最大インスタンス数までインスタンスを起動し、構成されたリビジョン レベルの最小インスタンス数には達しません。 |
トラフィック分割でサービスレベルの最大インスタンス数を使用する
トラフィック分割を使用する場合、サービスレベルの最大インスタンス数は、トラフィック分割の比率に基づいてリビジョン間で分散されます。たとえば、サービスレベルの最大インスタンス数が 100 の場合、50 対 50 のトラフィック分割により、各リビジョンにサービスレベルの最大インスタンス数 50 が割り当てられます。次の表に、構成シナリオの例を示します。
構成例 | 結果の動作 |
---|---|
サービスレベルの最大インスタンス数を設定(リビジョン レベルの設定がないシナリオ): 100
|
サービスレベルの最大インスタンス数の一部が各リビジョンに割り当てられます。各リビジョンの有効な最大インスタンス数は、トラフィック分割に基づいて固定されます。リビジョン A の最大インスタンス数は 10、リビジョン B は 10、リビジョン C は 80 です。 |