Pengecekan Pod Pada Kubernetes dengan Probe

Pengecekan Pod Pada Kubernetes dengan Probe

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.

Liveness(Restart) , Readiness(Stop) dan Startup Probe(Cek Proses di Awal)

Saat kita menjalankan pod di node kubernetes dia akan melakukan pengecekan oleh kubelet menggunakan liveness probe, misalnya responnya tidak sehat (healt check) maka kubernetes akan me-restart Pod nya, liveness ini akan melakukan pengecekan secara periodic.

Kubelet menggunakan readiness probe untuk mengecek apakah Pod siap menerima traffic, misalnya aplikasi kita belum siap untuk menerima traffic secara, otomatis kubernetes akan stop traffic yang masuk ke aplikasi kita.

Kubelet menggunakan startup probe untuk mengecek apakah Pod sudah berjalan, Jika belum berjalan, maka kubelet tidak akan melakukan pengecekan liveness dan readiness. 

Startup probe cocok untuk Pod yang membutuhkan proses startup lama, ini dapat digunakan untuk memastikan Pod tidak mati oleh kubelet sebelum selesai berjalan dengan sempurna.

Mekanisme Pengecekan Probe

  • HTTP GET
  • TCP Socket
  • Command Exec

Template Probe

apiVersion: v1
kind: Pod
metadata:
  name: pod-name
  labels:
    label-key1: label-value1
  annotations:
    annotation-key1: annotation-value
    annotation-key2: veri long annotation value, bla bla bla bla bla bla
spec:
  containers:
    - name: container-name
      image: image-name
      ports:
        - containerPort: 80
      livenessProbe:
        httpGet:
          path: /health
          port: 80
        initialDelaySeconds: 0
        periodSeconds: 10
        timeoutSeconds: 1
        successThreshold: 1
        failureThreshold: 3
      readinessProbe:
        httpGet:
          path: /
          port: 80
        initialDelaySeconds: 0
        periodSeconds: 10
        timeoutSeconds: 1
        successThreshold: 1
        failureThreshold: 3
      startupProbe:
        httpGet:
          path: / 
          port: 80
        initialDelaySeconds: 0
        periodSeconds: 10
        timeoutSeconds: 1
        successThreshold: 1
        failureThreshold: 3

Keterangan :
  • initialDelaySeconds 🠞 Pertama Kali Melakukan Pengecekan Menunggu berapa detik
  • periodSeconds 🠞 Period Pengecekan Berapa detik
  • timeoutSeconds 🠞 Waktu Habis Berapa detik
  • successThreshold 🠞 Berapa Kali Pengecekan dianggap di sehat
  • failureThreshold 🠞 Berapa Kali Pengecekan Gagal dianggap tidak sehat

Example Probe

apiVersion: v1
kind: Pod
metadata:
  name: nginx-with-probe
spec:
  containers:
    - name: nginx
      image: nginx
      ports:
        - containerPort: 80
      livenessProbe:
        httpGet:
          path: /
          port: 80
        initialDelaySeconds: 5
        periodSeconds: 5
        timeoutSeconds: 1
        successThreshold: 1
        failureThreshold: 3


membuat pod probe

melihat pod probe

Ketika Pod terjadi error pada "RESTARTS" akan terlihat jumlah pod yang di restart.

Melihat Detail Probe Liveness

kubectl get pod

kubectl describe pod nama-pod

melihat detail probe pada pod

Simulai Error Probe Liveness

kubectl delete pod nginx-with-probe

apiVersion: v1
kind: Pod
metadata:
  name: nginx-with-probe
spec:
  containers:
    - name: nginx
      image: nginx
      ports:
        - containerPort: 80
      livenessProbe:
        httpGet:
          path: /404
          port: 80
        initialDelaySeconds: 5
        periodSeconds: 5
        timeoutSeconds: 1
        successThreshold: 1
        failureThreshold: 3

kubectl create -f nginx-with-probe

Simulasi pod error

kubectl get pod

kubectl port-forward nginx-with-probe 8888:80

Melihat Pod dan Forward Port

web not found

Saat Pod Terjadi Error akan melakukan restart sampai failureThreshold terpenuhi.

pod restart otomatis saat ada error

Ketika Pod "failureThreshold" sebanyak 3, maka pod berubah status menjadi "CrashLoopBackOff"

error crashloopbackoff
Next Post Previous Post
No Comment
Add Comment
comment url