このページでは、デフォルトの Cloud Run 自動スケーリングの動作を使用して、Cloud Run サービスで使用できるインスタンスの最大数を設定する方法について説明します。サービスを手動でスケーリングするには、手動スケーリングをご覧ください。
Cloud Run で最大インスタンス数を指定すると、受信リクエストに応じたサービスのスケーリングを制限できます。ただし、トラフィックの急増などの要因により、短時間この最大数の設定を超過する場合があります。
この設定を使用して、コストの制御や、データベースなどのバッキング サービスへの接続数を制限できます。
サービスに適用される最大インスタンスの上限については、インスタンスの最大数をご覧ください。
Cloud Run がコンテナ インスタンスを自動スケーリングする方法については、インスタンスの自動スケーリングをご覧ください。
サービスレベルとリビジョン レベルで最大インスタンス数を適用する
最大インスタンス数は、サービスレベルまたはリビジョン レベルで構成できます。Google は、リビジョンレベルでインスタンス数を制限する特別な必要がない限り、サービスレベルの最大インスタンス数を使用してサービスのインスタンス数を制限することを推奨しています。 デフォルトでは、Cloud Run は各リビジョンに対して 100 個のインスタンスを設定します。 サービスをより多くのインスタンスに拡張できるようにするには、この値を変更してください。
最大インスタンス数を適用すると、設定は次のように有効になります。
- サービスレベル: すぐに
- リビジョン レベル: リビジョンのデプロイ時
タグ付きリビジョンとサービスレベルの最大インスタンス数
タグ付きリビジョンが開始されても、サービスレベルの最大インスタンス数にカウントされるのは、トラフィック分割の一部である場合のみです。
必要なロール
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 サービスがCloud de Confiance APIs(Cloud クライアント ライブラリなど)と連携している場合は、サービス ID の構成ガイドをご覧ください。ロールの付与の詳細については、デプロイ権限とアクセスの管理をご覧ください。
サービスレベルの最大インスタンス数を構成する
新しいサービスを作成するとき、または新しいリビジョンをデプロイするときに、 Cloud de Confiance コンソール、Google Cloud CLI、YAML、または Terraform を使用して最大インスタンス数の設定を変更できます。
コンソール
Cloud de Confiance by S3NS コンソールで、Cloud Run の [サービス] ページに移動します。
新しいサービスを構成する場合は、[コンテナをデプロイ] をクリックして [サービスの作成] フォームを表示します。[サービスのスケーリング] フォームを見つけます。
既存のサービスを構成する場合は、サービスをクリックして詳細パネルを表示し、[スケーリング] タブをクリックします。
[サービス スケーリング] で、[インスタンスの最大数] フィールドを見つけて、必要なコンテナ インスタンスの最大数を指定します。
1からサービスで可能な上限までの任意の整数値を使用します。サービスレベルの上限を削除するには、設定した値を削除します。これにより、設定がデフォルトに戻ります。新しいサービスの場合は [作成] をクリックします。既存のサービスの場合は、[差分を表示して再デプロイ]、[変更をデプロイ] の順にクリックします。
gcloud
次のコマンドを使用して、特定のサービスのインスタンスの最大数を更新できます。
gcloud run services update SERVICE --max MAX-VALUE
次のように置き換えます。
- SERVICE: サービスの名前。
- MAX-VALUE: 必要なコンテナ インスタンスの最大数。
1からサービスで可能な上限までの任意の整数値を使用します。サービスレベルの上限を削除するには、設定した値を削除します。これにより、設定がデフォルトに戻ります。
デプロイ中に、次のコマンドを使用してインスタンスの最大数を設定することもできます。
gcloud 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/maxScale: 'MAX-INSTANCE'
次のように置き換えます。
- SERVICE: Cloud Run サービスの名前
- MAX-INSTANCE: 必要なコンテナ インスタンスの最大数。
1からサービスで可能な上限までの任意の整数値を使用します。サービスレベルの上限を削除するには、設定した値を削除します。これにより、設定がデフォルトに戻ります。
次のコマンドを使用して、サービスを作成または更新します。
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: Cloud de Confiance リージョン(例:
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 サービスの現在のサービスレベルの最大インスタンス数の設定を表示するには:
コンソール
Cloud de Confiance by S3NS コンソールで、Cloud Run の [サービス] ページに移動します。
そのサービスをクリックして、[サービスの詳細] パネルを開きます。
[スケーリング] タブをクリックして、現在の設定を表示します。
gcloud
次のコマンドを使用します。
gcloud run services describe SERVICE
返された構成で、[スケーリング: 自動(最小: MIN_VALUE、最大: MAX_VALUE)] の値を見つけます。
リビジョン レベルの最大インスタンス数を構成する
構成を変更すると、新しいリビジョンが作成されます。明示的に更新しない限り、以降のリビジョンでも、この構成が自動的に適用されます。
デフォルトでは、Cloud Run リビジョンは最大 100 個のインスタンスにスケールアップするように構成されています。
リビジョンレベルのスケーリングは、以前にこの機能が設定されていたサービスでのみ利用可能です。
コンソール
Cloud de Confiance by S3NS コンソールで Cloud Run に移動します。
Cloud Run ナビゲーション メニューから [サービス] を選択し、[コンテナをデプロイ] をクリックして新しいサービスを構成します。既存のサービスを構成する場合は、サービスをクリックします。
新しいサービスを構成する場合は、最初のサービス設定のページに入力してから、[コンテナ、ネットワーキング、セキュリティ] をクリックしてサービス構成ページを開きます。
既存のサービスを構成する場合は、[スケーリング] タブをクリックします。
Revision scaling セクションで、Maximum number of instances フィールドにコンテナインスタンスの最大数を指定します。
新しいサービスの場合は [作成] をクリックします。既存のサービスの場合は、[差分を表示して再デプロイ]、[変更をデプロイ] の順にクリックします。
gcloud
次のコマンドを使用して、特定のサービスのインスタンスの最大数を更新できます。
gcloud 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 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
gcloud run services replaceコマンドは、service.yamlファイルが存在する場合はデフォルトでそのファイルを使用します。
リビジョン レベルの最大インスタンス数の設定を表示する
リビジョンレベルのスケーリングは、以前にこの機能が設定されていたサービスでのみ利用可能です。
Cloud Run サービスの現在のリビジョン レベルの最大インスタンス数の設定を表示するには:
コンソール
Cloud de Confiance by S3NS コンソールで、Cloud Run の [サービス] ページに移動します。
そのサービスをクリックして、[サービスの詳細] パネルを開きます。
[スケーリング] タブをクリックします。
[リビジョン スケーリング] で、[インスタンスの最大数] を確認します。
gcloud
次のコマンドを使用します。
gcloud run services describe SERVICE
返された構成で、[最大インスタンス数:] の値を見つけます。
サービスレベルとリビジョン レベルの両方の最小インスタンス数または最大インスタンス数を使用する
次の表は、サービスレベルの最大インスタンス数と、リビジョン レベルの最小インスタンス数または最大インスタンス数を組み合わせた場合の動作を示しています。
| サービスレベルの設定 | リビジョン レベルの設定 | 動作 |
|---|---|---|
| サービスレベルの最大インスタンス数を設定 | リビジョン レベルの最大インスタンス数を設定 | 有効な最大インスタンス数の上限は、リビジョン レベルの最大インスタンス数とサービスレベルの最大インスタンス数のうち小さい方の値です。 |
| サービスレベルの最大インスタンス数を設定 | リビジョン レベルの最小インスタンス数を設定 | サービスレベルの最大インスタンス数がリビジョン レベルの最小インスタンス数より小さい値に設定されている場合、リビジョンはサービスレベルの最大インスタンス数までインスタンスを起動し、構成されたリビジョン レベルの最小インスタンス数には達しません。 |
トラフィック分割でサービスレベルの最大インスタンス数を使用する
トラフィック分割を使用する場合、サービスレベルの最大インスタンス数は、トラフィック分割の比率に基づいてリビジョン間で分散されます。たとえば、サービスレベルの最大インスタンス数が 100 の場合、50 対 50 のトラフィック分割により、各リビジョンにサービスレベルの最大インスタンス数 50 が割り当てられます。次の表に、構成シナリオの例を示します。
| 構成例 | 結果の動作 |
|---|---|
サービスレベルの最大インスタンス数を設定(リビジョン レベルの設定がないシナリオ): 100
|
サービスレベルの最大インスタンス数の一部が各リビジョンに割り当てられます。各リビジョンの有効な最大インスタンス数は、トラフィック分割に基づいて固定されます。リビジョン A の最大インスタンス数は 10、リビジョン B は 10、リビジョン C は 80 です。 |