Anda dapat mengonfigurasi hook siklus hidup PostStart dan PreStop di konsol Enterprise Distributed Application Service (EDAS) untuk menjalankan operasi kustom segera setelah aplikasi dimulai atau sebelum berhenti. Selain itu, Anda juga dapat mengonfigurasi probe Liveness dan Readiness di konsol EDAS guna memeriksa status aktif dan kesiapan kontainer. Topik ini menjelaskan cara mengonfigurasi hook siklus hidup aplikasi serta probe Liveness dan Readiness untuk kontainer.
Informasi latar belakang
Dalam banyak kasus, Anda perlu menjalankan operasi tertentu tepat sebelum atau sesudah aplikasi dimulai atau dihentikan. Misalnya, men-deploy sumber daya sebelum aplikasi dimulai, melakukan shutdown yang mulus, atau memberi tahu layanan atau aplikasi lain sebelum aplikasi berhenti berjalan. EDAS mengintegrasikan fitur lifecycle hook Kubernetes sehingga Anda dapat mengonfigurasi hook siklus hidup PostStart dan PreStop untuk kontainer.
Saat men-deploy aplikasi dalam kluster Kubernetes, Anda harus memastikan apakah Pod masih aktif dan siap memberikan layanan. EDAS mengintegrasikan fitur probe Pod dari Kubernetes, yang memungkinkan Anda mengonfigurasi probe Liveness untuk menentukan kapan kontainer harus direstart dan probe Readiness untuk memeriksa apakah kontainer siap menerima lalu lintas.
Konfigurasi hook dan probe siklus hidup aplikasi saat membuat aplikasi
Masuk ke Konsol EDAS. Di panel navigasi sebelah kiri, pilih . Halaman Applications akan muncul. Di bilah navigasi atas, pilih wilayah. Di bagian atas halaman, pilih namespace. Di pojok kiri atas, klik Create Application.
Pada langkah Basic Information, tentukan Jenis Kluster dan Lingkungan Runtime Aplikasi, lalu klik Next. Tabel berikut menjelaskan parameter tersebut.
Parameter
Deskripsi
Cluster Type
Jenis kluster tempat Anda ingin men-deploy aplikasi. Pilih Kubernetes Clusters.
Application Runtime Environment
Lingkungan runtime aplikasi. Pilih lingkungan runtime aplikasi berdasarkan jenis aplikasi yang di-host.
Java
Custom: Pilih opsi ini jika Anda ingin menggunakan gambar kustom untuk men-deploy aplikasi di kluster Kubernetes.
Java: Pilih opsi ini jika Anda ingin menggunakan paket JAR universal untuk men-deploy aplikasi sebagai aplikasi Dubbo atau Spring Boot. Anda dapat mengatur parameter Lingkungan Java setelah memilih opsi ini.
Tomcat: Pilih opsi ini jika Anda ingin menggunakan paket WAR universal untuk men-deploy aplikasi sebagai aplikasi Dubbo atau Spring. Anda dapat mengatur parameter Lingkungan Java dan Versi Kontainer setelah memilih opsi ini.
EDAS-Container (HSF): Pilih opsi ini jika Anda ingin menggunakan paket WAR atau FatJar untuk men-deploy aplikasi sebagai aplikasi High-speed Service Framework (HSF). Anda dapat mengatur parameter Lingkungan Java, Versi Pandora, dan Versi Ali-Tomcat setelah memilih opsi ini.
PHP: Pilih opsi ini jika aplikasi adalah aplikasi PHP yang berjalan di Apache HTTP Server.
Node.js, C++, Go, and Other Languages: Pilih opsi ini jika Anda ingin menggunakan gambar kustom untuk men-deploy aplikasi di kluster Kubernetes. Proses konfigurasi untuk aplikasi multi-bahasa tidak dijelaskan dalam topik ini.
Pada langkah Configurations, konfigurasikan informasi lingkungan, informasi dasar, dan metode penyebaran untuk aplikasi, atur parameter sumber daya terkait, lalu klik Next.
Pada langkah Advanced Settings, buka bagian Application Life Cycle Management dan konfigurasikan parameter berikut.
Parameter
Deskripsi
PostStart
Tentukan hook kontainer PostStart. Hook ini langsung dipicu setelah kontainer dibuat. Hook ini memberi tahu Kubernetes bahwa kontainer telah dibuat. Anda tidak perlu pass parameter ke penanganan hook terkait. Jika penanganan hook gagal dieksekusi, sistem akan menghentikan kontainer dan menentukan apakah akan merestart kontainer berdasarkan kebijakan restart kontainer. Untuk informasi selengkapnya, lihat Container Lifecycle Hooks.
PreStop
Tentukan hook kontainer PreStop. Hook ini dipicu sebelum kontainer dihapus. Penanganan hook terkait harus dieksekusi sebelum permintaan penghapusan kontainer dikirim ke daemon Docker. Daemon Docker mengirim sinyal SIGTERM ke dirinya sendiri untuk menghapus kontainer, terlepas dari hasil eksekusi penanganan hook. Untuk informasi selengkapnya, lihat Container Lifecycle Hooks.
TerminationGracePeriod configuration
Tentukan periode timeout yang diizinkan untuk shutdown yang mulus sebuah Pod. Pastikan hook PreStop selesai dan aplikasi memproses sinyal SIGTERM dalam periode timeout tersebut. Anda juga dapat menyesuaikan periode timeout untuk mengontrol durasi penghapusan Pod.
Liveness
Tentukan probe Liveness. Probe ini memantau status kontainer Anda dan memeriksa apakah aplikasi dalam kondisi sehat. Jika aplikasi tidak sehat, kontainer akan dihapus dan dibuat ulang. Untuk informasi selengkapnya, lihat Pod Lifecycle.
Readiness
Tentukan probe Readiness. Probe ini memantau status kontainer Anda dan memeriksa apakah aplikasi telah dimulai dan dapat berjalan sesuai harapan. Jika aplikasi tidak dapat berjalan sesuai harapan, status kontainer akan diperbarui. Untuk informasi selengkapnya, lihat Pod Lifecycle.
Klik Create Application.
Di halaman Creation Completed, periksa informasi di bagian Basic Information, Configurations, dan Advanced Settings, lalu klik Create Application.
Di bagian atas halaman Application Overview, klik View Details. Di halaman Change List, lihat proses perubahan aplikasi. Tunggu beberapa menit hingga aplikasi diterapkan. Setelah proses perubahan aplikasi selesai, lihat status instans di bagian Basic Information pada halaman Application Overview. Jika status menunjukkan bahwa Pod sedang Berjalan, berarti aplikasi telah diterapkan.
Konfigurasi hook dan probe siklus hidup aplikasi saat memperbarui aplikasi
Anda dapat mengonfigurasi hook dan probe siklus hidup aplikasi saat membuat aplikasi atau memperbarui konfigurasi tersebut saat men-deploy ulang aplikasi.
Masuk ke Konsol EDAS.
Di panel navigasi sebelah kiri, klik . Di bilah navigasi atas, pilih wilayah. Di bagian atas halaman, pilih namespace. Pilih Container Service or Serverless Kubernetes Cluster dari daftar drop-down Cluster Type. Kemudian, temukan aplikasi yang ingin Anda deploy dan klik nama aplikasi tersebut.
Di halaman Overview atau Basic information, pilih di pojok kanan atas.
Di halaman Select Deployment Mode, pilih mode penyebaran dan klik Start Deployment di pojok kanan atas bagian mode penyebaran yang ditentukan.
Konfigurasikan parameter lingkungan dan paket penyebaran aplikasi, lalu buka bagian Application Life Cycle Management. Di bagian tersebut, konfigurasikan parameter sesuai kebutuhan bisnis Anda, lalu klik OK.
Parameter
Deskripsi
PostStart
Tentukan hook kontainer PostStart. Hook ini langsung dipicu setelah kontainer dibuat. Hook ini memberi tahu Kubernetes bahwa kontainer telah dibuat. Anda tidak perlu pass parameter ke penanganan hook terkait. Jika penanganan hook gagal dieksekusi, sistem akan menghentikan kontainer dan menentukan apakah akan merestart kontainer berdasarkan kebijakan restart kontainer. Untuk informasi selengkapnya, lihat Container Lifecycle Hooks.
PreStop
Tentukan hook kontainer PreStop. Hook ini dipicu sebelum kontainer dihapus. Penanganan hook terkait harus dieksekusi sebelum permintaan penghapusan kontainer dikirim ke daemon Docker. Daemon Docker mengirim sinyal SIGTERM ke dirinya sendiri untuk menghapus kontainer, terlepas dari hasil eksekusi penanganan hook. Untuk informasi selengkapnya, lihat Container Lifecycle Hooks.
TerminationGracePeriod configuration
Tentukan periode timeout yang diizinkan untuk shutdown yang mulus sebuah Pod. Pastikan hook PreStop selesai dan aplikasi memproses sinyal SIGTERM dalam periode timeout tersebut. Anda juga dapat menyesuaikan periode timeout untuk mengontrol durasi penghapusan Pod.
Liveness
Tentukan probe Liveness. Probe ini memantau status kontainer Anda dan memeriksa apakah aplikasi dalam kondisi sehat. Jika aplikasi tidak sehat, kontainer akan dihapus dan dibuat ulang. Untuk informasi selengkapnya, lihat Pod Lifecycle.
Readiness
Tentukan probe Readiness. Probe ini memantau status kontainer Anda dan memeriksa apakah aplikasi telah dimulai dan dapat berjalan sesuai harapan. Jika aplikasi tidak dapat berjalan sesuai harapan, status kontainer akan diperbarui. Untuk informasi selengkapnya, lihat Pod Lifecycle.
PentingSetelah Anda mengklik OK, aplikasi akan direstart. Disarankan untuk melakukan operasi ini di luar jam sibuk.
Konfigurasi manajemen siklus hidup aplikasi
Konfigurasi hook PostStart dan PreStop
Anda dapat mengonfigurasi hook PostStart dengan cara yang sama seperti mengonfigurasi hook PreStop. Hook dapat dikonfigurasi dalam mode berikut.
Mode | Deskripsi |
Exec | Menjalankan perintah tertentu di dalam kontainer. Jika nilai 0 dikembalikan setelah perintah dijalankan, berarti perintah tersebut berhasil dijalankan tanpa kesalahan. |
HttpGet | Mengirim permintaan HTTP GET ke titik akhir kontainer tertentu. Jika kode status yang dikembalikan lebih besar dari atau sama dengan 200 tetapi kurang dari 400, permintaan tersebut berhasil. Dalam mode HttpGet, Anda dapat mengonfigurasi parameter berikut:
|
Contoh berikut menunjukkan cara mengonfigurasi hook PostStart dalam mode Exec dan HttpGet di EDAS:
Exec mode
Sebagai contoh, Anda ingin menjalankan perintah berikut setelah kontainer dibuat:
echo "container started"Anda dapat mengonfigurasi hook PostStart dalam mode Exec dengan salah satu metode berikut di EDAS:
Metode 1: Pisahkan perintah menjadi parameter-parameter berbeda. Metode ini cocok untuk perintah pendek dengan sedikit parameter.

Metode 2: Mulai shell dan jalankan perintah di dalam shell tersebut. Metode ini cocok untuk perintah panjang dengan banyak parameter.

HttpGet mode
Gambar berikut menunjukkan cara mengonfigurasi hook PostStart dalam mode HttpGet. Setelah kontainer dimulai, permintaan HTTP GET dikirim ke
http://example.com:8080/healthz.
CatatanJika hook PostStart atau PreStop gagal dijalankan, kontainer akan secara otomatis direstart. Informasi kegagalan eksekusi hook dapat ditemukan di catatan perubahan aplikasi.
Konfigurasi probe Liveness dan Readiness
EDAS mendukung jenis probe kontainer Kubernetes berikut.
Probe kontainer | Deskripsi |
LivenessProbe | Memeriksa apakah kontainer masih aktif. Jika pemeriksaan gagal, Kubernetes secara otomatis menghentikan kontainer dan merestart kontainer berdasarkan kebijakan restart. |
ReadinessProbe | Memeriksa apakah kontainer siap menerima lalu lintas. Jika pemeriksaan berhasil, Kubernetes menambahkan Pod ke daftar layanan tempat Pod tersebut berada sehingga Pod mulai menerima lalu lintas. |
Anda dapat mengonfigurasi probe Liveness dan Readiness dalam salah satu mode berikut.
Mode | Deskripsi |
Exec | Menjalankan perintah tertentu di dalam kontainer. Jika nilai 0 dikembalikan setelah perintah dijalankan, pemeriksaan berhasil. |
HttpGet | Mengirim permintaan HTTP GET ke titik akhir kontainer tertentu. Jika kode status yang dikembalikan lebih besar dari atau sama dengan 200 tetapi kurang dari 400, pemeriksaan berhasil. |
TcpSocket | Memeriksa apakah port TCP tertentu yang sesuai dengan alamat IP kontainer diaktifkan. Jika port diaktifkan, pemeriksaan berhasil. |
Dalam mode-mode di atas, Anda dapat mengonfigurasi parameter berikut untuk probe Liveness atau Readiness.
Parameter | Deskripsi |
InitialDelaySeconds | Waktu tunda dari saat kontainer dimulai hingga pemeriksaan probe pertama dilakukan. Satuan: detik. Nilai valid: 1 hingga 1000. |
PeriodSeconds | Interval antara dua pemeriksaan berturut-turut. Satuan: detik. Nilai valid: 1 hingga 1000. |
SuccessThreshold | Jumlah pemeriksaan sukses berturut-turut yang harus terjadi setelah kegagalan sebelum pemeriksaan dinyatakan sukses. Nilai valid: 1 hingga 1000. Nilai valid untuk probe Liveness: 1. |
TimeoutSeconds | Waktu timeout untuk satu pemeriksaan. Satuan: detik. Nilai valid: 1 hingga 1000. |
FailureThreshold | Jumlah pemeriksaan gagal berturut-turut yang harus terjadi setelah keberhasilan sebelum pemeriksaan dinyatakan gagal. Nilai valid: 1 hingga 1000. |
Gambar berikut menunjukkan contoh konfigurasi probe Liveness dalam mode TcpSocket. Dalam contoh ini, parameter Host dikosongkan sehingga alamat IP Pod digunakan sebagai alamat host. Pemeriksaan dilakukan menggunakan port 18081. Pemeriksaan pertama dimulai 60 detik setelah kontainer dimulai, dengan interval 10 detik. Jika salah satu pemeriksaan berhasil, Pod dianggap aktif. Waktu timeout untuk setiap pemeriksaan adalah lima detik. Jika tiga pemeriksaan berturut-turut gagal, Kubernetes akan menghentikan kontainer dan merestartnya berdasarkan kebijakan restart.

Verifikasi hasil
Setelah mengonfigurasi hook siklus hidup aplikasi, Anda dapat memverifikasi konfigurasi tersebut dengan langkah-langkah berikut.
Sebagai contoh, Anda telah mengonfigurasi skrip Hello from the postStart handler sebelum memulai aplikasi. Setelah aplikasi diterapkan, jalankan perintah berikut di web shell Anda:
cat /usr/share/messagePeriksa apakah skrip Hello from the postStart handler ada di file Anda. Jika skrip tersebut ada, konfigurasi tersebut valid.

Grup DingTalk untuk kluster ACK dan Serverless Kubernetes di EDAS
Jika Anda memiliki pertanyaan atau saran saat menggunakan Container Service for Kubernetes (ACK) dan kluster Serverless Kubernetes di EDAS, kirimkan tiket. Untuk memberikan masukan, Anda juga dapat bergabung ke grup DingTalk dengan mencari ID grup DingTalk 23197114.