my file learn about tech container (docker, podman, kubernetes)

http://ariaf.my.id/container_aria/01/06 - probe.html


probe

  • sebelum fokus Replication Controler, Replication set
  • 3 kali pengecekan

pengecekan

  • liveness
    • mengecek kapan perlu merestart pod
    • misal saat liveness probe pada pod tidak meresponse kubelet akan otomatis me restart pod
  • readiness
    • mengecek apakah pod siap menerima trafic
    • jika liveness melakukan restart jika gagal
      • kalo readines akan stop pod jika gagal / tidak siap menerima trafic
  • startup probe
    • melakukan pengecekan hanya saja di awal saja
    • startup probe cocok untuk pod yang membutuhkan proses startup lama
      • ini dapat diguanakn untuk memastikan pod tidak mati oleh kubelet sesbelum sesuai berjalan sempurna

mekanisme pengecekan probe

  • HTTP get (untuk web)
  • TCP Socket (untuk tcp)
  • command exec (menggunakan exec)

configuration

  • template
    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
          # probe
          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
    
  • example
    apiVersion: v1
    kind: Pod
    metadata:
      name: nginx-with-probe
    spec:
      containers:
        - name: nginx
          image: nginx
          ports:
            - containerPort: 80
          # probe
          livenessProbe:
            httpGet:
              path: /
              port: 80
            initialDelaySeconds: 0
            periodSeconds: 10
            timeoutSeconds: 1
            successThreshold: 1
            failureThreshold: 4
    

penjelasan

  • option
    • initialDelaySeconds => waktu tunggu sebelum pengecekan / setelah container jalan (defaultnya 0)
    • periodSeconds => periode / seberapa sering waktu pengecekan dilakukan (default 10)
    • timeoutSeconds => waktu timeout ketika pengecekan gagal (default 1)
    • successTreshold => minimum dianggap sukses setelah berstatus failure (default 1)
    • failureTreshold => minimun dianggap gagal (default 3)

command

show kubectl probe

kubectl describe pod
Liveness:       http-get http://:80/ delay=0s timeout=1s period=10s #success=1 #failure=4

# setelah pengecekan 5 kali dan error trus maka akan crashLoopBackOff
WSL at   bash  ~/kube_aria/dasar ❯  kubectl get pods
NAME                   READY   STATUS             RESTARTS     AGE
nginx-with-probe       1/1     Running            0            8m26s
nginx-with-probe-err   0/1     CrashLoopBackOff   4 (5s ago)   3m30s