Blog

Kubernetes Liveness Probe

Kubernetes bir container’ın ne zaman yeniden başlatılacağını, hazır olduğunu ve başlatılacağını bilmek için Probe’ları kullanır. Temel olarak Probe’lar containerların sağlığını kontrol eder ve yanıt vermeyen uygulamanın yeniden başlatılmasını sağlar. Liveness, Readless ve Startup probe’ları bulunmaktadır.

Liveness : Container’ın ne zaman yeniden başlatılacağını bilmek için kullanılır.

Readless : Container’ın işlem kabul etmeye ne zaman hazır olduğunu bilmek için kullanılır.

Startup : Container uygulamasının ne zaman başladığını bilmek için kullanılır.

Çalışmamız Liveness Probe üzerine olacak. Liveness’dan biraz daha bahsedecek olursak; oluşturulan container’lar yazılımsal veya donanımsal nedenlerle isteklere yanıt vermeyi bıraktığında manuel olarak müdahale ile problem çözülebilir ancak liveness ile uygulamanın sağlığını kontrol altında tutup herhangi bir olumsuz durumda container’ın otomatik olarak yeniden başlatılmasını sağlayabiliriz.

Liveness Probe’ları Liveness Command, Liveness HTTP Request ve TCP Liveness olarak tanımlanabilir.

Çalışmamızı, önceki makalelerde kurduğumuz Minikube Cluster üzerinde yapacağız. Örneğimiz Liveness Command üzerine olacak.

Liveness.yaml isimli bir yaml dosyası hazırlayalım.

apiVersion: v1
kind: Pod
metadata:
   labels:
     test: liveness
   name: liveness-exec
spec:
  containers:
  - name: liveness
    image: k8s.gcr.io/busybox
    args:
    - /bin/sh
    - -c
    - touch /tmp/healty; sleep 30; rm -rf /tmp/healty; sleep 600
    livenessProbe:
      exec:
        command:
        - cat
        - /tmp/healty
      initialDelaySeconds: 3
      failureThreshold: 1
      periodSeconds: 5

Hazırladığımız YAML dosyasını inceleyelim.  Standart bir container için oluşturulan yaml dosyasından farklı olarak touch argümanında , container’ımız başladığında /tmp/healthy isim bir dosya oluşturacağını, 30 saniye uyuyacağını ve oluşturulan dosyayı kaldıracağını belirttik.

LivenessProbe alanı altında periodSeconds alanı probe’un her 5 saniyede bir çalıştırılacağı, initialDelaySeconds alanı ilk probe çalıştırılmadan önce 3 saniye bekleyeceği, failureThreshold ise 1 denemeden sonra başarısız olan container’ı sağlıksız olarak bildirmesi ve yeniden başlatılması talimatını veriyoruz. FailureThreshold değeri varsayılan olarak 3’tür.

minikube kubectl create — -f liveness.yaml komutuyla pod’umuzu oluşturuyoruz.

minikube kubectl get pod liveness-exec — -w ile container’ın her restart ettiğinde çıktı üretmesini sağlıyoruz.

minikube kubectl describe pod liveness-exec komutuyla  liveness probe’unun /tmp/healty dosyasını kontrol ettiği ve bulamayarak unhealty olarak tanımladığını görebiliriz.

Faydalı olması dileğiyle,

İlgili Makaleler

Bir Yorum

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Başa dön tuşu