Anda dapat menghindari waktu mulai container yang lambat untuk layanan dan mengurangi latensi layanan dengan menetapkan jumlah minimum instance. Halaman ini menjelaskan cara mengaktifkan instance yang tidak ada aktivitas untuk layanan Anda menggunakan setelan instance minimum.
Untuk layanan Cloud Run, Cloud Run secara default melakukan penskalaan ke jumlah instance berdasarkan jumlah permintaan yang masuk.
Namun, jika layanan Anda memerlukan penurunan latensi, terutama saat melakukan penskalaan dari nol instance aktif, Anda dapat mengubah perilaku default ini dengan menentukan jumlah minimum instance container yang harus tetap aktif dan siap untuk melayani permintaan. Lihat Tips pengembangan umum untuk detail selengkapnya tentang pengoptimalan ini.
Cloud Run menghapus instance yang tidak melayani permintaan (tidak ada aktivitas).
Dengan menetapkan instance minimum, Cloud Run mempertahankan setidaknya jumlah instance minimum yang berjalan, meskipun instance tersebut tidak melayani 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 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 minimum.
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 di tingkat layanan dan menghindari penggabungan instance minimum tingkat layanan dan tingkat revisi.
Jika Anda menerapkan instance minimum di tingkat revisi, setelan akan berlaku setelah deployment revisi. Jika Anda menerapkan fitur ini di tingkat layanan, setelan akan diterapkan tanpa perlu men-deploy revisi baru.
Revisi yang diberi tag dan instance minimum tingkat layanan
Revisi yang diberi tag dimulai, tetapi hanya dihitung untuk instance minimum tingkat layanan jika merupakan bagian dari pemisahan traffic.
Penagihan
Instance yang terus berjalan menggunakan fitur instance minimum memang dikenai biaya penagihan. Karena biaya ini sangat dapat diprediksi, Google merekomendasikan untuk membeli Diskon abonemen.
Instance minimum dan CPU yang selalu dialokasikan
Anda dapat mengonfigurasi CPU agar selalu dialokasikan jika Anda memerlukan CPU di luar permintaan.
Penyalaan ulang instance minimum
Instance minimum dapat dimulai ulang kapan saja.
Revisi dan instance minimum
Jika ditetapkan di tingkat layanan, instance minimum akan didistribusikan ke semua revisi yang menyalurkan traffic secara proporsional dengan pembagian traffic.
Jika instance minimum ditetapkan di tingkat revisi, instance minimum akan dimulai setiap kali revisi direferensikan dalam pembagian traffic (bahkan pada 0%) atau memiliki tag traffic yang ditetapkan.
Peran yang diperlukan
Untuk mendapatkan izin yang diperlukan guna mengonfigurasi dan men-deploy layanan Cloud Run, minta administrator untuk memberi Anda peran IAM berikut:
-
Cloud Run Developer (
roles/run.developer
) di layanan Cloud Run -
Service Account User (
roles/iam.serviceAccountUser
) di identitas layanan
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.
Menetapkan dan memperbarui instance minimum tingkat layanan
Secara default, instance container telah menonaktifkan instance minimum tingkat layanan,
dengan setelan 0
. Anda dapat mengubah perilaku default ini menggunakan
konsol Google Cloud, Google Cloud CLI, atau file YAML:
Konsol
Di konsol Google Cloud, buka Cloud Run:
Jika Anda mengonfigurasi layanan baru, klik Deploy container dan pilih Service untuk menampilkan formulir Create service. Jika Anda mengonfigurasi layanan yang ada, klik layanan untuk menampilkan panel detailnya, lalu klik ikon pena di samping Min instances di kanan atas panel detail.
Temukan formulir Penskalaan otomatis layanan.
- Di kolom berlabel Jumlah minimum instance, tentukan jumlah instance container yang akan tetap aktif dan siap menerima permintaan.
Klik Buat untuk layanan baru atau Deploy untuk layanan yang ada.
gcloud
Perbarui service-min-instances
untuk layanan tertentu menggunakan perintah berikut:
gcloud run services update SERVICE --service-min-instances MIN-VALUE
Ganti:
- SERVICE dengan nama layanan Anda.
- MIN-VALUE dengan jumlah instance container yang akan tetap aktif, siap menerima permintaan. Tentukan
default
untuk menghapus semua setelan instance minimum.
Atau, Anda dapat menetapkan service-min-instances
selama
deployment menggunakan perintah:
gcloud run deploy --image IMAGE_URL --service-min-instances MIN-VALUE
Ganti
- IMAGE_URL dengan 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 memiliki bentukLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
- MIN-VALUE dengan jumlah instance
container yang akan tetap aktif, siap menerima permintaan. Tentukan
default
untuk 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
run.googleapis.com/minScale
:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE annotations: run.googleapis.com/minScale: 'MIN_INSTANCE'
Ganti:
- SERVICE dengan nama layanan Cloud Run Anda
- MIN-INSTANCE dengan jumlah instance yang akan tetap aktif, siap menerima permintaan.
Buat atau perbarui layanan menggunakan perintah berikut:
gcloud run services replace service.yaml
Library klien
Untuk memperbarui instance minimum tingkat layanan untuk layanan Anda dari kode:
REST API
Untuk memperbarui 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:
- ACCESS_TOKEN dengan token akses yang valid untuk akun yang memiliki izin IAM untuk mengupdate 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 dengan jumlah instance container yang akan tetap aktif, siap menerima permintaan.
- SERVICE dengan nama layanan.
- REGION dengan region Google Cloud layanan.
- PROJECT-ID dengan ID project Google Cloud.
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 Cloud Run:
Klik layanan yang Anda minati untuk membuka panel Detail layanan.
Setelan saat ini ditampilkan di kanan atas panel detail layanan, di samping Min instances.
gcloud
Gunakan perintah berikut:
gcloud run services describe SERVICE
Temukan nilai untuk Service-level Min Instances: dalam konfigurasi yang ditampilkan.
Menetapkan dan memperbarui 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
. Anda dapat mengubah perilaku default ini menggunakan konsol Google Cloud, Google Cloud CLI, atau file YAML saat Anda membuat layanan baru atau
men-deploy revisi baru:
Konsol
Di konsol Google Cloud, buka Cloud Run:
Klik Deploy container dan pilih Service untuk mengonfigurasi layanan baru. Jika Anda mengonfigurasi layanan yang sudah ada, klik layanan, lalu klik Edit dan deploy revisi baru.
Jika Anda mengonfigurasi layanan baru, isi halaman setelan layanan awal, lalu klik Container, volume, networking, security untuk memperluas halaman konfigurasi layanan.
Klik tab Container.
- Di kolom berlabel Jumlah minimum instance, tentukan jumlah instance container yang akan tetap aktif dan siap menerima permintaan.
Klik Buat atau Deploy.
gcloud
Anda dapat mengupdate min-instance
dari layanan tertentu menggunakan perintah berikut:
gcloud run services update SERVICE --min-instances MIN-VALUE
Ganti:
- SERVICE dengan nama layanan Anda.
- MIN-VALUE dengan jumlah instance container yang akan tetap aktif, siap menerima permintaan. Tentukan
default
untuk 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:
- IMAGE_URL dengan 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 memiliki bentukLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
- MIN-VALUE dengan jumlah instance container yang akan tetap aktif, siap menerima permintaan. Tentukan
default
untuk 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:
- SERVICE dengan nama layanan Cloud Run Anda
- MIN-INSTANCE dengan jumlah instance yang akan tetap aktif, siap menerima permintaan.
- REVISION dengan 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 perbarui layanan menggunakan perintah berikut:
gcloud run services replace service.yaml
Terraform
Untuk mempelajari cara menerapkan atau menghapus konfigurasi Terraform, lihat Perintah dasar Terraform.
Resource google_cloud_run_v2_service
berikut menentukan jumlah minimum
instance 1
pada template.scaling
.
Ganti 1
dengan jumlah minimum instance Anda sendiri.
Melihat setelan instance minimum tingkat revisi
Untuk melihat setelan instance minimum tingkat revisi saat ini untuk layanan Cloud Run Anda:
Konsol
Di konsol Google Cloud, buka Cloud Run:
Klik layanan yang Anda minati untuk membuka halaman Detail layanan.
Klik tab Revisi.
Pada panel detail di sebelah kanan, setelan instance minimum tingkat revisi tercantum di bagian tab Container.
gcloud
Gunakan perintah berikut:
gcloud run services describe SERVICE
Temukan setelan instance minimum tingkat revisi dalam konfigurasi yang ditampilkan.
Menggunakan instance minimum atau maksimum tingkat layanan dan tingkat revisi
Tabel berikut menunjukkan perilaku jika Anda menggabungkan instance minimum tingkat layanan dan instance minimum atau maksimum tingkat revisi:
Setelan konfigurasi | Perilaku |
---|---|
Instance minimum tingkat layanan dan instance minimum tingkat revisi ditetapkan. | Nilai efektif untuk revisi adalah instance minimum tingkat revisi dan instance minimum tingkat layanan yang lebih besar. |
Instance minimum tingkat layanan dan instance maksimum tingkat revisi ditetapkan. | Nilai efektif untuk revisi adalah yang lebih kecil dari instance maksimum tingkat revisi dan instance minimum tingkat layanan. Hal ini berlaku meskipun instance maksimum tingkat revisi mencegah layanan mencapai jumlah instance yang dikonfigurasi untuk instance minimum tingkat layanan. |
Menggunakan instance minimum tingkat layanan dengan pemisahan traffic
Jika Anda menggunakan pemisahan traffic, instance minimum tingkat layanan akan dibagi di seluruh revisi berdasarkan proporsi pemisahan traffic. Misalnya, jika instance minimum tingkat layanan = 10, pembagian traffic 50/50 akan mengalokasikan 5 instance minimum tingkat layanan ke 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 sebanding dengan pembagian traffic. Revisi B menerima 4 instance dari instance minimum tingkat layanan yang sebanding dengan pembagian traffic. |
Menerima lebih dari instance minimum tingkat layanan karena instance minimum tingkat revisi | Instance minimum tingkat layanan: 10
|
Revisi A menerima 6 instance dari instance minimum tingkat revisi. Revisi B menerima 5 instance dari instance minimum tingkat layanan yang sebanding dengan pembagian traffic. Hal ini melebihi instance minimum tingkat layanan dan memang dimaksudkan. |
Menerima kurang dari instance minimum tingkat layanan karena instance maksimum tingkat revisi. | Instance minimum tingkat layanan: 10
|
Revisi A menerima 3 instance dari instance minimum tingkat layanan yang didorong oleh pembagian traffic, tetapi dibatasi pada instance maksimum tingkat revisinya. Revisi B menerima 5 instance dari instance minimum tingkat layanan yang sebanding dengan pembagian traffic. Hal ini menghasilkan 8 instance tingkat layanan, karena 2 instance hilang karena instance maksimum tingkat revisi revisi A. |
Instance minimum tingkat layanan lebih besar dari jumlah revisi dalam pembagian traffic dan ada jumlah pecahan instance yang sebanding dengan pembagian 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. |