全部产品
Search
文档中心

Elastic Container Instance:Gunakan probe untuk melakukan pemeriksaan kesehatan pada kontainer

更新时间:Jul 06, 2025

Liveness probe dan readiness probe adalah mekanisme yang digunakan untuk memeriksa status kontainer. Liveness probe memastikan apakah kontainer berjalan sesuai harapan, sedangkan readiness probe memeriksa apakah kontainer siap melayani permintaan. Topik ini menjelaskan cara mengonfigurasi kedua probe tersebut untuk memantau kesehatan kontainer. Dengan konfigurasi ini, Elastic Container Instance dapat lebih optimal dalam memantau status operasional kontainer serta memastikan tingginya ketersediaan dan stabilitas layanan.

Deskripsi fitur

Elastic Container Instance mendukung penggunaan liveness probe dan readiness probe untuk memeriksa kondisi serta status operasional kontainer.

Probe

Deskripsi

Skenario

Liveness probe

Liveness probe digunakan untuk memeriksa apakah sebuah kontainer bekerja sesuai harapan.

  • Jika pemeriksaan berhasil, kontainer bekerja sesuai harapan.

  • Jika pemeriksaan gagal, sistem akan menentukan apakah akan me-restart kontainer berdasarkan kebijakan restart kontainer yang telah dikonfigurasi.

  • Secara default, jika liveness probe tidak dikonfigurasi, kontainer dianggap selalu bekerja sesuai harapan.

  • Ketika aplikasi sedang berjalan tetapi tidak ada operasi lebih lanjut yang dapat dilakukan pada aplikasi, liveness probe dapat menangkap deadlock. Kemudian, sistem me-restart kontainer agar aplikasi berjalan sesuai harapan terlepas dari adanya bug.

  • Setelah aplikasi berjalan untuk jangka waktu yang lama, aplikasi tersebut mungkin akhirnya beralih ke kondisi rusak. Jika Anda ingin memulihkan aplikasi, Anda harus me-restart aplikasi tersebut. Anda dapat menggunakan liveness probe untuk mendeteksi dan menangani situasi semacam itu.

Readiness probe

Readiness probe digunakan untuk memeriksa apakah sebuah kontainer siap melayani permintaan.

  • Jika pemeriksaan berhasil, kontainer siap menerima permintaan bisnis.

  • Jika pemeriksaan gagal, kontainer belum siap dan sistem tidak akan mengirimkan permintaan ke kontainer hingga pemeriksaan ulang berhasil.

  • Secara default, jika readiness probe tidak dikonfigurasi, kontainer dianggap sudah siap.

Aplikasi mungkin sementara tidak dapat melayani permintaan eksternal ketika aplikasi memuat sejumlah besar data atau file konfigurasi selama startup. Dalam kasus ini, jika Anda tidak ingin menghentikan aplikasi atau mengirimkan permintaan ke aplikasi, Anda dapat menggunakan readiness probe untuk mendeteksi dan mengambil tindakan untuk mengurangi situasi seperti itu.

Deskripsi konfigurasi (mode API)

Saat membuat instance kontainer elastis dengan memanggil operasi CreateContainerGroup, Anda dapat menggunakan parameter-parameter terkait LivenessProbe dan ReadinessProbe untuk mengonfigurasi probe secara berturut-turut. Tabel berikut menjelaskan parameter-parameter tersebut. Untuk informasi lebih lanjut, lihat CreateContainerGroup.

Parameter terkait LivenessProbe

Penting

Saat mengonfigurasi parameter terkait LivenessProbe, Anda hanya dapat memilih salah satu metode pemeriksaan: HttpGet, Exec, atau TcpSocket.

Parameter

Tipe

Nilai contoh

Deskripsi

Container.N.LivenessProbe.HttpGet.Path

string

/healthyz

Path tempat permintaan HTTP GET dikirim ketika Anda menggunakan permintaan HTTP untuk melakukan pemeriksaan kesehatan.

Container.N.LivenessProbe.HttpGet.Port

integer

8888

Port tempat permintaan HTTP GET dikirim ketika Anda menggunakan permintaan HTTP untuk melakukan pemeriksaan kesehatan.

Container.N.LivenessProbe.HttpGet.Scheme

string

HTTP

Tipe protokol permintaan HTTP GET ketika Anda menggunakan permintaan HTTP untuk melakukan pemeriksaan kesehatan. Nilai valid:

  • HTTP

  • HTTPS

Container.N.LivenessProbe.Exec.Command.N

array

cat /tmp/healthy

Perintah N yang akan dijalankan di kontainer ketika Anda menggunakan CLI untuk melakukan pemeriksaan kesehatan.

Container.N.LivenessProbe.TcpSocket.Port

integer

8000

Port tempat permintaan Transmission Control Protocol (TCP) socket dikirim ketika Anda menggunakan TCP socket untuk melakukan pemeriksaan kesehatan.

Container.N.LivenessProbe.InitialDelaySeconds

integer

5

Jumlah detik antara waktu kontainer mulai dan waktu pemeriksaan dimulai.

Container.N.LivenessProbe.PeriodSeconds

integer

1

Interval pemeriksaan kontainer. Nilai default: 10. Nilai minimum: 1. Satuan: detik.

Container.N.LivenessProbe.SuccessThreshold

integer

1

Jumlah keberhasilan berturut-turut minimum yang harus terjadi sebelum pemeriksaan dianggap berhasil. Nilai default: 1. Atur nilai menjadi 1.

Container.N.LivenessProbe.FailureThreshold

integer

3

Jumlah kegagalan berturut-turut minimum yang harus terjadi sebelum pemeriksaan dianggap gagal. Nilai default: 3.

Container.N.LivenessProbe.TimeoutSeconds

integer

1

Periode timeout pemeriksaan kesehatan. Nilai default: 1. Nilai minimum: 1. Satuan: detik.

Parameter terkait ReadinessProbe

Penting

Saat mengonfigurasi parameter terkait ReadinessProbe, Anda hanya dapat memilih salah satu metode pemeriksaan: HttpGet, Exec, atau TcpSocket.

Parameter

Tipe

Nilai contoh

Deskripsi

Container.N.ReadinessProbe.HttpGet.Path

string

/healthyz

Path tempat permintaan HTTP GET dikirim ketika Anda menggunakan permintaan HTTP untuk melakukan pemeriksaan kesehatan.

Container.N.ReadinessProbe.HttpGet.Port

integer

8888

Port tempat permintaan HTTP GET dikirim ketika Anda menggunakan permintaan HTTP untuk melakukan pemeriksaan kesehatan.

Container.N.ReadinessProbe.HttpGet.Scheme

string

HTTP

Tipe protokol permintaan HTTP GET ketika Anda menggunakan permintaan HTTP untuk melakukan pemeriksaan kesehatan. Nilai valid:

  • HTTP

  • HTTPS

Container.N.ReadinessProbe.Exec.Command.N

array

cat /tmp/healthy

Perintah N yang akan dijalankan di kontainer ketika Anda menggunakan CLI untuk melakukan pemeriksaan kesehatan.

Container.N.ReadinessProbe.TcpSocket.Port

integer

8000

Port tempat permintaan TCP socket dikirim ketika Anda menggunakan TCP socket untuk melakukan pemeriksaan kesehatan.

Container.N.ReadinessProbe.InitialDelaySeconds

integer

5

Jumlah detik antara waktu kontainer mulai dan waktu pemeriksaan dimulai.

Container.N.ReadinessProbe.PeriodSeconds

integer

1

Interval pemeriksaan kontainer. Nilai default: 10. Nilai minimum: 1. Satuan: detik.

Container.N.ReadinessProbe.SuccessThreshold

integer

1

Jumlah keberhasilan berturut-turut minimum yang harus terjadi sebelum pemeriksaan dianggap berhasil. Nilai default: 1. Atur nilai menjadi 1.

Container.N.ReadinessProbe.FailureThreshold

integer

3

Jumlah kegagalan berturut-turut minimum yang harus terjadi sebelum pemeriksaan dianggap gagal. Nilai default: 3.

Container.N.ReadinessProbe.TimeoutSeconds

integer

1

Periode timeout pemeriksaan kesehatan. Nilai default: 1. Nilai minimum: 1. Satuan: detik.

Deskripsi konfigurasi (mode konsol)

Saat membuat instance kontainer elastis di halaman beli di konsol Elastic Container Instance, Anda dapat memilih kontainer di bagian Container Configurations, memperluas Pengaturan Lanjutan kontainer, dan mengaktifkan Pemeriksaan Kesehatan. Gambar berikut menunjukkan detail konfigurasi.

Catatan

Saat mengonfigurasi pemeriksaan kesehatan di konsol Elastic Container Instance, hanya metode CLI dan permintaan HTTP yang didukung. Metode TCP socket tidak didukung.

Pemeriksaan Kesehatan 1

Parameter

Deskripsi

Timeout Period

  • Waiting Period: Jumlah detik antara waktu kontainer mulai dan waktu pemeriksaan kesehatan dimulai.

  • Timeout Period: Periode timeout pemeriksaan kesehatan. Jika terjadi kesalahan timeout, pemeriksaan kesehatan gagal.

Method

Pilih metode pemeriksaan berdasarkan kebutuhan bisnis Anda. Nilai valid:

  • Script: Probe menjalankan perintah di kontainer dan memeriksa kode keluar perintah. Jika kode keluar adalah 0, pemeriksaan berhasil.

  • HTTP Request: Probe mengirim permintaan HTTP ke kontainer. Jika kode status yang dikembalikan lebih besar dari atau sama dengan 200 dan kurang dari 400, pemeriksaan berhasil.

Script

Jika Anda mengatur Metode ke Script, Anda harus mengonfigurasi skrip baris perintah yang akan dijalankan di kontainer.

HTTP Request

Ketika Anda mengatur Metode ke HTTP Request, Anda harus mengonfigurasi path, port, dan protokol untuk permintaan HTTP GET.

Contoh konfigurasi

Dalam contoh ini, dibuat instance kontainer elastis dengan liveness probe dan readiness probe yang dikonfigurasi. Kemudian, simulasi pengecualian layanan dilakukan untuk memeriksa efektivitas probe yang dikonfigurasi.

  1. Buat instance kontainer elastis dengan memanggil operasi CreateContainerGroup.

    Kode sampel berikut menunjukkan cara menggunakan TCP socket untuk melakukan pemeriksaan kesehatan:

    ContainerGroupName=test-probe
    # Gunakan gambar NGINX. Buat alamat IP elastis (EIP) dan asosiasikan EIP dengan instance kontainer elastis.
    Container.1.Name=container-1
    Container.1.Image=nginx
    AutoCreateEip=true
    # Konfigurasikan liveness probe. Setelah kontainer berjalan selama 5 detik, kubelet menjalankan liveness probe di port 80 setiap 3 detik. Periode timeout setiap pemeriksaan diatur menjadi 10 detik. Jumlah keberhasilan berturut-turut minimum yang harus terjadi sebelum pemeriksaan dianggap berhasil diatur menjadi 1, dan jumlah kegagalan berturut-turut minimum yang harus terjadi sebelum pemeriksaan dianggap gagal diatur menjadi 3.
    Container.1.LivenessProbe.TcpSocket.Port=80
    Container.1.ReadinessProbe.InitialDelaySeconds=5
    Container.1.LivenessProbe.PeriodSeconds=3
    Container.1.LivenessProbe.SuccessThreshold=1
    Container.1.LivenessProbe.FailureThreshold=3
    Container.N.LivenessProbe.TimeoutSeconds=10
    # Konfigurasikan readiness probe. Setelah kontainer berjalan selama 5 detik, kubelet menjalankan readiness probe di port 80 setiap 3 detik. Periode timeout setiap pemeriksaan diatur menjadi 10 detik. Jumlah keberhasilan berturut-turut minimum yang harus terjadi sebelum pemeriksaan dianggap berhasil diatur menjadi 1, dan jumlah kegagalan berturut-turut minimum yang harus terjadi sebelum pemeriksaan dianggap gagal diatur menjadi 3.
    Container.1.ReadinessProbe.TcpSocket.Port=80
    Container.1.ReadinessProbe.InitialDelaySeconds=5
    Container.1.ReadinessProbe.PeriodSeconds=3
    Container.1.ReadinessProbe.SuccessThreshold=1
    Container.1.ReadinessProbe.FailureThreshold=3
    Container.1.ReadinessProbe.TimeoutSeconds=10
  2. Lihat acara terkait di konsol Elastic Container Instance setelah instance kontainer elastis dibuat.

    Setelah pembuatan instance selesai, klik ID instance kontainer elastis di kolom ID/Nama Grup Kontainer pada halaman daftar instance untuk masuk ke halaman Detail Instance. Klik tab Events untuk melihat acara instance. Anda dapat melihat bahwa kontainer mulai sesuai harapan.

    Pemeriksaan Kesehatan 2

  3. Sambungkan ke kontainer. Untuk informasi lebih lanjut, lihat Sambungkan ke Instance Kontainer Elastis.

  4. Ubah port mendengarkan NGINX di file konfigurasi untuk mensimulasikan pengecualian layanan.

    1. Ubah port mendengarkan NGINX.

      Catatan

      Dalam contoh ini, gambar NGINX yang tidak memiliki Vim terinstal digunakan. Sebelum menjalankan perintah vi berikut untuk mengubah port mendengarkan NGINX, jalankan perintah apt-get update dan apt-get install vim untuk menginstal Vim.

      vi /etc/nginx/conf.d/default.conf

      Sebagai contoh, ubah port mendengarkan NGINX dari port 80 ke port 8080, seperti yang ditunjukkan pada gambar berikut:

      Pemeriksaan Kesehatan 2.png

    2. Mulai ulang NGINX.

      nginx -s reload
  5. Lihat status efektif probe.

    Kontainer secara otomatis memulai ulang beberapa detik setelah Anda memulai ulang NGINX. Lihat acara instance kontainer elastis. Anda dapat melihat bahwa kontainer dimulai ulang setelah liveness probe dan readiness probe masing-masing mengalami kegagalan pemeriksaan.

    Pemeriksaan Kesehatan 4