Cloud Run で稼働中のサービスについて一時的にリソース不足(アクセススパイク状態の対応)の発生が予測される場合について、サービスを停止することなく調整することが可能か調べてみました。
スケーリング変更の影響
インスタンスの最小数/最大数(min_instances や max_instances) のみ変更
- 既存のリクエスト処理には影響せず、スケール設定のみが変更
- サービスは止まらず、新しいスケールルールが適用
cpu や memory の変更
- 新しいリビジョン(バージョン)がデプロイ(そのためサービス停止)
- デプロイの瞬間には新リビジョンへの切り替えが発生
サービス
サービスが停止するケース
- インスタンスの最小数(min_instances: 0) の状態で、しばらくアクセスがない場合、全てのインスタンスがシャットダウンされ、次のリクエストでコールドスタートが発生する。
- cpu や memory の変更時
- コードの更新時
サービスが継続するケース
- インスタンスの最小数/最大数(min_instances や max_instances) のみ変更
スケール設定のみ変更する場合の具体的な設定手順
gcloud コマンドを使用する場合
スケール設定は [gcloud run services update] コマンドで変更できます。
gcloud run services update [my-service] --min-instances=1 --max-instances=10 --region=[asia-northeast1]
Google Cloud コンソールで設定する場合
- Google Cloud Consoleにアクセス
- 対象のサービスを選択
- 「編集とデプロイ」ボタンをクリック
- 「スケーリング」セクションを展開
- 「最小インスタンス数」 → 0(デフォルト)または 1 以上を設定
- 「最大インスタンス数」 → 1 以上の適切な値を設定
- 「デプロイ」ボタンを押して適用