Wednesday 23 February 2022

Belajar Kubernetes 6: Probe

memahami probe - Setelah belajar Namespace, selanjutnya kita akan belajar Probe. Probe adalah sistem pengecekan pada kubernetes yang berfungsi untuk me-restart pod jika ada kesalahan. Probe memiliki 2 jenis pengecekan atau fitur utama yaitu Liveness, Readiness, dan Startup Probe.

  1. Liveness, yaitu pengecekan ketika ada error di pod, maka pod akan otamatis di-restart.
  2. Readiness, yaitu pengecekan ketika ada error di pod, maka semua traffic akan di-blok.
  3. Startup, yaitu pengecekan yang terjadi hanya di awal up pod. Tujuannya adalah memastikan pod berjalan dengan baik dan siap menerima traffic.

Mekanisme Pengecekan Probe

Ada 3 cara melakukan pengecekan probe berdasarkan jenis aplikasi dalam pod yang digunakan, yaitu:

  1. HTTP get, untuk aplikasi web
  2. TCP socket, untuk aplikasi socket server/web
  3. Command Exec, untuk aplikasi general

Konfigurasi Pengecekan

  1. initialDelaySeconds, yaitu delay di awal ketika pod baru dijalankan.
  2. periodSeconds, seberapa sering pengecekan dilakukan (setiap berapa detik).
  3. timeoutSeconds, seberapa lama respon yang diterima. Jika lebih, maka dianggap error.
  4. successThreshold, seberapa banyak pengecekan agar pod bisa dianggap sehat. 
  5. failureThreshold, seberapa banyak pengecekan agar pod dianggap error.

Membuat Pod Dengan Probe Di Dalamnya

apiVersion: v1
kind: Pod
metadata:
  name: pod-name
  labels:
    label-key1: label-value1
  annotations:
    annotation-key1: annotation-value
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

Di dalam konfigurasi probe, kita bisa menambahkan liveness, readiness, dan startup secara bersamaan, atau salah satu sesuai kebutuhan.

Kita akan membuat pod nginx dengan menerapkan liveness probe. Karena nginx dapat diakses melalui http, kita akan menggunakan metode pengecekan httpGet.

pod-nginx.yaml

apiVersion: v1
kind: Pod
metadata:
  name: nginx
  labels:
    label-key1: label-value1
  annotations:
    annotation-key1: annotation-value
spec:
  containers:
    - name: container-name
      image: image-name
      ports:
        - containerPort: 80
      livenessProbe:
        httpGet:
          path: /
          port: 80
        initialDelaySeconds: 5
        periodSeconds: 5
        timeoutSeconds: 1
        successThreshold: 1
        failureThreshold: 3
$ kubectl create -f pod-nginx.yaml

Selanjutnya, kita akan mencoba mematikan lalu menyalakan kembali minikube agar pod yang kita buat error.

$ minikube stop
$ minikube start

Lalu kita cek pod yang kita buat tadi.


Kolom RESTARTS menunjukan bahwa pod berhasil direstart sebanyak 4 kali (karena saya mencoba berkali-kali). Kita bisa melihat log nya melalui perintah berikut.

$ kubectl describe pod nginx

Oke, itulah penjelasan mengenai Prob. Selanjutnya kita akan belajar tentang Replication Controller.

0 komentar

Post a Comment

Hai, Mohon Komentar Yang Relevan Dan Tidak OOT!