Dalam aplikasi berbasis cloud-native, arsitektur layanan mikro, atau aplikasi berbasis kontainer, Anda dapat mengonfigurasi probes liveness dan readiness untuk memastikan bahwa aplikasi dalam kondisi sehat dan siap menerima lalu lintas. Dibandingkan dengan kebijakan probing di Kubernetes open-source, Knative menggunakan probing yang lebih sering dan aktif untuk mengurangi waktu mulai dingin pod serta mempercepat transisi pod dari status startup ke running.
Cara Kerjanya
Anda dapat mengonfigurasi probes liveness dan readiness untuk memastikan bahwa aplikasi Anda dalam kondisi sehat dan siap menerima lalu lintas.
Probes Liveness: Digunakan untuk memantau status kesehatan kontainer. Jika sebuah kontainer berada dalam status Gagal atau layanan di dalam kontainer gagal diluncurkan, probe liveness akan me-restart kontainer tersebut.
Probes Readiness: Digunakan untuk mengelola penskalaan otomatis aplikasi secara efisien guna memastikan hanya pod dalam status Siap yang dapat menerima lalu lintas. Hal ini meningkatkan stabilitas dan kecepatan respons layanan.
Gambar berikut menunjukkan cara kerja probing di Knative.
Tentukan probes readiness atau liveness dalam CustomResource (CR) Layanan Knative.
Kubelet mengirimkan probes liveness untuk mendeteksi kontainer yang ditentukan.
Knative menulis ulang dan mengirimkan probes readiness ke kontainer sidecar queue-proxy. Probing dimulai dari komponen Activator atau kontainer queue-proxy untuk memastikan seluruh tautan jaringan telah dikonfigurasi dan siap.
CatatanJika tidak ada probes yang didefinisikan, Knative mendefinisikan probes readiness default untuk kontainer utama. Probes readiness default memeriksa soket TCP pada port layanan Knative.
Knative mendefinisikan probes readiness untuk kontainer queue-proxy. Status queue-proxy menggabungkan hasil dari probes readiness yang ditulis ulang oleh semua kontainer, termasuk kontainer utama dan kontainer sidecar. Ketika kontainer queue-proxy memberikan respons sukses dan lapisan jaringan Knative telah dikonfigurasi, Knative menganggap bahwa pod dalam kondisi sehat dan siap menerima lalu lintas.
Prasyarat
Knative telah diterapkan di kluster Anda. Untuk informasi lebih lanjut, lihat atau Terapkan dan kelola Knative.
Konfigurasikan port pendengaran kustom
Metode konfigurasi
Tambahkan bidang readinessProbe atau livenessProbe ke Layanan Knative untuk mengonfigurasi probes readiness dan liveness, masing-masing. Metode konfigurasi sama dengan yang digunakan di Kubernetes. Untuk informasi lebih lanjut, lihat Konfigurasikan Probes Liveness, Readiness, dan Startup.
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
name: runtime
namespace: default
spec:
template:
spec:
containers:
- name: first-container
image: <YOUR-IMAGE> # Ganti <YOUR-IMAGE> dengan nama gambar yang sebenarnya.
ports:
- containerPort: 8080
readinessProbe: # Periksa kapan kontainer siap setelah kontainer dimulai.
httpGet: # Port yang digunakan untuk probes liveness melalui koneksi soket TCP.
port: 8080 # Tentukan port selain containerPort untuk probes readiness.
path: "/health"
livenessProbe: # Periksa apakah kontainer hidup.
tcpSocket:
port: 8080
- name: second-container
image: <YOUR-IMAGE>
readinessProbe:
httpGet:
port: 8089
path: "/health"
livenessProbe:
tcpSocket:
port: 8089Jenis probe yang didukung
Jenis Probe | Deskripsi |
| Kirim permintaan HTTP GET untuk memeriksa status kesehatan dan kelangsungan hidup layanan, serta konfirmasi apakah probes berhasil berdasarkan kode status yang dikembalikan. |
| Mencoba membuat koneksi TCP untuk memeriksa status kesehatan dan kelangsungan hidup layanan. |
| Jalankan perintah tertentu di dalam kontainer dan konfirmasi apakah probes berhasil berdasarkan kode keluar. |
| Panggil metode yang didefinisikan oleh Protokol Pemeriksaan Kesehatan gRPC untuk memeriksa status kesehatan dan kelangsungan hidup layanan. |
Probes PreStop kustom tidak didukung karena Knative sudah menyediakan hook PreStop bawaan untuk mendukung shutdown yang lancar.
Referensi
Anda dapat mengonfigurasi Sertifikat untuk mengakses Layanan melalui HTTPS menggunakan nama domain kustom. Untuk informasi lebih lanjut, lihat Konfigurasikan Sertifikat untuk Mengakses Layanan melalui HTTPS.