Mengonfigurasi health check container untuk instance

Health check Cloud Run memastikan bahwa instance container Anda berjalan dengan benar dan dapat melayani traffic. Dengan health check Cloud Run, Anda dapat menyesuaikan kapan container Anda siap menerima permintaan, dan kapan container Anda harus dianggap tidak responsif sehingga memerlukan mulai ulang.

Kasus penggunaan

Anda dapat mengonfigurasi jenis pemeriksaan health check berikut:

  • Pemeriksaan waktu mulai menentukan apakah container telah dimulai dan siap menerima traffic.
  • Pemeriksaan keaktifan menentukan apakah akan memulai ulang container.
    • Memulai ulang container dalam hal ini dapat meningkatkan ketersediaan instance jika terjadi bug.
    • Pemeriksaan keaktifan dimaksudkan untuk memulai ulang instance individual yang tidak dapat dipulihkan dengan cara lain. Pemeriksaan ini harus digunakan terutama untuk kegagalan instance yang tidak dapat dipulihkan, seperti mendeteksi kebuntuan saat instance berjalan, tetapi tidak dapat membuat progres. Anda dapat mewajibkan pemeriksaan keaktifan untuk setiap container menggunakan kebijakan organisasi kustom.
    • Jika instance mengalami kegagalan pemeriksaan berulang kali, Cloud Run akan membatasi mulai ulang instance untuk mencegah loop error yang tidak terkontrol.
  • Pemeriksaan kesiapan (Pratinjau)

    Pemeriksaan kesiapan menentukan kapan instance di instance Cloud Run Anda harus melayani traffic. Pemeriksaan kesiapan dimulai setelah pemeriksaan startup penampung berhasil lulus. Jika instance gagal dalam pemeriksaan kesiapannya di luar nilai minimum kegagalan yang Anda konfigurasi, Cloud Run akan berhenti mengirim traffic baru ke instance tersebut. Cloud Run tidak menghentikan instance dan mengirimkan traffic kembali ke instance saat instance mulai lulus pemeriksaan kesiapannya lagi.

Container Anda harus menerapkan pemeriksaan startup, keaktifan, dan kesiapan secara konsisten. Setelah pemeriksaan startup berhasil, Cloud Run menganggap container Anda siap melayani traffic.

Sebaiknya enkapsulasi logika Anda sehingga pemeriksaan startup memperhitungkan kesiapan. Karena Cloud Run dapat merutekan traffic ke instance baru sebelum pemeriksaan kesiapan pertama selesai, pastikan bahwa lulus pemeriksaan startup juga memastikan kesiapan untuk melayani traffic dengan aman secara langsung. Jika pemeriksaan waktu mulai berhasil, kami akan memperlakukan container sebagai siap menerima traffic.

Mengonfigurasi pemeriksaan startup

Anda dapat mengonfigurasi pemeriksaan HTTP, TCP, dan gRPC menggunakan Google Cloud CLI atau YAML:

gcloud

Startup TCP

Jalankan perintah berikut:

  gcloud beta run instances create INSTANCE \
      --image=IMAGE_URL \
      --startup-probe tcpSocket.port=CONTAINER_PORT,initialDelaySeconds=DELAY,failureThreshold=THRESHOLD,timeoutSeconds=TIMEOUT,periodSeconds=PERIOD

Ganti kode berikut:

  • INSTANCE: nama instance Cloud Run Anda.
  • 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 memiliki bentuk LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
  • CONTAINER_PORT (Opsional): port container yang digunakan untuk instance Anda.
  • DELAY: 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.
  • TIMEOUT (Opsional): 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: frekuensi untuk mencoba kembali pemeriksaan sebelum mematikan container. Nilai defaultnya adalah 3.
  • PERIOD: 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.

Startup HTTP

Tambahkan endpoint HTTP/1 (default Cloud Run, bukan HTTP/2) dalam kode instance Anda untuk merespons pemeriksaan. Nama endpoint (misalnya, /startup, /health, atau /are_you_ready) harus cocok dengan path dalam konfigurasi pemeriksaan. Endpoint health check HTTP dapat diakses secara eksternal dan mengikuti prinsip yang sama seperti endpoint instance HTTP lainnya yang diekspos secara eksternal.

Jalankan perintah berikut:

  gcloud beta run instances create INSTANCE \
      --image=IMAGE_URL \
      --startup-probe httpGet.path=PATH,httpGet.port=CONTAINER_PORT,initialDelaySeconds=DELAY,failureThreshold=THRESHOLD,timeoutSeconds=TIMEOUT,periodSeconds=PERIOD

Ganti kode berikut:

  • INSTANCE: nama instance Cloud Run Anda.
  • 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 memiliki bentuk LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
  • PATH: jalur relatif ke endpoint HTTP, misalnya, /health.
  • CONTAINER_PORT (Opsional): ditetapkan ke port container yang digunakan untuk instance Anda.
  • DELAY (Opsional): 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.
  • THRESHOLD (Opsional): frekuensi untuk mencoba kembali pemeriksaan sebelum mematikan container. Nilai defaultnya adalah 3.
  • TIMEOUT (Opsional): 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.
  • PERIOD (Opsional): 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.

Startup gRPC

Pastikan image container Anda menerapkan protokol health check gRPC.

Jalankan perintah berikut:

  gcloud beta run instances create INSTANCE \
      --image=IMAGE_URL \
      --startup-probe grpc.port=CONTAINER_PORT,grpc.instance=GRPC_INSTANCE,initialDelaySeconds=DELAY,failureThreshold=THRESHOLD,timeoutSeconds=TIMEOUT,periodSeconds=PERIOD

Ganti kode berikut:

  • INSTANCE: nama instance Cloud Run Anda.
  • 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 memiliki bentuk LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
  • GRPC_INSTANCE (Opsional): Jika disetel, nilai ini akan digunakan di kolom instance grpc.health.v1.HealthCheckRequest saat RPC grpc.health.v1.Health.Check dipanggil.
  • CONTAINER_PORT (Opsional): port container yang digunakan untuk instance Anda.
  • DELAY (Opsional): 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.
  • THRESHOLD (Opsional): frekuensi untuk mencoba kembali pemeriksaan sebelum mematikan container. Nilai defaultnya adalah 3.
  • TIMEOUT (Opsional): 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.
  • PERIOD (Opsional): 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.

YAML

Startup TCP

  1. Jika Anda membuat instance baru, lewati langkah ini. Jika Anda memperbarui instance yang ada, download konfigurasi YAML-nya:

    gcloud beta run instances describe INSTANCE --format export > instance.yaml
  2. Konfigurasikan atribut startupProbe seperti yang ditunjukkan berikut:

    apiVersion: serving.knative.dev/v1
    kind: Instance
    metadata:
     name: INSTANCE
     annotations:
        run.googleapis.com/launch-stage: BETA
    spec:
      containers:
      - image: IMAGE_URL
        startupProbe:
          tcpSocket:
            port: CONTAINER_PORT
          initialDelaySeconds: DELAY
          timeoutSeconds: TIMEOUT
          failureThreshold: THRESHOLD
          periodSeconds: PERIOD

    Ganti kode berikut:

    • INSTANCE: nama instance Cloud Run Anda.
    • 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 memiliki bentuk LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
    • CONTAINER_PORT (Opsional): port container yang digunakan untuk instance Anda.
    • DELAY: 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.
    • TIMEOUT (Opsional): 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: frekuensi untuk mencoba kembali pemeriksaan sebelum mematikan container. Nilai defaultnya adalah 3.
    • PERIOD: 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.
  3. Buat atau perbarui instance menggunakan perintah berikut:
    gcloud beta run instances replace instance.yaml

Startup HTTP

Tambahkan endpoint HTTP/1 (default Cloud Run, bukan HTTP/2) dalam kode instance Anda untuk merespons pemeriksaan. Nama endpoint (misalnya, /startup, /health, atau /are_you_ready) harus cocok dengan path dalam konfigurasi pemeriksaan. Endpoint health check HTTP dapat diakses secara eksternal dan mengikuti prinsip yang sama seperti endpoint instance HTTP lainnya yang diekspos secara eksternal.

  1. Jika Anda membuat instance baru, lewati langkah ini. Jika Anda memperbarui instance yang ada, download konfigurasi YAML-nya:

    gcloud beta run instances describe INSTANCE --format export > instance.yaml
  2. Konfigurasikan atribut startupProbe seperti yang ditunjukkan berikut:

    apiVersion: serving.knative.dev/v1
    kind: Instance
    metadata:
      name: INSTANCE
      annotations:
        run.googleapis.com/launch-stage: BETA
    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 kode berikut:

    • INSTANCE: nama instance Cloud Run Anda.
    • 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 memiliki bentuk LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
    • PATH: jalur relatif ke endpoint HTTP, misalnya, /health.
    • CONTAINER_PORT (Opsional): ditetapkan ke port container yang digunakan untuk instance Anda.
    • DELAY (Opsional): 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.
    • THRESHOLD (Opsional): frekuensi untuk mencoba kembali pemeriksaan sebelum mematikan container. Nilai defaultnya adalah 3.
    • Opsional: httpHeaders dapat digunakan untuk menyediakan beberapa header kustom atau berulang menggunakan kolom HEADER_NAME dan HEADER_VALUE seperti yang ditunjukkan.
    • TIMEOUT (Opsional): 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.
    • PERIOD (Opsional): 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.
    1. Jika Anda membuat instance baru, lewati langkah ini. Jika Anda memperbarui instance yang ada, download konfigurasi YAML-nya:

      gcloud beta run instances describe INSTANCE --format export > instance.yaml

Startup gRPC

Pastikan image container Anda menerapkan protokol health check gRPC.

  1. Jika Anda membuat instance baru, lewati langkah ini. Jika Anda memperbarui instance yang ada, download konfigurasi YAML-nya:

    gcloud beta run instances describe INSTANCE --format export > instance.yaml
  2. Konfigurasikan atribut startupProbe seperti yang ditunjukkan berikut:

    apiVersion: serving.knative.dev/v1
    kind: Instance
    metadata:
      name: INSTANCE
      annotations:
        run.googleapis.com/launch-stage: BETA
    spec:
      containers:
      - image: IMAGE_URL
        startupProbe:
          grpc:
            instance: GRPC_INSTANCE
            port: CONTAINER_PORT
          initialDelaySeconds: DELAY
          timeoutSeconds: TIMEOUT
          failureThreshold: THRESHOLD
          periodSeconds: PERIOD

    Ganti kode berikut:

    • INSTANCE: nama instance Cloud Run Anda.
    • 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 memiliki bentuk LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
    • GRPC_INSTANCE (Opsional): Jika disetel, nilai ini akan digunakan di kolom instance grpc.health.v1.HealthCheckRequest saat RPC grpc.health.v1.Health.Check dipanggil.
    • CONTAINER_PORT (Opsional): port container yang digunakan untuk instance Anda.
    • DELAY (Opsional): 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.
    • THRESHOLD (Opsional): frekuensi untuk mencoba kembali pemeriksaan sebelum mematikan container. Nilai defaultnya adalah 3.
    • TIMEOUT (Opsional): 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.
    • PERIOD (Opsional): 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.
  3. Jika Anda membuat instance baru, lewati langkah ini. Jika Anda memperbarui instance yang ada, download konfigurasi YAML-nya:

    gcloud beta run instances describe INSTANCE --format export > instance.yaml

Pemeriksaan waktu mulai TCP default

Jika Anda tidak mengonfigurasi pemeriksaan startup TCP secara eksplisit untuk instance Cloud Run baru, Cloud Run akan otomatis mengonfigurasi pemeriksaan startup TCP dengan nilai default berikut:

startupProbe:
          timeoutSeconds: 240
          periodSeconds: 240
          failureThreshold: 1

Anda dapat mengubah nilai default ini dengan mengikuti petunjuk di bagian konfigurasi probe di halaman ini.

Persyaratan dan perilaku pemeriksaan waktu mulai

Jenis Probe 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 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 Membuat endpoint health check HTTP
Menggunakan HTTP/1
Setelah konfigurasi pemeriksaan, Cloud Run akan membuat permintaan GET HTTP ke endpoint health check (misalnya, /health). Setiap respons 2XX atau 3XX berhasil, yang lainnya menunjukkan kegagalan.

Jika pemeriksaan startup tidak berhasil dalam waktu yang ditentukan (failureThreshold * periodSeconds), yang tidak dapat melebihi 240 detik, container akan dimatikan.
Startup gRPC Menerapkan protokol Health Check gRPC di instance Cloud Run Anda Jika pemeriksaan startup tidak berhasil dalam waktu yang ditentukan (failureThreshold * periodSeconds), yang tidak dapat melebihi 240 detik, container akan dimatikan.

Mengonfigurasi pemeriksaan keaktifan

Anda dapat mengonfigurasi pemeriksaan HTTP dan gRPC menggunakan Google Cloud SDK atau YAML:

gcloud

Keaktifan HTTP

Tambahkan endpoint HTTP/1 (default Cloud Run, bukan HTTP/2) dalam kode instance Anda untuk merespons pemeriksaan. Nama endpoint (misalnya, /startup, /health, atau /are_you_ready) harus cocok dengan path dalam konfigurasi pemeriksaan. Endpoint health check HTTP dapat diakses secara eksternal dan mengikuti prinsip yang sama seperti endpoint instance HTTP lainnya yang diekspos secara eksternal.

Jalankan perintah berikut:

  gcloud beta run instances deploy INSTANCE \
      --image=IMAGE_URL \
      --liveness-probe httpGet.path=PATH,httpGet.port=CONTAINER_PORT,initialDelaySeconds=DELAY,failureThreshold=THRESHOLD,timeoutSeconds=TIMEOUT,periodSeconds=PERIOD

Ganti kode berikut:

  • INSTANCE: nama instance Cloud Run Anda.
  • 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 memiliki bentuk LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
  • PATH: jalur relatif ke endpoint HTTP, misalnya, /health.
  • CONTAINER_PORT (Opsional): ditetapkan ke port container yang digunakan untuk instance Anda.
  • DELAY (Opsional): 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.
  • THRESHOLD (Opsional): frekuensi untuk mencoba kembali pemeriksaan sebelum mematikan container. Nilai defaultnya adalah 3.
  • Opsional. TIMEOUT: 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. PERIOD: periode (dalam detik) untuk melakukan pemeriksaan. Misalnya, 2 melakukan pemeriksaan setiap 2 detik. Tentukan nilai dari 1 detik hingga 3600 detik. Nilai default-nya adalah 10 detik.

Keaktifan gRPC

Pastikan image container Anda menerapkan protokol health check gRPC.

Jalankan perintah berikut:

  gcloud beta run instances deploy INSTANCE \
      --image=IMAGE_URL \
      --liveness-probe grpc.port=CONTAINER_PORT,grpc.service=GRPC_SERVICE,initialDelaySeconds=DELAY,failureThreshold=THRESHOLD,timeoutSeconds=TIMEOUT,periodSeconds=PERIOD

Ganti kode berikut:

  • INSTANCE: nama instance Cloud Run Anda.
  • 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 memiliki bentuk LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
  • GRPC_INSTANCE (Opsional): Jika disetel, nilai ini akan digunakan di kolom instance grpc.health.v1.HealthCheckRequest saat RPC grpc.health.v1.Health.Check dipanggil.
  • CONTAINER_PORT (Opsional): port container yang digunakan untuk instance Anda.
  • DELAY (Opsional): 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.
  • THRESHOLD (Opsional): frekuensi untuk mencoba kembali pemeriksaan sebelum mematikan container. Nilai defaultnya adalah 3.
  • Opsional. TIMEOUT: 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. PERIOD: periode (dalam detik) untuk melakukan pemeriksaan. Misalnya, 2 melakukan pemeriksaan setiap 2 detik. Tentukan nilai dari 1 detik hingga 3600 detik. Nilai default-nya adalah 10 detik.

YAML

Keaktifan HTTP

Tambahkan endpoint HTTP/1 (default Cloud Run, bukan HTTP/2) dalam kode instance Anda untuk merespons pemeriksaan. Nama endpoint (misalnya, /startup, /health, atau /are_you_ready) harus cocok dengan path dalam konfigurasi pemeriksaan. Endpoint health check HTTP dapat diakses secara eksternal dan mengikuti prinsip yang sama seperti endpoint instance HTTP lainnya yang diekspos secara eksternal.

  1. Jika Anda membuat instance baru, lewati langkah ini. Jika Anda mengupdate instance yang ada, download konfigurasi YAML-nya:
    gcloud beta run instances describe INSTANCE --format export > instance.yaml
  2. Konfigurasikan atribut livenessProbe seperti yang ditunjukkan berikut:

    apiVersion: serving.knative.dev/v1
    apiVersion: serving.knative.dev/v1
    kind: Instance
    metadata:
      name: INSTANCE
      annotations:
        run.googleapis.com/launch-stage: BETA
    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 kode berikut:

    • INSTANCE: nama instance Cloud Run Anda.
    • 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 memiliki bentuk LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
    • PATH: jalur relatif ke endpoint HTTP, misalnya, /health.
    • CONTAINER_PORT (Opsional): ditetapkan ke port container yang digunakan untuk instance Anda.
    • DELAY (Opsional): 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.
    • THRESHOLD (Opsional): frekuensi untuk mencoba kembali pemeriksaan sebelum mematikan container. Nilai defaultnya adalah 3.
    • Opsional: httpHeaders dapat digunakan untuk menyediakan beberapa header kustom atau berulang menggunakan kolom HEADER_NAME dan HEADER_VALUE seperti yang ditunjukkan.
    • Opsional. TIMEOUT: 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. PERIOD: periode (dalam detik) untuk melakukan pemeriksaan. Misalnya, 2 melakukan pemeriksaan setiap 2 detik. Tentukan nilai dari 1 detik hingga 3600 detik. Nilai default-nya adalah 10 detik.
  3. Buat atau perbarui instance menggunakan perintah berikut:
    gcloud beta run instances replace instance.yaml

Keaktifan gRPC

Pastikan image container Anda menerapkan protokol health check gRPC.

  1. Jika Anda membuat instance baru, lewati langkah ini. Jika Anda mengupdate instance yang ada, download konfigurasi YAML-nya:
    gcloud beta run instances describe INSTANCE --format export > instance.yaml
  2. Konfigurasikan atribut livenessProbe seperti yang ditunjukkan berikut:

    apiVersion: serving.knative.dev/v1
    apiVersion: serving.knative.dev/v1
    kind: Instance
    metadata:
      name: INSTANCE
      annotations:
        run.googleapis.com/launch-stage: BETA
    spec:
      containers:
      - image: IMAGE_URL
        livenessProbe:
          grpc:
            port: CONTAINER_PORT
            service: GRPC_SERVICE
            initialDelaySeconds: DELAY
            timeoutSeconds: TIMEOUT
            failureThreshold: THRESHOLD
            periodSeconds: PERIOD

    Ganti kode berikut:

    • INSTANCE: nama instance Cloud Run Anda.
    • 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 memiliki bentuk LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
    • GRPC_INSTANCE (Opsional): Jika disetel, nilai ini akan digunakan di kolom instance grpc.health.v1.HealthCheckRequest saat RPC grpc.health.v1.Health.Check dipanggil.
    • CONTAINER_PORT (Opsional): port container yang digunakan untuk instance Anda.
    • DELAY (Opsional): 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.
    • THRESHOLD (Opsional): frekuensi untuk mencoba kembali pemeriksaan sebelum mematikan container. Nilai defaultnya adalah 3.
    • Opsional. TIMEOUT: 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. PERIOD: periode (dalam detik) untuk melakukan pemeriksaan. Misalnya, 2 melakukan pemeriksaan setiap 2 detik. Tentukan nilai dari 1 detik hingga 3600 detik. Nilai default-nya adalah 10 detik.

  3. Buat atau perbarui instance menggunakan perintah berikut:
    gcloud beta run instances replace instance.yaml

Persyaratan dan perilaku pemeriksaan keaktifan

Jenis Probe Persyaratan Perilaku
Keaktifan HTTP Membuat endpoint health check HTTP
Menggunakan HTTP/1
Pemeriksaan keaktifan hanya dimulai setelah pemeriksaan startup berhasil. Setelah konfigurasi pemeriksaan, dan semua pemeriksaan startup berhasil, Cloud Run akan membuat permintaan GET HTTP ke endpoint health check (misalnya, /health). Setiap respons 2XX atau 3XX berhasil, 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 ditayangkan oleh penampung dihentikan dengan kode status HTTP 503. Setelah container dimatikan, penskalaan otomatis Cloud Run akan memulai instance container baru.
Keaktifan gRPC Menerapkan protokol Health Check gRPC di instance Cloud Run Anda Jika Anda mengonfigurasi pemeriksaan startup gRPC, pemeriksaan keaktifan hanya dimulai setelah pemeriksaan startup berhasil.

Setelah pemeriksaan keaktifan dikonfigurasi, dan semua pemeriksaan startup berhasil, Cloud Run akan membuat permintaan health check ke instance.

Jika pemeriksaan keaktifan tidak berhasil dalam waktu yang ditentukan (failureThreshold * periodSeconds), container akan dimatikan menggunakan sinyal SIGKILL. Setelah container dimatikan, penskalaan otomatis Cloud Run akan memulai instance container baru.

Mengonfigurasi pemeriksaan kesiapan

Batasan berikut berlaku untuk pemeriksaan kesiapan:

  • Jika Anda mengaktifkan afinitas sesi, Cloud Run akan terus mengirim permintaan ke instance yang sama, meskipun pemeriksaan kesiapannya gagal.

Anda dapat mengonfigurasi pemeriksaan kesiapan menggunakan Google Cloud CLI atau YAML:

gcloud

Kesiapan HTTP

Tambahkan endpoint HTTP/1 (default Cloud Run, bukan HTTP/2) dalam kode instance Anda untuk merespons pemeriksaan. Nama endpoint (misalnya, /startup, /health, atau /are_you_ready) harus cocok dengan path dalam konfigurasi pemeriksaan. Endpoint health check HTTP dapat diakses secara eksternal dan mengikuti prinsip yang sama seperti endpoint instance HTTP lainnya yang diekspos secara eksternal.

Jalankan perintah berikut:

gcloud beta run instances deploy INSTANCE \
    --image=IMAGE_URL \
    --readiness-probe httpGet.path=PATH,httpGet.port=CONTAINER_PORT,successThreshold=SUCCESS_THRESHOLD,failureThreshold=FAILURE_THRESHOLD,timeoutSeconds=TIMEOUT,periodSeconds=PERIOD

Ganti kode berikut:

  • INSTANCE: nama instance Cloud Run Anda.
  • 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 memiliki bentuk LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
  • PATH (Opsional): jalur relatif ke endpoint HTTP, misalnya, /are_you_ready. Jalur default-nya adalah /.
  • CONTAINER_PORT (Opsional): port container yang digunakan untuk instance Anda. Port default adalah port masuk utama.
  • SUCCESS_THRESHOLD (Opsional): keberhasilan beruntun minimum agar pemeriksaan dianggap berhasil setelah gagal. Defaultnya adalah 2.
  • FAILURE_THRESHOLD (Opsional): jumlah percobaan ulang pemeriksaan sebelum melaporkan kegagalan, yang menyebabkan instance berhenti menerima traffic. Nilai defaultnya adalah 3.
  • TIMEOUT (Opsional): jumlah detik untuk menunggu hingga waktu pemeriksaan habis. Nilai ini tidak boleh melebihi nilai yang ditentukan untuk periodSeconds. Tentukan nilai dari 1 hingga 300. Nilai defaultnya adalah 1.
  • PERIOD (Opsional): periode (dalam detik) untuk melakukan pemeriksaan. Misalnya, 2 melakukan pemeriksaan setiap 2 detik. Tentukan nilai dari 1 hingga 300. Nilai default-nya adalah 10 detik.

Kesiapan gRPC

Pastikan image container Anda menerapkan protokol health check gRPC.

Jalankan perintah berikut:

gcloud beta run instances deploy INSTANCE \
    --image=IMAGE_URL \
    --readiness-probe grpc.port=CONTAINER_PORT,grpc.instance=GRPC_INSTANCE,successThreshold=SUCCESS_THRESHOLD,failureThreshold=FAILURE_THRESHOLD,timeoutSeconds=TIMEOUT,periodSeconds=PERIOD

Ganti kode berikut:

  • INSTANCE: nama instance Cloud Run Anda.
  • 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 memiliki bentuk LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
  • CONTAINER_PORT (Opsional): port container yang digunakan untuk instance Anda. Port default adalah port masuk utama.
  • GRPC_INSTANCE (Opsional): Jika disetel, nilai ini akan digunakan di kolom instance grpc.health.v1.HealthCheckRequest saat RPC grpc.health.v1.Health.Check dipanggil.
  • SUCCESS_THRESHOLD (Opsional): keberhasilan beruntun minimum agar pemeriksaan dianggap berhasil setelah gagal. Defaultnya adalah 2.
  • FAILURE_THRESHOLD (Opsional): jumlah percobaan ulang pemeriksaan sebelum melaporkan kegagalan, yang menyebabkan instance berhenti menerima traffic. Nilai defaultnya adalah 3.
  • TIMEOUT (Opsional): jumlah detik untuk menunggu hingga waktu pemeriksaan habis. Nilai ini tidak boleh melebihi nilai yang ditentukan untuk periodSeconds. Tentukan nilai dari 1 hingga 300. Nilai defaultnya adalah 1.
  • PERIOD (Opsional): periode (dalam detik) untuk melakukan pemeriksaan. Misalnya, 2 melakukan pemeriksaan setiap 2 detik. Tentukan nilai dari 1 hingga 300. Nilai default-nya adalah 10 detik.

YAML

Kesiapan HTTP

Tambahkan endpoint HTTP/1 (default Cloud Run, bukan HTTP/2) dalam kode instance Anda untuk merespons pemeriksaan. Nama endpoint (misalnya, /startup, /health, atau /are_you_ready) harus cocok dengan path dalam konfigurasi pemeriksaan. Endpoint health check HTTP dapat diakses secara eksternal dan mengikuti prinsip yang sama seperti endpoint instance HTTP lainnya yang diekspos secara eksternal.

  1. Jika Anda membuat instance baru, lewati langkah ini. Jika Anda mengupdate instance yang ada, download konfigurasi YAML-nya:
    gcloud beta run instances describe INSTANCE --format export > instance.yaml
  2. Konfigurasikan atribut readinessProbe seperti yang ditunjukkan berikut:

    apiVersion: serving.knative.dev/v1
    kind: Instance
    metadata:
      name: INSTANCE
      annotations:
        run.googleapis.com/launch-stage: BETA
    spec:
      template:
        metadata:
        spec:
          containers:
          - image: IMAGE_URL
            readinessProbe:
              httpGet:
                path: PATH
                port: CONTAINER_PORT
              successThreshold: SUCCESS_THRESHOLD
              failureThreshold: FAILURE_THRESHOLD
              timeoutSeconds: TIMEOUT
              periodSeconds: PERIOD

    Ganti kode berikut:

    • INSTANCE: nama instance Cloud Run Anda.
    • 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 memiliki bentuk LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
    • PATH (Opsional): jalur relatif ke endpoint HTTP, misalnya, /are_you_ready. Jalur default-nya adalah /.
    • CONTAINER_PORT (Opsional): port container yang digunakan untuk instance Anda. Port default adalah port masuk utama.
    • SUCCESS_THRESHOLD (Opsional): keberhasilan beruntun minimum agar pemeriksaan dianggap berhasil setelah gagal. Defaultnya adalah 2.
    • FAILURE_THRESHOLD (Opsional): jumlah percobaan ulang pemeriksaan sebelum melaporkan kegagalan, yang menyebabkan instance berhenti menerima traffic. Nilai defaultnya adalah 3.
    • TIMEOUT (Opsional): jumlah detik untuk menunggu hingga waktu pemeriksaan habis. Nilai ini tidak boleh melebihi nilai yang ditentukan untuk periodSeconds. Tentukan nilai dari 1 hingga 300. Nilai defaultnya adalah 1.
    • PERIOD (Opsional): periode (dalam detik) untuk melakukan pemeriksaan. Misalnya, 2 melakukan pemeriksaan setiap 2 detik. Tentukan nilai dari 1 hingga 300. Nilai default-nya adalah 10 detik.

  3. Buat atau perbarui instance menggunakan perintah berikut:
    gcloud beta run instances replace instance.yaml

Kesiapan gRPC

Pastikan image container Anda menerapkan protokol health check gRPC.

  1. Jika Anda membuat instance baru, lewati langkah ini. Jika Anda mengupdate instance yang ada, download konfigurasi YAML-nya:
    gcloud beta run instances describe INSTANCE --format export > instance.yaml
  2. Konfigurasikan atribut readinessProbe seperti yang ditunjukkan berikut:

    apiVersion: serving.knative.dev/v1
    kind: Instance
    metadata:
      name: INSTANCE
      annotations:
        run.googleapis.com/launch-stage: BETA
    spec:
      template:
        metadata:
        spec:
          containers:
          - image: IMAGE_URL
            readinessProbe:
              grpc:
                port: CONTAINER_PORT
                instance: GRPC_INSTANCE
              successThreshold: SUCCESS_THRESHOLD
              failureThreshold: FAILURE_THRESHOLD
              timeoutSeconds: TIMEOUT
              periodSeconds: PERIOD

    Ganti kode berikut:

    • INSTANCE: nama instance Cloud Run Anda.
    • 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 memiliki bentuk LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
    • CONTAINER_PORT (Opsional): port container yang digunakan untuk instance Anda. Port default adalah port masuk utama.
    • GRPC_INSTANCE (Opsional): Jika disetel, nilai ini akan digunakan di kolom instance grpc.health.v1.HealthCheckRequest saat RPC grpc.health.v1.Health.Check dipanggil.
    • SUCCESS_THRESHOLD (Opsional): keberhasilan beruntun minimum agar pemeriksaan dianggap berhasil setelah gagal. Defaultnya adalah 2.
    • FAILURE_THRESHOLD (Opsional): jumlah percobaan ulang pemeriksaan sebelum melaporkan kegagalan, yang menyebabkan instance berhenti menerima traffic. Nilai defaultnya adalah 3.
    • TIMEOUT (Opsional): jumlah detik untuk menunggu hingga waktu pemeriksaan habis. Nilai ini tidak boleh melebihi nilai yang ditentukan untuk periodSeconds. Tentukan nilai dari 1 hingga 300. Nilai defaultnya adalah 1.
    • PERIOD (Opsional): periode (dalam detik) untuk melakukan pemeriksaan. Misalnya, 2 melakukan pemeriksaan setiap 2 detik. Tentukan nilai dari 1 hingga 300. Nilai default-nya adalah 10 detik.

  3. Buat atau perbarui instance menggunakan perintah berikut:
    gcloud beta run instances replace instance.yaml

Alokasi CPU

  • CPU selalu dialokasikan saat pemeriksaan berjalan.
  • Semua pemeriksaan ditagih untuk konsumsi penggunaan CPU dan memori, tetapi tidak ada biaya berbasis permintaan.

Langkah berikutnya