Kubernetes: Mekanisme Pengecekan (Probe) di Kubernetes
Pada kali ini adalah mengenai probe di kubernetes yaitu semacam mekanisme pengecekan atau health check yang dimana si kubelet di tiap node worker akan memeriksa berdasarkan Liveness, Readiness, dan Probe Startup. Untuk Liveness mekanisme pengecekan apabila Pod tidak memberikan respon atau respon nya tidak sehat maka secara otomatis kubelet akan merestart pod tersebut.
Readiness adalah mekanisme pengecekan apakah pod siap menerima traffic atau tidak jika tidak ada respon atau respon nya kurang sehat maka kubelet akan menghentikan semua traffic ke pod tersebut.
untuk Startup Probe adalah mekanisme pengecekan untuk memastikan apakah pod sudah berjalan dan siap digunakan atau belum, jika belum maka Liveness dan Readiness tidak akan dilakukan oleh kubelet. Mekanisme Startup Probe cocok pada pod yang membutuhkan waktu untuk startup yang cukup lama. memastikan pod tidak dimatikan atau dianggap error oleh kubelet sebelum proses startup pod tersebut selesai.
Jenis Mekanisme Pengecekan Probe
HTTP Get
Melakukan HTTP GET request ke alamat ip dari pod pada port dan juga path tertentu.
TCP Socket
Melakukan pengecekan tcp ke alamat ip pod dan port tertentu.
Command Exec
Mengeksekusi command ke dalam container.
disini kita akan mencoba probe dengan http get ke pod yang akan di hit port dan path nya. disini kita buat secara deklaratif dengan konfigurasi file yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
apiVersion: v1
kind: Pod
metadata:
name: apps-liveness
spec:
containers:
- name: httpd
image: httpd
ports:
- containerPort: 80
livenessProbe:
httpGet:
path: /
port: 80
initialDelaySeconds: 5
periodSeconds: 5
timeoutSeconds: 1
successThreshold: 1
failureThreshold: 3
save dengan nama apps-liveness.yml, kemudian seperti biasa create dengan kubectl
jika ada respon tidak sehat dari pod yang telah kita buat maka value dari restart biasanya akan terlihat berapa kali pod di restart. disini tidak ada terlihat bertambah value dari restart karena memang pod nya memberikan respon baik atau sehat. kita akan coba buat simulasi error yaitu dengan merubah hit point path folder nya ke path yang tidak ada. delete terlebih dahulu pod dengan settingan liveness.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
apiVersion: v1
kind: Pod
metadata:
name: apps-liveness
spec:
containers:
- name: httpd
image: httpd
ports:
- containerPort: 80
livenessProbe:
httpGet:
path: /tesssss
port: 80
initialDelaySeconds: 5
periodSeconds: 5
timeoutSeconds: 1
successThreshold: 1
failureThreshold: 3
dan buat kembali dengan kubectl dengan menambahkan terlebih dahulu pada bagian path ke folder yang tidak ada.
kita lihat diatas kubelet sudah merestart pod sebanyak 4 kali hingga status nya CrashLoopBackOff karena pod tidak merespon dengan baik terus menerus.
jika kita lihat detail informasi dari pod menggunakan
1
kubectl get describe pod apps-liveness
scroll ke baris paling akhir untuk melihat event
terlihat ada pengeceken http get tetapi status code nya 404 yang dimana seharusnya respon status code nya 200 atau range 300 sebagai respon yang sehat. ini adalah link untuk melihat macam macam status code