Anda dapat mengonfigurasi pemeriksaan startup HTTP, TCP, dan gRPC, beserta pemeriksaan keaktifan HTTP dan gRPC untuk layanan Cloud Run yang baru dan sudah ada. Konfigurasi ini bervariasi, bergantung pada jenis pemeriksaan.
Perhatikan bahwa pemeriksaan startup TCP dikonfigurasi secara otomatis untuk layanan Cloud Run baru. Lihat Pemeriksaan startup TCP default untuk mengetahui detailnya.
Kasus penggunaan
Anda dapat mengonfigurasi dua jenis pemeriksaan health check:
Pemeriksaan kehidupan menentukan apakah akan memulai ulang container.
- Memulai ulang container dalam kasus ini dapat meningkatkan ketersediaan layanan jika terjadi bug.
- Pemeriksaan keaktifan dimaksudkan untuk memulai ulang setiap instance yang tidak dapat dipulihkan dengan cara lain. Objek ini harus digunakan terutama untuk kegagalan instance yang tidak dapat dipulihkan, misalnya untuk menangkap deadlock saat layanan sedang berjalan, tetapi tidak dapat membuat progres.
Pemeriksaan startup menentukan apakah container telah dimulai dan siap untuk menerima traffic.
- Saat Anda mengonfigurasi pemeriksaan startup, pemeriksaan keaktifan dinonaktifkan hingga pemeriksaan startup menentukan bahwa container dimulai, untuk mencegah gangguan pada startup layanan.
- Pemeriksaan startup sangat berguna jika Anda menggunakan pemeriksaan keaktifan pada container yang dimulai dengan lambat, karena pemeriksaan ini mencegahnya dimatikan sebelum container aktif dan berjalan.
Perlu diperhatikan bahwa saat layanan mengalami kegagalan pemeriksaan keaktifan atau startup berulang, Cloud Run akan membatasi proses mulai ulang instance untuk mencegah loop error yang tidak terkontrol.
Pemeriksaan startup TCP default
Pemeriksaan startup TCP dikonfigurasi secara otomatis untuk layanan Cloud Run baru dengan nilai default. Pemeriksaan default setara dengan hal berikut:
startupProbe: tcpSocket: port: CONTAINER_PORT timeoutSeconds: 240 periodSeconds: 240 failureThreshold: 1
Ganti CONTAINER_PORT dengan port container yang ditetapkan untuk layanan Anda.
Anda dapat mengubah nilai default ini dengan mengikuti petunjuk di bagian konfigurasi pemeriksaan pada halaman ini.
Penagihan dan alokasi CPU
- CPU dialokasikan untuk setiap pemeriksaan.
- Semua pemeriksaan ditagih untuk konsumsi penggunaan CPU dan memori, tetapi tidak ada biaya berbasis permintaan.
Persyaratan dan perilaku pemeriksaan
Jenis Satelit | Persyaratan | Perilaku |
---|---|---|
Startup TCP | Tidak ada | Secara default, Cloud Run membuat koneksi TCP untuk membuka Soket TCP pada port yang ditentukan. Jika Cloud Run tidak dapat terhubung, hal ini menunjukkan adanya kegagalan. Jika pemeriksaan startup tidak berhasil dalam waktu yang ditentukan ( failureThreshold * periodSeconds ), yang tidak dapat melebihi 240 detik, container akan dimatikan. Lihat juga default TCP. |
Startup HTTP | Buat endpoint health check HTTP Gunakan HTTP/1 |
Setelah konfigurasi pemeriksaan, Cloud Run membuat permintaan GET HTTP ke endpoint health check layanan (misalnya, /ready ). Setiap respons antara 200 dan 400 berhasil, sedangkan yang lainnya menunjukkan kegagalan.Jika pemeriksaan startup tidak berhasil dalam waktu yang ditentukan ( failureThreshold * periodSeconds ), yang tidak dapat melebihi 240 detik, container akan dinonaktifkan.Jika pemeriksaan startup HTTP berhasil dalam waktu yang ditentukan, dan Anda telah mengonfigurasi pemeriksaan startup HTTP. |
Keaktifan HTTP | Buat endpoint health check HTTP Gunakan HTTP/1 |
Pemeriksaan keaktifan hanya dimulai setelah pemeriksaan startup berhasil. Setelah konfigurasi pemeriksaan, dan setiap pemeriksaan startup berhasil, Cloud Run akan membuat permintaan GET HTTP ke endpoint health check layanan (misalnya, /health ). Setiap respons antara 200 dan 400 berhasil, sedangkan yang lainnya menunjukkan kegagalan.Jika pemeriksaan keaktifan tidak berhasil dalam waktu yang ditentukan ( failureThreshold * periodSeconds ), container akan dimatikan menggunakan sinyal SIGKILL . Semua permintaan yang tersisa yang masih dilayani oleh penampung akan dihentikan dengan kode status HTTP 503 . Setelah container dihentikan, penskalaan otomatis Cloud Run akan memulai instance container baru. |
Startup gRPC | Mengimplementasikan protokol Health Check gRPC di layanan Cloud Run Anda | Jika pemeriksaan startup tidak berhasil dalam waktu yang ditentukan (failureThreshold * periodSeconds ), yang tidak dapat melebihi 240 detik, container akan dimatikan. |
Keaktifan gRPC | Mengimplementasikan protokol Health Check gRPC di layanan Cloud Run Anda | Jika Anda mengonfigurasi pemeriksaan startup gRPC, pemeriksaan keaktifan hanya dimulai setelah pemeriksaan startup berhasil dikonfigurasi. Setelah pemeriksaan keaktifan dikonfigurasi, dan semua pemeriksaan startup berhasil, Cloud Run akan membuat permintaan health check ke layanan. Jika pemeriksaan keaktifan tidak berhasil dalam waktu yang ditentukan ( failureThreshold * periodSeconds ), container akan dimatikan menggunakan sinyal SIGKILL . Setelah container dihentikan, penskalaan otomatis Cloud Run akan memulai instance container baru. |
Mengonfigurasi pemeriksaan
Setiap perubahan konfigurasi akan menghasilkan revisi baru. Revisi selanjutnya juga akan otomatis mendapatkan setelan konfigurasi ini, kecuali jika Anda melakukan pembaruan eksplisit untuk mengubahnya.
Anda dapat mengonfigurasi pemeriksaan HTTP, TCP, dan gRPC menggunakan Konsol Google Cloud, YAML, atau Terraform:
Konsol
Penting: Jika mengonfigurasi layanan Cloud Run untuk pemeriksaan HTTP, Anda juga harus menambahkan endpoint health check HTTP dalam kode layanan untuk merespons pemeriksaan tersebut. Jika mengonfigurasi pemeriksaan gRPC, Anda juga harus menerapkan protokol Health Check gRPC di layanan Cloud Run.
Pada konsol Google Cloud, buka halaman Cloud Run.
Untuk layanan baru, luaskan Container(s), volume, networking, security untuk menampilkan opsi health check. Untuk layanan yang ada, klik layanan yang ingin Anda konfigurasi, lalu klik Edit and deploy untuk menampilkan opsi health check.
Di bagian Container, buka Health check dan klik Add health check untuk membuka panel konfigurasi Add health check.
Dari menu Select health check type, pilih jenis health check yang ingin Anda tambahkan, misalnya, startup atau keaktifan.
Dari menu Pilih jenis probe, pilih jenis pemeriksaan yang ingin digunakan, misalnya, HTTP atau gRPC. Tindakan ini akan menampilkan formulir konfigurasi probe.
Perhatikan bahwa konfigurasi probe bervariasi menurut jenis probe. Konfigurasikan setelan pemeriksaan:
- Jika Anda menggunakan pemeriksaan HTTP:
- Pastikan layanan Anda menggunakan HTTP/1 (default Cloud Run), bukan HTTP/2.
- Gunakan kolom Path untuk menentukan jalur relatif ke endpoint, misalnya,
/
. - Pilih kotak centang HTTP Headers untuk menentukan header kustom opsional. Kemudian, tentukan nama header di kolom Name dan nilai header di kolom Value. Klik Add HTTP header untuk menentukan header lainnya.
- Untuk Port, tentukan port container yang digunakan untuk layanan Anda.
- Untuk Penundaan awal, tentukan jumlah detik untuk menunggu setelah penampung dimulai sebelum melakukan pemeriksaan pertama. Tentukan nilai dari 0 detik hingga 240 detik. Nilai default-nya adalah 0 detik.
- Untuk Periode, tentukan periode (dalam detik) untuk melakukan pemeriksaan. Misalnya,
2
melakukan pemeriksaan setiap 2 detik. Tentukan nilai dari 1 detik hingga 240 detik. Nilai default-nya adalah 10 detik. - Untuk Batas kegagalan, tentukan frekuensi percobaan kembali pemeriksaan sebelum menonaktifkan container. Nilai defaultnya adalah 3.
- Untuk Timeout, tentukan jumlah detik untuk menunggu hingga waktu tunggu pemeriksaan habis. Nilai ini tidak boleh melebihi nilai yang ditentukan untuk
periodSeconds
. Tentukan nilai dari 1 hingga 240. Nilai defaultnya adalah 1.
- Jika Anda menggunakan pemeriksaan HTTP:
Klik Tambahkan untuk menambahkan nilai minimum baru
YAML
Penting: Jika Anda mengonfigurasi layanan Cloud Run untuk pemeriksaan HTTP, Anda juga harus menambahkan endpoint dalam kode layanan untuk merespons pemeriksaan tersebut. Jika mengonfigurasi pemeriksaan gRPC, Anda juga harus menerapkan protokol Health Check gRPC di layanan Cloud Run.
Startup TPC
-
Jika Anda membuat layanan baru, lewati langkah ini. Jika Anda mengupdate layanan yang ada, download
konfigurasi YAML-nya:
gcloud run services describe SERVICE --format export > service.yaml
Konfigurasikan atribut
startupProbe
seperti yang ditunjukkan berikut:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: metadata: spec: containers: - image: IMAGE_URL startupProbe: tcpSocket: port: CONTAINER_PORT initialDelaySeconds: DELAY timeoutSeconds: TIMEOUT failureThreshold: THRESHOLD periodSeconds: PERIOD
Ganti
- SERVICE dengan nama layanan Cloud Run Anda.
- 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 bentukLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
- (OPSIONAL) CONTAINER_PORT harus ditetapkan ke port container yang digunakan untuk layanan Anda.
- DELAY dengan jumlah detik untuk menunggu setelah container dimulai sebelum melakukan pemeriksaan pertama. Tentukan nilai dari 0 detik hingga 240 detik. Nilai default-nya adalah 0 detik.
- (OPSIONAL) TIMEOUT dengan jumlah detik untuk menunggu hingga waktu pemeriksaan
habis. Nilai ini tidak boleh melebihi nilai yang ditentukan untuk
periodSeconds
. Tentukan nilai dari 1 hingga 240. Nilai defaultnya adalah 1. - THRESHOLD dengan frekuensi untuk mencoba kembali pemeriksaan sebelum menonaktifkan container. Nilai defaultnya adalah 3.
- PERIOD dengan periode (dalam detik) untuk melakukan pemeriksaan.
Misalnya,
2
melakukan pemeriksaan setiap 2 detik. Tentukan nilai dari 1 detik hingga 240 detik. Nilai default-nya adalah 10 detik.
-
Buat atau update layanan menggunakan perintah berikut:
gcloud run services replace service.yaml
Startup HTTP
-
Jika Anda membuat layanan baru, lewati langkah ini. Jika Anda mengupdate layanan yang ada, download
konfigurasi YAML-nya:
gcloud run services describe SERVICE --format export > service.yaml
Pastikan layanan Anda menggunakan HTTP/1 (default Cloud Run), bukan HTTP/2.
Konfigurasikan atribut
startupProbe
seperti yang ditunjukkan berikut:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: metadata: spec: containers: - image: IMAGE_URL startupProbe: httpGet: path: PATH port: CONTAINER_PORT httpHeaders: - name: HEADER_NAME value: HEADER_VALUE initialDelaySeconds: DELAY timeoutSeconds: TIMEOUT failureThreshold: THRESHOLD periodSeconds: PERIOD
ganti
- SERVICE dengan nama layanan Cloud Run Anda.
- 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 bentukLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
- PATH dengan jalur relatif ke endpoint HTTP, misalnya,
/ready
. - (OPSIONAL) CONTAINER_PORT harus ditetapkan ke port container yang digunakan untuk layanan Anda.
- (OPSIONAL)
httpHeaders
dapat digunakan untuk menyediakan beberapa header kustom atau berulang menggunakan kolom HEADER_NAME dan HEADER_VALUE seperti yang ditunjukkan. - (OPSIONAL) DELAY dengan jumlah detik untuk menunggu setelah container dimulai sebelum melakukan pemeriksaan pertama. Tentukan nilai dari 0 detik hingga 240 detik. Nilai default-nya adalah 0 detik.
- (OPSIONAL) TIMEOUT dengan jumlah detik untuk menunggu hingga waktu pemeriksaan
habis. Nilai ini tidak boleh melebihi nilai yang ditentukan untuk
periodSeconds
. Tentukan nilai dari 1 hingga 240. Nilai defaultnya adalah 1. - (OPSIONAL) THRESHOLD dengan frekuensi untuk mencoba kembali pemeriksaan sebelum menonaktifkan container. Nilai defaultnya adalah 3.
- (OPSIONAL) PERIOD dengan periode (dalam detik) untuk melakukan pemeriksaan.
Misalnya,
2
melakukan pemeriksaan setiap 2 detik. Tentukan nilai dari 1 detik hingga 240 detik. Nilai default-nya adalah 10 detik.
-
Buat atau update layanan menggunakan perintah berikut:
gcloud run services replace service.yaml
Keaktifan HTTP
-
Jika Anda membuat layanan baru, lewati langkah ini. Jika Anda mengupdate layanan yang ada, download
konfigurasi YAML-nya:
gcloud run services describe SERVICE --format export > service.yaml
Pastikan layanan Anda menggunakan HTTP/1 (default Cloud Run), bukan HTTP/2.
Konfigurasikan atribut
livenessProbe
seperti yang ditunjukkan berikut:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: metadata: spec: containers: - image: IMAGE_URL livenessProbe: httpGet: path: PATH port: CONTAINER_PORT httpHeaders: - name: HEADER_NAME value: HEADER_VALUE initialDelaySeconds: DELAY timeoutSeconds: TIMEOUT failureThreshold: THRESHOLD periodSeconds: PERIOD
Ganti
- SERVICE dengan nama layanan Cloud Run Anda.
- 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 bentukLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
- PATH dengan jalur relatif ke endpoint HTTP, misalnya,
/ready
. - (OPSIONAL) CONTAINER_PORT harus ditetapkan ke port container yang digunakan untuk layanan Anda.
- (OPSIONAL)
httpHeaders
dapat digunakan untuk menyediakan beberapa header kustom atau berulang menggunakan kolom HEADER_NAME dan HEADER_VALUE seperti yang ditunjukkan. - (OPSIONAL) DELAY dengan jumlah detik untuk menunggu setelah container dimulai sebelum melakukan pemeriksaan pertama. Tentukan nilai dari 0 detik hingga 240 detik. Nilai default-nya adalah 0 detik.
- (OPSIONAL) TIMEOUT dengan jumlah detik untuk menunggu hingga waktu pemeriksaan
habis. Nilai ini tidak boleh melebihi nilai yang ditentukan untuk
periodSeconds
. Tentukan nilai dari 1 hingga 3600. Nilai defaultnya adalah 1. - (OPSIONAL) THRESHOLD dengan frekuensi untuk mencoba kembali pemeriksaan sebelum menonaktifkan container. Nilai defaultnya adalah 3.
- (OPSIONAL) PERIOD dengan periode (dalam detik) untuk melakukan pemeriksaan.
Misalnya,
2
melakukan pemeriksaan setiap 2 detik. Tentukan nilai dari 1 detik hingga 3.600 detik. Nilai default-nya adalah 10 detik.
-
Buat atau update layanan menggunakan perintah berikut:
gcloud run services replace service.yaml
Startup gRPC
-
Jika Anda membuat layanan baru, lewati langkah ini. Jika Anda mengupdate layanan yang ada, download
konfigurasi YAML-nya:
gcloud run services describe SERVICE --format export > service.yaml
Konfigurasikan atribut
startupProbe
seperti yang ditunjukkan berikut:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: metadata: spec: containers: - image: IMAGE_URL startupProbe: grpc: service: GRPC_SERVICE port: CONTAINER_PORT initialDelaySeconds: DELAY timeoutSeconds: TIMEOUT failureThreshold: THRESHOLD periodSeconds: PERIOD
Ganti
- SERVICE dengan nama layanan Cloud Run Anda.
- 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 bentukLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
- GRPC_SERVICE dengan nama layanan gRPC yang akan dikirimi pemeriksaan kesehatan.
- (OPSIONAL) CONTAINER_PORT harus ditetapkan ke port container yang digunakan untuk layanan Anda.
- (OPSIONAL) DELAY dengan jumlah detik untuk menunggu setelah container dimulai sebelum melakukan pemeriksaan pertama. Tentukan nilai dari 0 detik hingga 240 detik. Nilai default-nya adalah 0 detik.
- (OPSIONAL) WAKTU TUNGGU dengan jumlah detik untuk menunggu hingga waktu pemeriksaan habis. Nilai ini tidak boleh melebihi nilai yang ditentukan untuk periodSeconds. Tentukan nilai dari 1 hingga 240. Nilai defaultnya adalah 1.
- (OPSIONAL) THRESHOLD dengan frekuensi untuk mencoba kembali pemeriksaan sebelum menonaktifkan container. Nilai defaultnya adalah 3.
- (OPSIONAL) PERIOD dengan periode (dalam detik) untuk melakukan pemeriksaan.
Misalnya,
2
melakukan pemeriksaan setiap 2 detik. Tentukan nilai dari 1 detik hingga 240 detik. Nilai default-nya adalah 10 detik.
-
Buat atau update layanan menggunakan perintah berikut:
gcloud run services replace service.yaml
Keaktifan gRPC
-
Jika Anda membuat layanan baru, lewati langkah ini. Jika Anda mengupdate layanan yang ada, download
konfigurasi YAML-nya:
gcloud run services describe SERVICE --format export > service.yaml
Konfigurasikan atribut
livenessProbe
seperti yang ditunjukkan berikut:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: metadata: spec: containers: - image: IMAGE_URL livenessProbe: grpc: port: CONTAINER_PORT service: GRPC_SERVICE initialDelaySeconds: DELAY timeoutSeconds: TIMEOUT failureThreshold: THRESHOLD periodSeconds: PERIOD
Ganti
- SERVICE dengan nama layanan Cloud Run Anda.
- 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 bentukLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
- (OPSIONAL) CONTAINER_PORT harus ditetapkan ke port container yang digunakan untuk layanan Anda.
- GRPC_SERVICE dengan nama layanan gRPC yang akan dikirimi pemeriksaan kesehatan.
- (OPSIONAL) DELAY dengan jumlah detik untuk menunggu setelah container dimulai sebelum melakukan pemeriksaan pertama. Tentukan nilai dari 0 detik hingga 240 detik. Nilai default-nya adalah 0 detik.
- (OPSIONAL) TIMEOUT dengan jumlah detik untuk menunggu hingga waktu pemeriksaan
habis. Nilai ini tidak boleh melebihi nilai yang ditentukan untuk
periodSeconds
. Tentukan nilai dari 1 hingga 3600. Nilai defaultnya adalah 1. - (OPSIONAL) THRESHOLD dengan frekuensi untuk mencoba kembali pemeriksaan sebelum menonaktifkan container. Nilai defaultnya adalah 3.
- (OPSIONAL) PERIOD dengan periode (dalam detik) untuk melakukan pemeriksaan. Misalnya,
2
melakukan pemeriksaan setiap 2 detik. Tentukan nilai dari 1 detik hingga 3.600 detik. Nilai default-nya adalah 10 detik.
-
Buat atau update layanan menggunakan perintah berikut:
gcloud run services replace service.yaml
Terraform
Penting: Jika Anda mengonfigurasi layanan Cloud Run untuk pemeriksaan HTTP, Anda juga harus menambahkan endpoint dalam kode layanan untuk merespons pemeriksaan tersebut. Jika mengonfigurasi pemeriksaan gRPC, Anda juga harus menerapkan protokol Health Check gRPC di layanan Cloud Run.
Untuk mempelajari cara menerapkan atau menghapus konfigurasi Terraform, lihat Perintah dasar Terraform.
Startup TCP
Konfigurasikan layanan Cloud Run dengan atribut startup_probe
seperti yang ditunjukkan:
Startup HTTP
Pastikan layanan Anda menggunakan HTTP/1 (default Cloud Run), bukan HTTP/2.
Konfigurasikan layanan Cloud Run dengan atribut startup_probe
seperti yang ditunjukkan:
Keaktifan HTTP
Pastikan layanan Anda menggunakan HTTP/1 (default Cloud Run), bukan HTTP/2.
Konfigurasikan layanan Cloud Run dengan atribut liveness_probe
seperti yang ditunjukkan:
Startup gRPC
Konfigurasikan layanan Cloud Run dengan atribut startup_probe
seperti yang ditunjukkan:
Keaktifan gRPC
Konfigurasikan layanan Cloud Run dengan atribut liveness_probe
seperti yang ditunjukkan:
Membuat endpoint health check HTTP
Jika mengonfigurasi layanan Cloud Run untuk pemeriksaan startup HTTP atau
pemeriksaan keaktifan, Anda perlu menambahkan endpoint dalam kode layanan untuk merespons
pemeriksaan tersebut. Endpoint dapat memiliki nama apa pun yang Anda inginkan, misalnya,
/startup
atau /ready
, tetapi nama tersebut harus cocok dengan nilai yang Anda tentukan untuk
path
dalam konfigurasi pemeriksaan. Misalnya, jika Anda menentukan /ready
untuk
pemeriksaan startup HTTP, tentukan path
dalam konfigurasi pemeriksaan Anda seperti yang ditunjukkan di bawah ini:
startupProbe: httpGet: path: /ready
Endpoint HTTP Healthcheck dapat diakses secara eksternal dan mengikuti prinsip yang sama seperti endpoint layanan HTTP lainnya yang diekspos secara eksternal.