liveness readiness pada kubernetes

0
433

halo sobat sekolahlinux, kali ini saya bakal coba memberikan sedikit penjelasan tentang liveness readiness pada k8s, dan tentunya juga bagaimana cara implementasinya, oke pertama kita harus tau apa itu liveness dan readiness

  • liveness adalah sebuah paramater yang digunakan oleh k8s untuk menentukan kapan sebuah pods melakukan restart ataupun kapan sebuah pods dinyatakan dalam status ready atau running
  • readiness adalah sebuah paramater yang digunakan oleh k8s untuk menentukan kapan sebuah pods siap menerima trafik, paramater ini digunakan oleh k8s untuk mengalirkan trafik dari kind:service ke backend / pods dibelakangnya

pada liveness dan rediness terdapat beberapa paramater untuk pengecekan, detailnya seperti dibawah

initialDelaySeconds Durasi dalam detik setelah Container dimulai, sebelum probe liveness atau readiness diinisiasi. Nilai bawaannya adalah 0 detik. Nilai minimalnya adalah 0.
periodSeconds Seberapa sering (dalam detik) probe dijalankan. Nilai bawaannya adalah 10 detik. Nilai minimalnya adalah 0.
timeoutSeconds Durasi dalam detik setelah probe mengalami timeout. Nilai bawaannya adalah 1 detik. Nilai minimalnya adalah 0.
successThreshold Jumlah minimal sukses yang berurutan untuk probe dianggap berhasil setelah mengalami kegagalan. Nilai bawaannya adalah 1. Nilanya harus 1 untuk liveness. Nilai minimalnya adalah 1.
failureThreshold Ketika sebuah Pod dimulai dan probe mengalami kegagalan, Kubernetes akan mencoba beberapa kali sesuai nilai failureThreshold sebelum menyerah. Menyerah dalam kasus probe liveness berarti Container akan diulang kembali. Untuk probe readiness, menyerah akan menandai Pod menjadi “tidak siap” (Unready). Nilai bawaannya adalah 3. Nilai minimalnya adalah 1.

selain itu pada pengecekan layer 7 (HTTP) terdapat beberapa paramater seperti dibawah

host Nama dari host yang akan terhubung, nilai bawaannya adalah IP dari Pod. Kamu mungkin juga ingin mengatur “Host” pada httpHeaders.
scheme Skema yang digunakan untuk terhubung pada host (HTTP atau HTTPS). Nilai bawaannya adalah HTTP.
path Path untuk mengakses server HTTP.
httpHeaders Header khusus yang diatur dalam permintaan HTTP. HTTP memperbolehkan header yang berulang.
port Nama atau angka dari porta untuk mengakses Container. Angkanya harus ada di antara 1 sampai 65535.

liveness dan readiness bisa diimplementasikan di kind:pod ataupun kind:deployment, selain itu pengecekan juga bisa dilakukan di layer 4 (TCP) ataupun di layer 7 (gRPC/HTTP), mari kita bahas mulai dari liveness

liveness

TCP

    livenessProbe:
      tcpSocket:
        port: 8080
      initialDelaySeconds: 5
      periodSeconds: 10

HTTP

    livenessProbe:
      httpGet:
        path: /healthz
        port: 8080
      initialDelaySeconds: 5
      periodSeconds: 10

readiness

TCP

    readinessProbe:
      tcpSocket:
        port: 8080
      initialDelaySeconds: 5
      periodSeconds: 10

HTTP

    readinessProbe:
      httpGet:
        path: /healthz
        port: 8080
      initialDelaySeconds: 5
      periodSeconds: 10

 

example liveness & readiness

untuk implementasinya kurang lebih menjadi seperti dibawah ini

apiVersion: v1
kind: Pod
metadata:
  name: service-a
  labels:
    app: service-a
spec:
  containers:
  - name: service-a
    image: service-a:0.1
    ports:
    - containerPort: 8080
    readinessProbe:
      httpGet:
        path: /healthz
        port: 8080
      initialDelaySeconds: 15
      periodSeconds: 20
    livenessProbe:
      tcpSocket:
        port: 8080
      initialDelaySeconds: 5
      periodSeconds: 10