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.
|
|
Readiness probe | Readiness probe digunakan untuk memeriksa apakah sebuah kontainer siap melayani permintaan.
| 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
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:
|
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
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:
|
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.
Saat mengonfigurasi pemeriksaan kesehatan di konsol Elastic Container Instance, hanya metode CLI dan permintaan HTTP yang didukung. Metode TCP socket tidak didukung.

Parameter | Deskripsi |
Timeout Period |
|
Method | Pilih metode pemeriksaan berdasarkan kebutuhan bisnis Anda. Nilai valid:
|
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.
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=10Lihat 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.

Sambungkan ke kontainer. Untuk informasi lebih lanjut, lihat Sambungkan ke Instance Kontainer Elastis.
Ubah port mendengarkan NGINX di file konfigurasi untuk mensimulasikan pengecualian layanan.
Ubah port mendengarkan NGINX.
CatatanDalam contoh ini, gambar NGINX yang tidak memiliki Vim terinstal digunakan. Sebelum menjalankan perintah vi berikut untuk mengubah port mendengarkan NGINX, jalankan perintah
apt-get updatedanapt-get install vimuntuk menginstal Vim.vi /etc/nginx/conf.d/default.confSebagai contoh, ubah port mendengarkan NGINX dari port 80 ke port 8080, seperti yang ditunjukkan pada gambar berikut:

Mulai ulang NGINX.
nginx -s reload
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.
