Instance minimum (layanan)

Halaman ini menjelaskan cara mengaktifkan instance nonaktif 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 min-instances mungkin menjadi tidak ada aktivitas, jika intance 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.

Menerapkan instance minimum pada tingkat layanan versus tingkat revisi

Anda dapat mengonfigurasi instance minimum pada 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.

Jika Anda menerapkan instance minimum pada tingkat revisi, setelan akan diterapkan setelah deployment revisi. Jika Anda menerapkan fitur ini pada tingkat layanan, setelan akan berlaku tanpa perlu men-deploy revisi baru.

Instance minimum tingkat layanan dan revisi yang diberi tag

Revisi yang diberi tag akan dimulai, tetapi tidak diperhitungkan dalam instance minimum tingkat layanan jika bukan 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 memerlukan CPU di luar permintaan.

Penyalaan ulang instance minimum

Instance minimum dapat dimulai ulang kapan saja.

Revisi dan instance minimum

Jika instance minimum ditetapkan pada tingkat layanan, instance tersebut akan didistribusikan ke semua revisi yang menyalurkan traffic secara proporsional dengan pemisahan traffic.

Jika instance minimum ditetapkan pada tingkat revisi, instance minimum akan dimulai setiap kali revisi direferensikan dalam pemisahan traffic (bahkan dengan persentase 0%) atau memiliki tag traffic yang ditetapkan.

Menetapkan dan mengupdate instance minimum tingkat layanan

Secara default, instance container menonaktifkan instance minimum tingkat layanan, dengan setelan 0. Anda dapat mengubah nilai default ini menggunakan Konsol Google Cloud, Google Cloud CLI, atau file YAML:

Konsol

  1. Di konsol Google Cloud, buka Cloud Run:

    Buka Cloud Run

  2. Jika Anda mengonfigurasi layanan baru, klik 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.

  3. Temukan formulir Penskalaan otomatis layanan:

    gambar

  4. Di kolom berlabel Minimum number of instances, tentukan jumlah instance container yang akan tetap aktif, yang siap menerima permintaan.

  5. Klik Create untuk layanan baru atau Deploy untuk layanan yang sudah ada.

Command line

Update service-min-instances untuk layanan tertentu menggunakan perintah berikut:

gcloud beta run services update SERVICE --service-min-instances MIN-VALUE

Ganti

  • SERVICE dengan nama layanan Anda dan
  • MIN-VALUE dengan jumlah instance container yang akan tetap aktif, siap untuk menerima permintaan. Tentukan default untuk menghapus semua setelan instance minimum.

Atau, Anda dapat menetapkan service-min-instances selama deployment menggunakan perintah:

gcloud beta 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 berbentuk LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
  • MIN-VALUE dengan jumlah instance container yang akan tetap aktif, siap untuk menerima permintaan. Tentukan default untuk menghapus semua setelan instance minimum.

YAML

Anda dapat mendownload dan melihat konfigurasi layanan yang ada menggunakan perintah gcloud run services describe --format export, yang memberikan hasil yang telah diolah dalam format YAML. Kemudian, Anda dapat mengubah kolom yang dijelaskan di bawah ini dan mengunggah YAML yang telah dimodifikasi menggunakan perintah gcloud run services replace. Pastikan Anda hanya mengubah kolom seperti yang didokumentasikan.

  1. Untuk melihat dan mendownload konfigurasi:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Perbarui run.googleapis.com/minScale atribut:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
      annotations:
        run.googleapis.com/launch-stage: BETA
        run.googleapis.com/minScale: 'MIN_INSTANCE'

    Ganti

    • SERVICE dengan nama layanan Cloud Run Anda
    • MIN-INSTANCE dengan jumlah instance yang akan tetap aktif, siap untuk menerima permintaan.
  3. Ganti layanan dengan konfigurasi baru menggunakan perintah berikut:

    gcloud beta run services replace service.yaml

Library klien

Untuk mengupdate 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 menggunakan gcloud 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 layanan Google Cloud.
  • 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

  1. Di konsol Google Cloud, buka Cloud Run:

    Buka Cloud Run

  2. Klik layanan yang Anda minati untuk membuka panel Detail layanan.

  3. Setelan saat ini ditampilkan di kanan atas panel detail layanan, di samping Instance Min.

Command line

  1. Gunakan perintah berikut:

    gcloud run services describe SERVICE
  2. Cari nilai untuk Service-level Min Instances: di konfigurasi yang ditampilkan.

Menetapkan dan mengupdate 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 setelan default ini menggunakan Konsol Google Cloud, Google Cloud CLI, atau file YAML saat membuat layanan baru atau men-deploy revisi baru:

Konsol

  1. Di konsol Google Cloud, buka Cloud Run:

    Buka Cloud Run

  2. Klik Buat Layanan jika Anda mengonfigurasi layanan baru yang akan di-deploy. Jika Anda mengonfigurasi layanan yang ada, klik layanan, lalu klik Edit and deploy new revision.

  3. Jika Anda mengonfigurasi layanan baru, isi halaman setelan layanan awal sesuai keinginan, kemudian klik Container, vo;ume, jejaring, sekuritas untuk memperluas halaman konfigurasi layanan.

  4. Klik tab Container.

    gambar

    • Di kolom berlabel Jumlah minimum instance, tentukan jumlah instance container yang diinginkan agar tetap aktif dan siap menerima permintaan.
  5. Klik Buat atau Deploy.

Command line

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 dan
  • MIN-VALUE dengan jumlah instance container yang diinginkan yang akan tetap aktif, siap untuk 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 bentuk LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
  • MIN-VALUE dengan jumlah instance container yang diinginkan yang akan tetap aktif, siap untuk menerima permintaan. Tentukan default untuk menghapus semua setelan instance minimum.

YAML

Anda dapat mendownload dan melihat konfigurasi layanan yang ada menggunakan perintah gcloud run services describe --format export, yang memberikan hasil yang telah diolah dalam format YAML. Kemudian, Anda dapat mengubah kolom yang dijelaskan di bawah ini dan mengunggah YAML yang telah dimodifikasi menggunakan perintah gcloud run services replace. Pastikan Anda hanya mengubah kolom seperti yang didokumentasikan.

  1. Untuk melihat dan mendownload konfigurasi:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Perbarui autoscaling.knative.dev/minScale: atribut:

    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 diinginkan 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 denganSERVICE-
      • Hanya berisi huruf kecil, angka, dan -
      • Tidak diakhiri dengan -
      • Tidak melebihi 63 karakter
  3. Ganti layanan dengan konfigurasi barunya 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.

resource "google_cloud_run_v2_service" "default" {
  name     = "cloudrun-service-min-instances"
  location = "us-central1"

  template {
    containers {
      image = "us-docker.pkg.dev/cloudrun/container/hello"
    }
    scaling {
      # Min instances
      min_instance_count = 1
    }
  }
}

Melihat setelan instance minimum tingkat revisi

Untuk melihat setelan instance minimum tingkat revisi saat ini untuk layanan Cloud Run Anda:

Konsol

  1. Di konsol Google Cloud, buka Cloud Run:

    Buka Cloud Run

  2. Klik layanan yang Anda minati untuk membuka halaman Detail layanan.

  3. Klik tab Revisi.

  4. Di panel detail di sebelah kanan, setelan instance minimum tingkat revisi dicantumkan di tab Container.

Command line

  1. Gunakan perintah berikut:

    gcloud run services describe SERVICE
  2. Temukan setelan instance minimum tingkat revisi di konfigurasi yang ditampilkan.

Menggunakan instance minimum atau maksimum tingkat layanan dan revisi

Tabel berikut menunjukkan perilaku jika Anda menggabungkan instance minimum atau maksimum tingkat layanan dan instance minimum atau maksimum tingkat revisi:

Setelan konfigurasi Perilaku
Instance minimum tingkat layanan dan instance minimum tingkat revisi telah 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 telah ditetapkan. Nilai efektif untuk revisi adalah 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 dibagi di seluruh revisi berdasarkan proporsi pembagian traffic. Misalnya, jika instance minimum tingkat layanan = 10, pemisahan traffic 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
  • Instance minimum Revisi A: 0
  • Instance minimum Revisi B: 0
  • Pemisahan traffic: 60/40
Revisi A menerima 6 instance dari instance minimum tingkat layanan yang sebanding dengan pemisahan traffic. Revisi B menerima 4 instance dari instance minimum tingkat layanan yang sebanding dengan pemisahan traffic.
Menerima lebih dari instance minimum tingkat layanan karena instance minimum tingkat revisi Instance minimum tingkat layanan: 10
  • Instance minimum Revisi A: 6
  • Instance minimum Revisi B: 0
  • Pemisahan traffic: 50/50
Revisi A menerima 6 instance dari instance minimum tingkat revisi. Revisi B menerima 5 instance dari instance minimum tingkat layanan yang sebanding dengan pemisahan traffic. Jumlah ini melampaui instance minimum tingkat layanan dan memang sengaja dibuat.
Menerima kurang dari instance minimum tingkat layanan karena instance maksimum tingkat revisi. Instance minimum tingkat layanan: 10
  • Instance minimum Revisi A: 0
  • Instance maksimum Revisi A: 3
  • Instance minimum Revisi B: 0
  • Pemisahan traffic: 50/50
Revisi A menerima 3 instance dari instance minimum tingkat layanan yang didorong oleh pemisahan traffic, tetapi terbatas pada instance maksimum tingkat revisinya.
Revisi B menerima 5 instance dari instance minimum tingkat layanan yang sebanding dengan pemisahan traffic. Proses ini menghasilkan 8 instance tingkat layanan, karena 2 instance hilang karena instance maksimum level revisi dari revisi A.
Instance minimum tingkat layanan lebih besar dari jumlah revisi dalam pemisahan traffic, dan terdapat jumlah pecahan instance yang sebanding 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.