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,

Bir Yorum

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Başa dön tuşu

Reklam Engelleyici Algılandı

ÇözümPark Bilişim Portalı gönüllü bir organizasyon olup tek gelir kaynağı reklamlardır. Bu nedenle siteyi gezerken lütfen reklam engelleme eklentinizi kapatın veya Çözümpark web sitesi için izin tanımı yapın. Anlayışınız için teşekkürler.