Halaman ini menjelaskan cara mengaktifkan instance yang tidak ada aktivitas untuk layanan dengan mengonfigurasi instance minimum menggunakan perilaku penskalaan otomatis Cloud Run default. Untuk melakukan penskalaan layanan secara manual, lihat penskalaan manual.
Jika Anda memerlukan kontrol lebih atas perilaku penskalaan otomatis layanan Anda, Anda dapat menetapkan jumlah minimum instance untuk menghindari waktu mulai kontainer yang lambat dan mengurangi latensi layanan. Untuk layanan Cloud Run, Cloud Run, secara default, menskalakan ke dalam jumlah instance berdasarkan jumlah permintaan yang masuk.
Namun, jika layanan Anda membutuhkan latensi yang lebih rendah, terutama saat melakukan penskalaan dari nol instance aktif, Anda dapat mengubah perilaku default ini dengan menentukan jumlah minimum instance kontainer yang harus tetap aktif dan siap melayani permintaan. Lihat Tips pengembangan umum untuk detail selengkapnya tentang pengoptimalan ini.
Cloud Run menghapus instance yang tidak memproses permintaan (idle).
Dengan menetapkan instance minimum, Cloud Run mempertahankan setidaknya jumlah instance minimum yang berjalan, meskipun instance tersebut tidak memproses permintaan. Instance aktif di atas jumlah min-instances mungkin menjadi tidak ada aktivitas, jika instance tersebut tidak menerima permintaan.
Misalnya, jika min-instances adalah 10, dan jumlah instance aktif adalah
0, jumlah instance yang tidak ada aktivitas adalah 10. Jika jumlah instance aktif meningkat menjadi 6, jumlah instance tidak aktif akan menurun menjadi 4.
Perhatikan bahwa jika suatu layanan belum menayangkan traffic baru-baru ini, metrik instance aktif dapat menunjukkan bahwa tidak ada instance yang aktif, meskipun Anda menentukan satu atau beberapa instance untuk instance minimum.
Instance minimum dapat dimulai ulang kapan saja.
Praktik terbaik untuk ketersediaan tinggi
Untuk memastikan layanan Anda tetap memiliki ketersediaan tinggi, pertimbangkan untuk mengonfigurasi setidaknya 3 instance minimum.
Batasan instance minimum
Jumlah instance minimum adalah target upaya terbaik untuk menjaga agar instance tetap aktif dan siap digunakan. Anda mungkin mengalami penurunan sementara di bawah instance minimum yang dikonfigurasi karena risiko berikut yang tidak dimitigasi, meskipun Anda mengonfigurasi 3 instance atau lebih:
- Kapasitas zona atau region: Jika terjadi kekurangan kapasitas yang parah di zona atau region, sistem mungkin tidak dapat memulai atau menjalankan instance.
- Penyeimbangan ulang infrastruktur: Terkadang, infrastruktur yang mendasarinya diseimbangkan ulang, yang dapat menyebabkan penundaan sementara untuk mengaktifkan instance pengganti. Anda dapat mempelajari lebih lanjut cara instance dihentikan dalam dokumentasi penonaktifan instance.
- Aplikasi error: Jika container Anda error saat startup atau terus gagal dalam health check, sistem akan terus mencoba memulai instance untuk memenuhi minimum, tetapi jumlah instance yang responsif dan siap melayani tetap di bawah batas minimum yang dikonfigurasi.
- Batas kuota dan penagihan: Jika project Anda mencapai batas kuota CPU atau memori, atau jika penagihan dinonaktifkan, platform akan menghentikan penskalaan dan dapat menghentikan instance terlepas dari setelan instance minimum Anda.
Penagihan
Instance yang terus berjalan menggunakan fitur instance minimum memang dikenai biaya penagihan.
Diagram berikut menunjukkan cara kerja penagihan selama siklus proses instance saat Anda mengonfigurasi instance minimum untuk layanan atau revisi:
Bergantung pada setelan penagihan yang dikonfigurasi, layanan ditagih sebagai berikut:
- Untuk penagihan berbasis permintaan, Anda akan ditagih dengan tarif yang lebih rendah saat instance tidak ada aktivitas dan menunggu untuk memproses permintaan. Jika min instances diatur ke
0, Anda tidak akan ditagih saat instance tidak aktif. - Untuk penagihan berbasis instance, Anda akan ditagih tarif default untuk seluruh
siklus proses instance. Waktu dari memulai dan menghentikan mencakup saat instance memproses permintaan atau tidak ada aktivitas. Dengan kata lain, meskipun min
instances ditetapkan ke
0, Anda tetap ditagih tarif default. Opsi ini berfungsi dengan baik jika Anda memerlukan CPU di luar permintaan. Jika min instances ditetapkan ke0, Anda akan ditagih tarif default.
Menerapkan instance minimum di tingkat layanan versus tingkat revisi
Anda dapat mengonfigurasi instance minimum di tingkat layanan atau di tingkat revisi. Google merekomendasikan agar Anda menerapkan instance minimum pada tingkat layanan dan menghindari penggabungan instance minimum tingkat layanan dan tingkat revisi. Pelajari lebih lanjut perilaku saat Anda mengonfigurasi setelan penskalaan tingkat layanan dan tingkat revisi.
Jika Anda menerapkan jumlah instance minimum pada tingkat revisi, pengaturan tersebut akan berlaku setelah revisi tersebut diterapkan. Jika Anda menerapkan fitur ini di tingkat layanan, setelan akan berlaku tanpa perlu men-deploy revisi baru.
Revisi dan instance minimum
Jika instance minimum ditetapkan di tingkat layanan, permintaan yang masuk akan didistribusikan ke semua revisi yang menayangkan traffic secara proporsional dengan pembagian traffic.
Ketika jumlah minimum instance ditetapkan pada level revisi, jumlah minimum instance akan dimulai setiap kali revisi tersebut dirujuk dalam pembagian lalu lintas atau memiliki tag lalu lintas yang ditetapkan. Ini berarti bahwa instance tersebut ditagih saat memproses permintaan dan juga saat menunggu permintaan masuk.
Revisi yang diberi tag dan instance minimum tingkat layanan
Jika revisi dengan tag yang ditetapkan dimulai, instance dihitung ke instance minimum tingkat layanan jika merupakan bagian dari pembagian traffic.
Perutean permintaan dengan instance minimum
Saat Anda menetapkan jumlah minimum instance, Cloud Run akan mendistribusikan permintaan yang masuk secara merata ke seluruh instance yang telah disediakan. Memahami perilaku ini penting untuk mengelola biaya, terutama dengan penagihan berbasis permintaan atau jika Anda bermaksud untuk mempertahankan instance hot spare yang menganggur. Untuk meminimalkan biaya, tetapkan jumlah instance minimum ke jumlah instance yang diperlukan untuk melayani traffic umum Anda.
Peran yang diperlukan
Untuk mendapatkan izin yang diperlukan untuk mengonfigurasi dan men-deploy layanan Cloud Run, minta administrator untuk memberi Anda peran IAM berikut:
- Developer Cloud Run (
roles/run.developer) di layanan Cloud Run - Pengguna Akun Layanan (
roles/iam.serviceAccountUser) pada identitas layanan
Jika Anda men-deploy layanan atau fungsi dari kode sumber, Anda juga harus memiliki peran tambahan yang diberikan kepada Anda di project dan akun layanan Cloud Build.
Untuk mengetahui daftar peran dan izin IAM yang terkait dengan Cloud Run, lihat Peran IAM Cloud Run dan Izin IAM Cloud Run. Jika layanan Cloud Run Anda berinteraksi dengan Google Cloud API, seperti Library Klien Cloud, lihat panduan konfigurasi identitas layanan. Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat izin deployment dan mengelola akses.
Mengonfigurasi instance minimum tingkat layanan
Secara default, instance container telah menonaktifkan instance minimum tingkat layanan,
dengan setelan 0. Anda dapat mengubah pengaturan default ini menggunakan konsolGoogle Cloud , Google Cloud CLI, atau file YAML:
Konsol
Di konsol Google Cloud , buka Cloud Run:
Pilih Services dari menu navigasi Cloud Run, lalu klik Deploy container untuk mengonfigurasi layanan baru. Jika Anda mengonfigurasi layanan yang ada, klik layanan tersebut.
Jika Anda mengonfigurasi layanan yang ada, klik tab Scaling.
Di bagian Service scaling, tentukan jumlah minimum instance container di kolom Minimum number of instances.
Klik Buat untuk layanan baru. Klik View diff & redeploy, lalu Deploy changes untuk layanan yang ada.
gcloud
Perbarui jumlah minimum instance untuk layanan tertentu menggunakan perintah berikut:
gcloud run services update SERVICE --min MIN-VALUE
Ganti kode berikut:
- SERVICE: nama layanan Anda.
- MIN-VALUE: jumlah instance container yang akan tetap
aktif, siap menerima permintaan. Tentukan
defaultuntuk menghapus semua setelan instance minimum.
Atau, Anda dapat menetapkan jumlah minimum instance selama deployment menggunakan perintah:
gcloud run deploy --image IMAGE_URL --min MIN-VALUE
Ganti kode berikut:
IMAGE_URL: referensi ke image container, misalnya,us-docker.pkg.dev/cloudrun/container/hello:latest. Jika Anda menggunakan Artifact Registry, repositori REPO_NAME harus sudah dibuat. URL mengikuti formatLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.- MIN-VALUE: jumlah instance container yang akan tetap aktif, siap untuk menerima permintaan. Tentukan
defaultuntuk menghapus semua setelan instance minimum.
YAML
Setiap perubahan konfigurasi akan menghasilkan revisi baru. Revisi selanjutnya juga akan otomatis mendapatkan setelan konfigurasi ini, kecuali jika Anda melakukan pembaruan eksplisit untuk mengubahnya.
Jika Anda membuat layanan baru, lewati langkah ini. Jika Anda mengupdate layanan yang sudah ada, download konfigurasi YAML-nya:
gcloud run services describe SERVICE --format export > service.yaml
Perbarui atribut
run.googleapis.com/minScale:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE annotations: run.googleapis.com/minScale: 'MIN_INSTANCE'
Ganti kode berikut:
- SERVICE: nama layanan Cloud Run Anda
- MIN-INSTANCE: jumlah instance yang harus tetap aktif, siap menerima permintaan.
Buat atau update layanan menggunakan perintah berikut:
gcloud run services replace service.yaml
Perintah
gcloud run services replacesecara default akan menggunakan fileservice.yamljika ada.
Library klien
Untuk memperbarui instance minimum tingkat layanan untuk layanan Anda dari kode:
REST API
Untuk mengupdate instance minimum tingkat layanan untuk layanan tertentu, kirim permintaan HTTP PATCH ke endpoint service Cloud Run Admin API.
Misalnya, menggunakan curl:
curl -H "Content-Type: application/json" \ -H "Authorization: Bearer ACCESS_TOKEN" \ -X PATCH \ -d '{ "scaling": { "minInstanceCount": MIN-VALUE }}' \ https://run.googleapis.com/v2/projects/PROJECT_ID/locations/REGION/services/SERVICE?update_mask=scaling.minInstanceCount
Ganti kode berikut:
- ACCESS_TOKEN: token akses yang valid untuk akun yang memiliki izin IAM untuk memperbarui layanan.
Misalnya, jika login ke
gcloud, Anda dapat mengambil token akses menggunakangcloud auth print-access-token. Dari dalam instance container Cloud Run, Anda dapat mengambil token akses menggunakan server metadata instance container. - MIN-VALUE: jumlah instance container yang akan tetap aktif, siap menerima permintaan.
- SERVICE: nama layanan.
- REGION: Google Cloud region layanan.
- PROJECT-ID: Google Cloud Project ID
Melihat instance minimum tingkat layanan
Untuk melihat setelan instance minimum tingkat layanan saat ini untuk layanan Cloud Run Anda:
Konsol
Di konsol Google Cloud , buka halaman Services Cloud Run:
Klik layanan yang Anda minati untuk membuka panel Service details.
Klik tab Penskalaan.
Temukan setelan Minimum number of instances di bagian Service scaling.
gcloud
Gunakan perintah berikut:
gcloud run services describe SERVICE
Temukan nilai untuk Scaling: Auto (Min: MIN_VALUE, Max: MAX_VALUE) dalam konfigurasi yang dikembalikan.
Mengonfigurasi instance minimum tingkat revisi
Setiap perubahan konfigurasi akan menghasilkan revisi baru. Revisi berikutnya juga akan otomatis mendapatkan setelan konfigurasi ini, kecuali jika Anda melakukan pembaruan eksplisit untuk mengubahnya.
Secara default, instance container telah min-instances menonaktifkan, dengan setelan
di 0.
Penskalaan tingkat revisi hanya tersedia untuk layanan yang sebelumnya telah mengonfigurasi fitur ini.
Konsol
Di konsol Google Cloud , buka Cloud Run:
Pilih Services dari menu navigasi Cloud Run, lalu klik Deploy container untuk mengonfigurasi layanan baru. Jika Anda mengonfigurasi layanan yang ada, klik layanan tersebut.
Jika Anda mengonfigurasi layanan baru, isi halaman setelan layanan awal, lalu klik Container, Jaringan, Keamanan untuk meluaskan halaman konfigurasi layanan.
Jika Anda mengonfigurasi layanan yang ada, klik tab Scaling.
Di bagian Revision scaling, tentukan jumlah minimum instance container di kolom Minimum number of instances.
Klik Create untuk layanan baru. Klik View diff & redeploy, lalu Deploy changes untuk layanan yang ada.
gcloud
Anda dapat mengupdate min-instance
dari layanan tertentu menggunakan perintah berikut:
gcloud run services update SERVICE --min-instances MIN-VALUE
Ganti kode berikut:
- SERVICE: nama layanan Anda.
- MIN-VALUE: jumlah instance container yang akan tetap
aktif, siap menerima permintaan. Tentukan
defaultuntuk menghapus semua setelan instance minimum.
Anda juga dapat menetapkan min-instance selama
deployment menggunakan perintah:
gcloud run deploy --image IMAGE_URL --min-instances MIN-VALUE
Ganti kode berikut:
IMAGE_URL: referensi ke image container, misalnya,us-docker.pkg.dev/cloudrun/container/hello:latest. Jika Anda menggunakan Artifact Registry, repositori REPO_NAME harus sudah dibuat. URL mengikuti formatLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.- MIN-VALUE: jumlah instance container yang akan tetap
aktif, siap menerima permintaan. Tentukan
defaultuntuk menghapus semua setelan instance minimum.
YAML
Jika Anda membuat layanan baru, lewati langkah ini. Jika Anda mengupdate layanan yang sudah ada, download konfigurasi YAML-nya:
gcloud run services describe SERVICE --format export > service.yaml
Perbarui atribut
autoscaling.knative.dev/minScale::apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: metadata: annotations: autoscaling.knative.dev/minScale: 'MIN-INSTANCE' name: REVISION
Ganti kode berikut:
- SERVICE: nama layanan Cloud Run Anda
- MIN-INSTANCE: jumlah instance yang akan tetap aktif, siap menerima permintaan.
REVISION: nama revisi baru atau hapus (jika ada). Jika Anda memberikan nama revisi baru, nama tersebut harus memenuhi kriteria berikut:- Dimulai dengan
SERVICE- - Hanya berisi huruf kecil, angka, dan
- - Tidak diakhiri dengan
- - Tidak melebihi 63 karakter
- Dimulai dengan
Buat atau update layanan menggunakan perintah berikut:
gcloud run services replace service.yaml
Perintah
gcloud run services replacesecara default akan menggunakan fileservice.yamljika ada.
Terraform
Untuk mempelajari cara menerapkan atau menghapus konfigurasi Terraform, lihat Perintah dasar Terraform.
Tambahkan kode berikut ke resourcegoogle_cloud_run_v2_service
di konfigurasi Terraform Anda:Sumber daya google_cloud_run_v2_service sebelumnya menentukan jumlah minimum instance dari 1 di bawah template.scaling.
Ganti 1 dengan jumlah minimum instance Anda sendiri.
Melihat instance minimum tingkat revisi
Penskalaan tingkat revisi hanya tersedia untuk layanan yang sebelumnya telah dikonfigurasi fitur tersebut.
Untuk melihat setelan instance minimum tingkat revisi saat ini untuk layanan Cloud Run Anda:
Konsol
Di konsol Google Cloud , buka halaman Services Cloud Run:
Klik layanan yang Anda minati untuk membuka panel Service details.
Klik tab Penskalaan.
Temukan pengaturan Jumlah minimum instance di bawah bagian Penskalasian revisi.
gcloud
Gunakan perintah berikut:
gcloud run services describe SERVICE
Temukan nilai untuk Instance minimum: dalam konfigurasi yang ditampilkan.
Contoh
Bagian berikut menunjukkan perilaku layanan saat mengonfigurasi instance minimum.
Menggunakan instance minimum atau maksimum tingkat layanan dan tingkat revisi
Tabel berikut menunjukkan perilaku jika Anda menggabungkan instance minimum atau maksimum tingkat layanan dan instance minimum atau maksimum tingkat revisi. Perhatikan bahwa jika keduanya bertentangan, setelan instance maksimum akan membatasi dan menggantikan setelan minimum.
| Setelan konfigurasi | Perilaku |
|---|---|
| Instance minimum tingkat layanan dan instance minimum tingkat revisi ditetapkan. | Nilai efektif untuk revisi adalah jumlah instance minimum tingkat revisi dan jumlah instance minimum tingkat layanan yang lebih besar. |
| Instance minimum tingkat layanan dan instance maksimum tingkat revisi ditetapkan. | Nilai efektif untuk revisi adalah instance maksimum tingkat revisi dan instance minimum tingkat layanan yang lebih kecil. Hal ini tetap berlaku meskipun jumlah instance maksimum tingkat revisi mencegah layanan mencapai jumlah instance yang dikonfigurasi untuk instance minimum tingkat layanan. |
| Jumlah maksimum instance layanan ditetapkan ke nilai yang lebih kecil daripada jumlah minimum instance revisi. | Nilai efektif instance revisi dibatasi hingga maksimum layanan. |
| Jumlah minimum instance layanan ditetapkan lebih besar daripada jumlah maksimum instance revisi. | Nilai efektif instance revisi dibatasi hingga maksimum revisi. |
Gunakan instance tingkat layanan minimum dengan pembagian lalu lintas.
Jika Anda menggunakan pemisahan traffic, instance minimum tingkat layanan dibagi di seluruh revisi berdasarkan proporsi pemisahan traffic. Sebagai contoh, jika jumlah minimum instance tingkat layanan adalah 10, maka pembagian lalu lintas 50/50 akan mengalokasikan 5 instance minimum tingkat layanan untuk setiap revisi.
Tabel berikut menunjukkan contoh skenario konfigurasi:
| Contoh kasus penggunaan | Contoh konfigurasi | Perilaku yang dihasilkan |
|---|---|---|
| Tidak ada setelan tingkat revisi | Instance minimum tingkat layanan: 10
|
Revisi A menerima 6 instance dari instance minimum tingkat layanan yang proporsional dengan pemisahan traffic. Revisi B menerima 4 instance dari instance minimum tingkat layanan yang proporsional dengan pemisahan traffic. |
| Menerima lebih banyak instance daripada jumlah minimum tingkat layanan karena jumlah minimum instance tingkat revisi. | Instance minimum tingkat layanan: 10
|
Revisi A menerima 6 instance dari jumlah minimum instance pada tingkat revisi. Revisi B menerima 5 instance dari instance minimum tingkat layanan yang proporsional dengan pemisahan traffic. Hal ini melebihi instance minimum tingkat layanan dan memang dimaksudkan. |
| Menerima kurang dari jumlah instance minimum tingkat layanan karena jumlah instance maksimum tingkat revisi. | Instance minimum tingkat layanan: 10
|
Revisi A menerima 3 instance dari instance minimum tingkat layanan yang didorong oleh pembagian lalu lintas, tetapi dibatasi hingga instance maksimum tingkat revisinya. Revisi B menerima 5 instance dari instance minimum tingkat layanan yang proporsional dengan pembagian lalu lintas. Hal ini menghasilkan 8 instance tingkat layanan, karena 2 instance hilang akibat jumlah maksimum instance tingkat revisi dari revisi A. |
| Jumlah instance minimum tingkat layanan lebih besar daripada jumlah revisi dalam pemisahan traffic dan terdapat jumlah instance pecahan yang proporsional dengan pemisahan traffic | Instance minimum tingkat layanan: 3 | Revisi A mendapatkan 1 instance minimum dan revisi B mendapatkan 2 instance minimum. Jumlah instance untuk layanan adalah 3. |
Tentukan jumlah minimum instance yang dibutuhkan.
Jika jumlah instance minimum ditetapkan lebih tinggi daripada yang diperlukan untuk traffic umum Anda, banyak instance mungkin menjadi sedikit aktif, masing-masing memproses beberapa permintaan. Sebagai contoh, jika layanan Anda umumnya membutuhkan 200 instance untuk beban puncak tetapi jumlah minimum instance dikonfigurasi menjadi 600, maka permintaan yang masuk akan didistribusikan ke seluruh 600 instance tersebut. Hal ini menyebabkan banyak dari 600 instance ini menjadi agak aktif, masing-masing menangani sebagian kecil traffic, bukan ~200 instance yang sangat aktif dan 400 instance yang tersisa tetap tidak aktif sama sekali.
Untuk meminimalkan biaya (dengan meningkatkan utilisasi pada jumlah instance yang lebih sedikit), tetapkan jumlah minimum instance ke nilai yang sesuai dengan jumlah instance aktual yang dibutuhkan untuk melayani lalu lintas tipikal Anda.
Selain itu, saat autoscaling menyediakan instance tambahan di atas instance minimum yang dikonfigurasi, Cloud Run lebih memilih untuk merutekan permintaan masuk ke instance minimum yang dikonfigurasi terlebih dahulu sebelum mengirim permintaan ke instance yang diskalakan otomatis. Dengan penagihan berbasis permintaan, pengalihan prioritas ke instance minimum yang dikonfigurasi ini mengurangi biaya dengan mengisi instance minimum yang dikonfigurasi sebelum menggunakan instance yang diskalakan secara otomatis. Perlu dicatat bahwa perutean preferensial ini juga dapat menyebabkan instance minimum yang dikonfigurasi memiliki pemanfaatan yang lebih tinggi daripada instance yang diskalakan secara otomatis, tergantung pada jumlah lalu lintas.