Secara default, setiap tugas berjalan selama maksimum 10 menit: Anda dapat mengubahnya menjadi lebih singkat atau lebih lama hingga 168 jam (7 hari). Dukungan untuk waktu tunggu yang lebih dari 24 jam tersedia dalam Pratinjau.
Anda akan mengatur task timeout seperti yang dijelaskan di halaman ini. Tidak ada timeout eksplisit pada eksekusi job: jika semua task selesai, maka eksekusi job juga akan selesai.
Unit menentukan durasi. Anda dapat menentukan durasi waktu tunggu sebagai nilai
bilangan bulat dalam detik, menit, atau jam. Misalnya, untuk menyetel durasi waktu tunggu sebagai
10 menit dan 5 detik, tentukan nilai sebagai 605
detik.
Jika tugas Anda mengaktifkan percobaan ulang, setelan waktu tunggu akan berlaku untuk setiap percobaan tugas. Jika percobaan memulai task tidak kunjung selesai dalam kurun waktu yang telah ditentukan, maka task akan dihentikan. Semakin lama tugas berjalan, semakin besar kemungkinan tugas tersebut mengalami masalah yang menyebabkan tugas gagal, seperti kegagalan dependensi hilir, error kehabisan memori, atau masalah infrastruktur. Sebaiknya aktifkan percobaan ulang untuk semua tugas, tetapi terutama untuk tugas dengan tugas yang berjalan lama.
Peristiwa pemeliharaan
Tugas akan mengalami peristiwa pemeliharaan secara berkala. Selama pemeliharaan, semua task yang sedang berlangsung akan dimigrasikan ke komputer lain. Dalam proses tersebut akan ada jeda singkat saat tugas sedang dimigrasikan.
Proses migrasi mempertahankan status tugas, dengan satu pengecualian penting: koneksi jaringan VPC keluar terputus selama peristiwa pemeliharaan. Sebaiknya gunakan library klien yang dapat menangani reset koneksi sesekali.
Cloud Run mencetak pesan log setiap kali tugas mulai dan selesai dimigrasikan.
Selain itu, jika ingin memantau atau menangani event pemeliharaan dengan cara tertentu,
Anda dapat menangkap sinyal SIGTSTP
, yang akan dikirim 10 detik sebelum task
dimigrasikan. Setelah proses migrasi, task akan menerima sinyal SIGCONT
segera
setelah task tersebut dimulai ulang.
Berikut adalah contoh fungsi dalam bahasa GO yang akan menangkap sinyal tersebut dan mencetak entri log:
func testSignals() { sigs := make(chan os.Signal, 1) signal.Notify(sigs, syscall.SIGTSTP, syscall.SIGCONT) go func() { for { sig := <-sigs log.Printf("Got Signal: %v", sig) } }() }
Peran yang diperlukan
Untuk mendapatkan izin yang Anda perlukan guna mengonfigurasi tugas Cloud Run, minta administrator Anda untuk memberi Anda peran IAM berikut:
-
Cloud Run Developer (
roles/run.developer
) di tugas Cloud Run -
Service Account User (
roles/iam.serviceAccountUser
) pada 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 tugas 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.
Menyetel task timeout
Untuk menentukan task timeout pada sebuah job Cloud Run:
Konsol
Di konsol Google Cloud , buka halaman tugas Cloud Run:
Pilih Tugas dari menu, lalu klik Deploy container untuk mengisi halaman setelan tugas awal. Jika Anda mengonfigurasi tugas yang ada, pilih tugas, lalu klik Edit.
Klik Container, Volume, Koneksi, Keamanan untuk memperluas halaman properti tugas.
Klik tab General.
- Di kolom Waktu tunggu tugas, tentukan durasi maksimum untuk tugas di
job saat ini, lalu pilih Unit waktu. Anda hanya dapat menentukan durasi waktu tunggu
sebagai nilai bilangan bulat dalam detik, menit, atau jam. Misalnya, untuk menetapkan durasi 10 menit dan 5 detik, di kolom Waktu tunggu tugas, tentukan
605
, lalu pilih Unit waktu sebagai detik.
- Di kolom Waktu tunggu tugas, tentukan durasi maksimum untuk tugas di
job saat ini, lalu pilih Unit waktu. Anda hanya dapat menentukan durasi waktu tunggu
sebagai nilai bilangan bulat dalam detik, menit, atau jam. Misalnya, untuk menetapkan durasi 10 menit dan 5 detik, di kolom Waktu tunggu tugas, tentukan
Klik Buat atau Perbarui.
gcloud
Untuk job yang Anda buat:
gcloud run jobs create JOB_NAME --image IMAGE_URL --task-timeout TIMEOUT
Ganti
- JOB_NAME dengan nama tugas Anda.
- IMAGE_URL dengan referensi ke
image container, misalnya,
us-docker.pkg.dev/cloudrun/container/job:latest
. - TIMEOUT dengan durasi maksimum untuk task,
tentukan jumlah waktu dan satuannya: contohnya,
10m5s
terbaca sepuluh menit dan lima detik.
Untuk job yang akan Anda perbarui:
gcloud run jobs update JOB_NAME --task-timeout TIMEOUT
YAML
Jika Anda membuat tugas baru, lewati langkah ini. Jika Anda memperbarui tugas yang ada, download konfigurasi YAML-nya:
gcloud run jobs describe JOB_NAME --format export > job.yaml
Perbarui atribut
timeoutSeconds:
:apiVersion: run.googleapis.com/v1 kind: Job metadata: name: JOB spec: template: spec: template: spec: containers: - image: IMAGE timeoutSeconds: TIMEOUT
Ganti:
- JOB_NAME dengan nama tugas Anda.
- IMAGE_URL dengan referensi ke
image container, misalnya,
us-docker.pkg.dev/cloudrun/container/job:latest
. - TIMEOUT dengan durasi maksimum untuk tugas, dengan
menentukan jumlah waktu dan satuannya. Anda hanya dapat menentukan waktu sebagai nilai bilangan bulat dalam detik, menit, atau jam. Misalnya, untuk menyetel
durasi 10 menit 5 detik, tentukan
605
.
Anda juga dapat menentukan detail konfigurasi lainnya, seperti variabel lingkungan atau batas memori.
Perbarui konfigurasi tugas yang ada:
gcloud run jobs replace job.yaml
Terraform
Untuk mempelajari cara menerapkan atau menghapus konfigurasi Terraform, lihat Perintah dasar Terraform.
Tambahkan kode berikut ke resourcegoogle_cloud_run_v2_job
di konfigurasi Terraform Anda:Menampilkan setelan task timeout
Untuk melihat setelan task timeout saat ini dari job Cloud Run Anda:
Konsol
Di konsol Google Cloud , buka halaman tugas Cloud Run:
Klik tugas yang Anda minati untuk membuka halaman Detail pekerjaan.
Klik Lihat dan Edit konfigurasi tugas.
Temukan setelan task timeout di detail konfigurasi.
gcloud
Gunakan perintah berikut:
gcloud run jobs describe JOB_NAME
Temukan setelan task timeout dalam konfigurasi yang ditampilkan.