Secara default, setiap tugas berjalan selama maksimum 10 menit: Anda dapat mengubahnya menjadi waktu yang lebih singkat atau lebih lama hingga 168 jam (7 hari). Untuk tugas yang menggunakan GPU, batas waktu maksimum yang tersedia adalah 1 jam.
Anda dapat menetapkan 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.
Anda dapat menentukan durasi menggunakan simbol satuan waktu. Anda dapat menentukan durasi timeout sebagai nilai bilangan bulat dalam detik, menit, atau jam. Misalnya, untuk menetapkan durasi timeout sebagai 10 menit dan 5 detik, tentukan nilai sebagai 605 detik.
Jika job Anda mengaktifkan percobaan ulang, setelan timeout akan diterapkan ke setiap percobaan memulai sebuah task. Jika percobaan memulai task tidak kunjung selesai dalam kurun waktu yang telah ditentukan, maka task akan dihentikan. Semakin lama job berjalan, semakin besar kemungkinan job mengalami masalah yang menyebabkan job gagal, seperti kegagalan dependensi hilir, error kehabisan memori, atau masalah infrastruktur. Sebaiknya aktifkan percobaan ulang untuk semua job, terutama untuk job dengan tugas yang berjalan lama.
Peristiwa pemeliharaan
Job secara berkala menjalani peristiwa pemeliharaan. Selama peristiwa pemeliharaan, semua task yang sedang berlangsung akan dimigrasikan ke komputer lain. Dalam proses tersebut akan ada jeda singkat saat task sedang dimigrasikan.
Proses migrasi mempertahankan status tugas, dengan satu pengecualian penting: koneksi jaringan VPC keluar akan terputus selama peristiwa pemeliharaan. Sebaiknya gunakan library klien yang dapat menangani reset koneksi sesekali.
Cloud Run akan mencetak pesan log setiap kali task diimigrasi, saat mulai dan saat selesai.
Selain itu, jika ingin memantau atau menangani peristiwa 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 untuk mengonfigurasi job Cloud Run, minta administrator Anda untuk memberikan peran IAM berikut:
-
Developer Cloud Run (
roles/run.developer) di job 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 job 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 Google Cloud konsol, buka halaman Jobs Cloud Run:
Klik Deploy container untuk mengisi halaman setelan tugas awal. Jika Anda mengonfigurasi tugas yang ada, pilih tugas, lalu klik View and edit job configuration.
Klik Containers, Connections, Security untuk memperluas halaman properti tugas.
Klik tab General.
- Di kolom Task timeout, tentukan durasi maksimum untuk task yang ada di job tersebut, lalu pilih Time unit. Anda hanya dapat menentukan durasi timeout
sebagai nilai bilangan bulat dalam second, minute, atau hour. Misalnya, untuk menetapkan durasi 10 menit dan 5 detik, di kolom Task timeout, tentukan
605, lalu pilih Time unit sebagai second.
- Di kolom Task timeout, tentukan durasi maksimum untuk task yang ada di job tersebut, lalu pilih Time unit. Anda hanya dapat menentukan durasi timeout
sebagai nilai bilangan bulat dalam second, minute, atau hour. Misalnya, untuk menetapkan durasi 10 menit dan 5 detik, di kolom Task timeout, tentukan
Klik Create atau Update.
gcloud
Untuk job yang akan Anda perbarui:
gcloud run jobs create JOB_NAME --image IMAGE_URL --task-timeout TIMEOUT
Ganti
- JOB_NAME dengan nama tugas Anda.
- IMAGE_URL: 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,
10m5sterbaca sepuluh menit dan lima detik.
Untuk job yang akan Anda perbarui:
gcloud run jobs update JOB_NAME --task-timeout TIMEOUT
YAML
Jika Anda membuat job baru, lewati langkah ini. Jika Anda memperbarui job 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: referensi ke
image container—misalnya,
us-docker.pkg.dev/cloudrun/container/job:latest. - TIMEOUT dengan durasi maksimum untuk task,
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
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 Google Cloud konsol, buka halaman tugas Cloud Run:
Klik tugas yang Anda minati untuk membuka halaman Job details.
Klik View and Edit job 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.