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 lebih dari 24 jam tersedia di 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 menetapkan durasi waktu tunggu sebagai
10 menit dan 5 detik, tentukan nilainya sebagai 605
detik.
Jika tugas Anda mengaktifkan percobaan ulang, setelan waktu tunggu akan diterapkan ke setiap percobaan memulai sebuah tugas. Jika percobaan memulai task tidak kunjung selesai dalam kurun waktu yang telah ditentukan, maka task akan dihentikan. Makin lama tugas berjalan, makin besar kemungkinannya untuk mengalami masalah yang menyebabkan kegagalan, seperti kegagalan dependensi downstream, error kehabisan memori, atau masalah infrastruktur. Sebaiknya aktifkan percobaan ulang untuk semua tugas, tetapi terutama untuk tugas yang berjalan lama.
Peristiwa pemeliharaan
Tugas akan mengalami peristiwa pemeliharaan secara berkala. Selama pemeliharaan, semua tugas yang sedang berlangsung akan dimigrasikan dari komputer saat ini ke komputer lain. Ada jeda singkat dalam pemrosesan saat tugas dimigrasikan.
Proses migrasi mempertahankan status tugas, dengan satu pengecualian yang penting: koneksi jaringan VPC keluar terputus selama peristiwa pemeliharaan. Sebaiknya gunakan library klien yang dapat menangani reset koneksi sesekali.
Cloud Run akan mencetak pesan log setiap kali tugas dimulai dan selesai dimigrasikan.
Selain itu, jika ingin memantau atau menangani peristiwa pemeliharaan dengan cara tertentu,
Anda dapat menangkap sinyal SIGTSTP
, yang akan dikirim 10 detik sebelum tugas
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 diperlukan 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
) 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 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
Pada konsol Google Cloud, buka halaman tugas Cloud Run:
Klik Deploy container dan pilih Job untuk mengisi halaman setelan tugas awal. Jika Anda mengonfigurasi tugas yang sudah ada, pilih tugas, lalu klik Edit.
Klik Container, variabel dan secret, koneksi, keamanan untuk memperluas halaman properti tugas.
Klik tab General.
- Di kolom Task timeout, tentukan durasi maksimum untuk tugas dalam
job saat ini, lalu pilih Time unit. 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 Task timeout, tentukan
605
, dan pilih Time unit sebagai second.
- Di kolom Task timeout, tentukan durasi maksimum untuk tugas dalam
job saat ini, lalu pilih Time unit. 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 Task timeout, 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 container image,
contohnya,
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 mengupdate 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,
tentukan jumlah waktu dan satuannya. Anda hanya dapat menentukan waktu
sebagai nilai bilangan bulat dalam detik, menit, atau jam. Misalnya, untuk menetapkan
durasi 10 menit dan 5 detik, tentukan
605s
.
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.
Untuk menentukan waktu tunggu tugas untuk tugas Cloud Run, gunakan resource google_cloud_run_v2_job
dan terapkan cuplikan berikut ke file main.tf
Anda:
Menampilkan setelan task timeout
Untuk melihat setelan task timeout saat ini dari job Cloud Run Anda:
Konsol
Pada konsol Google Cloud, buka halaman tugas Cloud Run.
Klik tugas yang Anda minati untuk membuka halaman Detail pekerjaan.
Klik tab Configuration.
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.