Cloud Run menyediakan volume disk sementara yang hanya ada selama durasi instance Anda. Fitur ini memungkinkan Anda menentukan jumlah disk yang diperlukan dan lokasi untuk memasangnya. Cloud Run kemudian akan mengalokasikan jumlah disk tersebut ke resource Anda.
Disk otomatis disediakan, diformat sebelumnya ke ext4, dan dienkripsi dengan kunci khusus instance saat startup. Disk sementara membuat volume Anda sehingga pengguna mana pun dapat membaca atau menulis ke disk tersebut. Karena penyimpanan bersifat sementara, semua data akan dihapus secara permanen saat instance dimatikan. Hal ini mencakup penonaktifan yang disebabkan oleh:
- Error instance
- Penskalaan layanan
- Migrasi traffic ke revisi baru
Disk dikhususkan untuk instance tertentu dan tidak dibagikan ke instance atau revisi lain. Anda memiliki kontrol atas struktur sistem file dengan titik pemasangan yang dapat dikonfigurasi untuk setiap volume.
Sebelum mematikan instance, Cloud Run mengirimkan sinyal SIGTERM ke semua container dalam instance, yang menunjukkan dimulainya periode 10 detik sebelum penonaktifan yang sebenarnya terjadi. Pada saat itu, Cloud Run mengirimkan sinyal SIGKILL. Anda dapat menggunakan jangka waktu 10 detik ini untuk melakukan operasi pembersihan seperti melakukan putaran terakhir penyalinan konten disk ke penyimpanan persisten.
Kasus penggunaan
Anda dapat menggunakan disk sementara untuk hal berikut:
- Workload pemrosesan data: Saat memproses file data besar di Cloud Run, Anda biasanya menyimpan seluruh file dalam memori atau mengatur pemisahannya menjadi bagian yang lebih kecil. Dengan penyimpanan sementara, Anda tidak perlu membayar memori dalam jumlah besar untuk membuat salinan lokal sementara data Anda. Anda juga dapat memproses set data yang lebih besar.
- Caching: Dalam kasus penggunaan penayangan web, data caching di disk, bukan mengambil dari penyimpanan jarak jauh, dapat mengoptimalkan latensi aplikasi Anda.
Batas penyimpanan dan instance
Batasan berikut berlaku:
- Batas penyimpanan instance: setiap instance dibatasi hingga 10 GB ruang total secara default. Jika perlu, minta penambahan kuota.
- Batas volume instance: setiap instance dibatasi hingga maksimum 10 volume.
- Batas project: setiap project dibatasi hingga 100 GB per region secara default. Jika perlu, minta penambahan kuota.
Meminta penambahan kuota
Project yang menggunakan disk sementara Cloud Run di region untuk pertama kalinya akan otomatis diberikan batas 10 GB per instance, per region, dan batas 100 GB per project, per region.
Jika memerlukan kapasitas tambahan, Anda harus meminta penambahan kuota untuk layanan Cloud Run. Gunakan link yang disediakan di tombol berikut untuk meminta kuota yang Anda butuhkan.
| Kuota saat ini | Link kuota |
|---|---|
| 10 GB per instance | Minta kuota yang lebih besar per instance |
| 100 GB per project | Minta kuota yang lebih besar per project |
Untuk mengetahui informasi selengkapnya tentang cara meminta penambahan kuota, lihat Cara menambah kuota.
Batasan
Disk sementara hanya tersedia di lingkungan eksekusi generasi kedua.Jalur yang tidak diizinkan
Cloud Run tidak mengizinkan Anda memasang volume di /dev, /proc, atau /sys, atau di subdirektorinya.
Region yang didukung
Fitur disk sementara tersedia di region berikut:
- Untuk workload non-GPU, disk sementara tersedia di:
asia-northeast1(Tokyo)europe-west1(Belgia)CO2 Rendah
northamerica-northeast1(Montreal)CO2 Rendah
northamerica-northeast2(Toronto)CO2 Rendah
us-central1(Iowa)CO2 Rendah . Region ini hanya tersedia berdasarkan undangan. Hubungi tim Akun Google Anda jika tertarik dengan region ini.
us-east1(South Carolina)us-east4(North Virginia)us-west1(Oregon)CO2 Rendah
- Jika Anda menggunakan GPU, disk sementara tersedia di semua region yang mendukung GPU.
Sebelum memulai
- Login keakun Anda. Google Cloud Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
- Instal dan lakukan inisialisasi gcloud CLI.
-
Perbarui komponen:
gcloud components update
- Tinjau halaman harga Cloud Run untuk CPU, memori, dan traffic keluar jaringan. Seluruh ukuran disk yang disediakan dan masa aktif instance yang menggunakannya akan berkontribusi pada biaya Anda.
Peran yang diperlukan
Untuk mendapatkan izin yang Anda perlukan untuk mengonfigurasi disk sementara, minta administrator untuk memberi Anda peran IAM berikut:
- Developer Cloud Run (
roles/run.developer) di layanan Cloud Run - Pengguna Akun Layanan (
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.
Membuat dan memasang disk sementara
Anda dapat membuat dan memasang disk sementara menggunakan Google Cloud konsol, Google Cloud CLI, YAML, atau Terraform:
Konsol
Di Google Cloud konsol, buka Cloud Run:
Pilih Services dari menu navigasi Cloud Run, lalu klik Deploy container untuk mengonfigurasi layanan baru. Jika Anda mengonfigurasi layanan yang sudah ada, klik layanan tersebut, lalu klik Edit and deploy new revision.
Jika Anda mengonfigurasi layanan baru, isi halaman setelan layanan awal, lalu klik Containers, Networking, Security untuk memperluas halaman konfigurasi layanan.
Klik tab Container.
- Di bagian Resources:
- Pilih Ephemeral disk.
- Tentukan ukuran disk sementara dari menu.
- Masukkan jalur pemasangan.
- Di bagian Resources:
Klik Create atau Deploy.
gcloud
Untuk menambahkan volume dan memasangnya:
gcloud beta run services update SERVICE \
--execution-environment=gen2 \
--add-volume=name=VOLUME_NAME,type=ephemeral-disk,size=SIZE \
--add-volume-mount=volume=VOLUME_NAME,mount-path=MOUNT_PATH
Ganti kode berikut:
- SERVICE: nama layanan Anda.
- VOLUME_NAME: nama yang ingin Anda berikan ke volume.
- SIZE: ukuran disk—misalnya,
100Gi. Ukuran harus minimal10Giuntuk volumeephemeral-disk. - MOUNT_PATH: jalur relatif tempat Anda memasang volume,
misalnya,
/mnt/my-volume.
YAML
Jika Anda membuat layanan baru, lewati langkah ini. Jika Anda memperbarui layanan yang sudah ada, download konfigurasi YAML-nya:
gcloud run services describe SERVICE --format export > service.yaml
Konfigurasi file YAML:
apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE labels: cloud.googleapis.com/location: REGION annotations: run.googleapis.com/launch-stage: BETA spec: template: spec: containers: - name: CONTAINER_NAME image: IMAGE_URL volumeMounts: - name: VOLUME_NAME mountPath: MOUNT_PATH volumes: - name: VOLUME_NAME emptyDir: medium: Disk sizeLimit: SIZEGanti kode berikut:
- SERVICE: nama layanan Anda.
- REGION: Google Cloud region.
- CONTAINER_NAME: nama yang ingin Anda berikan ke container.
- 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. - VOLUME_NAME: nama yang ingin Anda berikan ke volume.
- MOUNT_PATH: jalur relatif tempat Anda memasang volume,
misalnya,
/mnt/my-volume. - SIZE: ukuran disk—misalnya,
100Gi. Ukuran harus minimal10Giuntuk volumeephemeral-disk.
Buat atau perbarui layanan menggunakan perintah berikut:
gcloud run services replace service.yaml
Perintah
gcloud run services replacesecara default 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: resource "google_cloud_run_v2_service" "default" {
name = "SERVICE"
location = "REGION"
launch_stage = "BETA"
deletion_protection = "true"
ingress = "INGRESS_TRAFFIC_ALL"
template {
containers {
image = "IMAGE_URL"
volume_mounts {
name = "VOLUME_NAME"
mount_path = "MOUNT_PATH"
}
}
volumes {
name = "VOLUME_NAME"
empty_dir {
medium = "DISK"
size_limit = "SIZE"
}
}
}
lifecycle {
ignore_changes = [
launch_stage,
]
}
}
Ganti kode berikut:
- SERVICE: nama layanan Anda.
- REGION: Google Cloud region.
- 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. - VOLUME_NAME: nama yang ingin Anda berikan ke volume.
- MOUNT_PATH: jalur relatif tempat Anda memasang volume,
misalnya,
/mnt/my-volume. - SIZE: ukuran disk—misalnya,
100Gi. Ukuran harus minimal10Giuntuk volumeephemeral-disk.
Membaca dan menulis ke volume
Jika menggunakan fitur pemasangan volume Cloud Run, Anda akan mengakses volume yang dipasang menggunakan library yang sama dalam bahasa pemrograman yang Anda gunakan untuk membaca dan menulis file di sistem file lokal.
Hal ini sangat berguna jika Anda menggunakan container yang sudah ada yang mengharapkan data disimpan di sistem file lokal dan menggunakan operasi sistem file reguler untuk mengaksesnya.
Cuplikan berikut mengasumsikan pemasangan volume dengan mountPath yang ditetapkan ke /mnt/my-volume.
Nodejs
Gunakan modul Sistem File untuk membuat file baru atau menambahkan ke file yang sudah ada di volume, /mnt/my-volume:
var fs = require('fs');
fs.appendFileSync('/mnt/my-volume/sample-logfile.txt', 'Hello logs!', { flag: 'a+' });Python
Tulis ke file yang disimpan dalam volume, /mnt/my-volume:
f = open("/mnt/my-volume/sample-logfile.txt", "a")Go
Gunakan paket os untuk membuat file baru yang disimpan dalam volume, /mnt/my-volume:
f, err := os.Create("/mnt/my-volume/sample-logfile.txt")Java
Gunakan class Java.io.File untuk membuat file log dalam volume, /mnt/my-volume:
import java.io.File;
File f = new File("/mnt/my-volume/sample-logfile.txt");Menghapus dan menghapus volume serta pemasangan volume
Anda dapat menghapus semua volume dan pemasangan atau menghapus volume dan pemasangan volume satu per satu.
Menghapus semua volume dan pemasangan volume
Untuk menghapus semua volume dan pemasangan volume dari layanan container tunggal, jalankan perintah berikut:
gcloud run services update SERVICE \ --clear-volumes --clear-volume-mounts
Jika Anda memiliki beberapa container, ikuti konvensi CLI sidecar untuk menghapus volume dan pemasangan volume:
gcloud run services update SERVICE \ --container=container1 \ --clear-volumes -–clear-volume-mounts \ --container=container2 \ --clear-volumes \ -–clear-volume-mounts
Menghapus volume dan pemasangan volume satu per satu
Untuk menghapus volume, Anda juga harus menghapus semua pemasangan volume yang menggunakan volume tersebut.
Untuk menghapus volume atau pemasangan volume satu per satu, gunakan flag remove-volume dan remove-volume-mount:
gcloud run services update SERVICE \ --remove-volume VOLUME_NAME \ --container=container1 \ --remove-volume-mount MOUNT_PATH \ --container=container2 \ --remove-volume-mount MOUNT_PATH
Praktik terbaik
Ikuti praktik terbaik berikut untuk mengelola data sementara secara efektif dan mengoptimalkan performa penyimpanan.
Menyalin ke penyimpanan persisten
Jika Anda ingin menyalin konten disk sementara ke penyimpanan persisten, seperti bucket Cloud Storage, sebaiknya salin secara bertahap, bukan mengandalkan masa tenggang SIGTERM ke SIGKILL selama 10 detik.
Lihat Kontrak runtime container
untuk mengetahui informasi selengkapnya tentang penonaktifan instance.
Cloud Run dapat membaca dan menulis dari Cloud Storage tanpa penyiapan jaringan tambahan. Untuk mencapai performa optimal, sebaiknya rutekan traffic ke dan dari Cloud Storage melalui jaringan VPC menggunakan VPC Langsung.
Metode ini berfungsi jika Anda tidak memerlukan resource Cloud Run untuk mengakses internet. Jika Anda memerlukan akses internet, siapkan Cloud NAT, atau lihat Traffic internal ke Google API.
Untuk mengonfigurasi traffic keluar VPC Langsung dengan layanan, selesaikan langkah-langkah berikut:
Di Google Cloud konsol, buka halaman Cloud Run:
Klik Create Service jika Anda mengonfigurasi layanan baru yang akan di-deploy. Jika Anda mengonfigurasi dan men-deploy layanan yang sudah ada, klik layanan tersebut, lalu klik Edit and deploy new revision.
Jika Anda mengonfigurasi layanan baru, isi halaman setelan layanan awal sesuai kebutuhan, lalu klik Containers, Networking, Security untuk memperluas halaman konfigurasi layanan.
Klik tab Networking.
Klik Hubungkan ke VPC untuk traffic keluar.
Klik Kirim traffic langsung ke VPC.
Di kolom Network, pilih jaringan VPC yang ingin Anda kirimi traffic.
Di kolom Subnet, pilih subnet tempat alamat IP diterima oleh layanan Anda. Anda dapat men-deploy beberapa layanan di subnet yang sama.
Untuk Traffic routing, pilih Route all traffic to the VPC untuk mengirim semua traffic keluar melalui jaringan VPC.
Klik Buat atau Deploy.
Untuk memverifikasi bahwa layanan Anda berada di jaringan VPC, klik layanan tersebut, lalu klik tab Networking. Jaringan dan subnet tercantum dalam kartu VPC.
Kini Anda dapat mengirim permintaan dari layanan Cloud Run ke resource mana pun di jaringan VPC, sebagaimana diizinkan oleh aturan firewall Anda.
Aktifkan Akses Google Pribadi di subnet yang Anda hubungkan.
Memecahkan masalah
Jika Anda mengalami masalah, periksa hal berikut:- Jika container Anda kehabisan memori dan Anda menggunakan Google Cloud konsol untuk
men-deploy revisi baru layanan dengan disk sementara terlampir, Google Cloud konsol
kemungkinan akan mengonversi volume disk Anda menjadi volume dalam memori. Hal ini menyebabkan penulisan disk Anda ditulis ke dalam memori, sehingga container Anda kehabisan memori.
Untuk memperbaikinya, deploy ulang layanan Anda menggunakan gcloud CLI lagi dan pastikan file YAML Anda menentukan
medium: Diskdi bagianvolumes. - Jika Anda melihat kecepatan jaringan yang lambat saat mendownload data dalam jumlah besar ke disk sementara, ikuti langkah-langkah untuk mengaktifkan VPC Langsung. Jika VPC Langsung tidak diaktifkan, Anda akan melihat kecepatan transfer jaringan yang lebih lambat.