0Pricing
DevOps Bootcamp · Ders

Sağlık Denetimleri: Canlılık ve Hazır Olma Yoklamaları

Uygulamalarınızın sağlıklı ve trafiğe hizmet vermeye hazır olduğundan emin olmak için canlılık ve hazır olma yoklamalarını yapılandırın.

Sağlık Denetimleri: Canlılık ve Hazır Olma Yoklamaları, CoddyKit'te ücretsiz bir DevOps Bootcamp dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, DevOps Bootcamp öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. DevOps Bootcamp kursu toplamda 4 dersten oluşur.

Uygulamaları Sağlıklı Tutma

Kubernetes, uygulamanızın gerçekten çalışıp çalışmadığını nasıl anlar? Bir konteynerin yalnızca çalışıyor olması yeterli değildir; trafiğe hizmet verebilmek için sağlıklı ve hazır olması gerekir.

Kubernetes, uygulamalarınızı izlemek için problar adı verilen özel denetimler kullanır. Bu problar, kullanıcılarınızın her zaman güvenilir bir hizmet almasını sağlamaya yardımcı olur.

Canlılık Probları Nedir?

Bir Canlılık Probu, uygulamanızın hâlâ canlı ve yanıt verebilir durumda olup olmadığını denetler. Canlılık probu başarısız olursa Kubernetes, konteynerinizin sağlıksız olduğunu varsayar ve onu yeniden başlatır.

Bunu kalp atışı monitörüne benzetebilirsiniz: Kalp durursa yeniden başlatma gerekir! Bu, kilitlenmelerden veya uygulama çökmelerinden kurtulmaya yardımcı olur.

Canlılık Probu Temelleri

Canlılık problarını farklı yöntemlerle yapılandırabilirsiniz:

  • HTTP GET: Belirtilen bir yola HTTP isteği gönderir.
  • TCP Soketi: Bir bağlantı noktasına TCP bağlantısı açılıp açılamadığını denetler.
  • Exec Komutu: Konteynerin içinde bir komut çalıştırır.

Web uygulamalarında HTTP GET oldukça yaygındır. Aşağıda, bir Pod'un YAML dosyasında bunu nasıl tanımlayacağınızı gösteren bir bölüm yer alıyor:

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

Canlılık Probu Uygulamada

Bu Python Flask uygulaması, /healthz adresine gelen iki isteğin ardından çökerek sağlıksız bir durumu taklit eder. Kubernetes probu bunu tespit eder ve konteyneri yeniden başlatır.

Öncelikle bunu app.py olarak kaydedin:

from flask import Flask, Response
import os
import time

app = Flask(__name__)
request_count = 0

@app.route('/healthz')
def health_check():
    global request_count
    request_count += 1
    if request_count > 2:
        print("Liveness probe failing! Exiting...")
        os._exit(1) # Simulate a crash
    print(f"Liveness probe successful (count: {request_count})")
    return Response("OK", status=200)

@app.route('/')
def home():
    return "Hello from the Liveness Probe Demo!"

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=8080)

Canlılık Probunu Çalıştırma

Şimdi Kubernetes'in canlılık probunu nasıl kullandığına bakalım. Bunu aşağıdaki YAML ile dağıtırsanız, sağlık denetimi başarısız olduğunda Kubernetes Pod'u yeniden başlatır:

apiVersion: v1
kind: Pod
metadata:
  name: liveness-demo
spec:
  containers:
  - name: liveness-container
    image: python:3.9-slim-buster
    command: ["python", "app.py"]
    ports:
    - containerPort: 8080
    livenessProbe:
      httpGet:
        path: /healthz
        port: 8080
      initialDelaySeconds: 5
      periodSeconds: 5
      failureThreshold: 1
    volumeMounts:
    - name: app-volume
      mountPath: /app
  volumes:
  - name: app-volume
    configMap:
      name: liveness-app-config

# (You'd need a ConfigMap for app.py, omitted for brevity)

Dağıtıldığında, 2 başarılı denetimin ardından üçüncü denetim başarısız olur ve Kubernetes konteyneri yeniden başlatır.

Hazırlık Probları Nedir?

Bir Hazırlık Probu, uygulamanızın trafiğe hizmet vermeye hazır olup olmadığını denetler. Hazırlık probu başarısız olursa Kubernetes bu Pod'a trafik göndermeyi durdurur, ancak Pod'u yeniden başlatmaz.

Bu, başlangıç sırasında (örneğin bir veritabanı bağlantısı beklenirken) veya kontrollü kapatma işlemlerinde çok önemlidir. Şöyle düşünün: "Mağaza müşterilere açık mı?"

Hazırlık Probu Temelleri

Hazırlık probları, canlılık problarına benzer şekilde HTTP GET, TCP Soketi veya Exec komutları kullanılarak yapılandırılır. Temel fark, etkileridir:

  • Canlılık: Başarısızlık durumunda konteyneri yeniden başlatır.
  • Hazırlık: Başarısızlık durumunda Pod'u hizmet uç noktalarından kaldırır (trafik gönderilmez).

Aşağıda bir hazırlık probu için örnek bir bölüm yer alıyor:

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

Hazırlık Probu Uygulamada

Bu Flask uygulaması, başlatılması biraz zaman alan bir uygulamayı (örneğin, bir veritabanına bağlanırken) taklit eder. Yalnızca 5 saniye sonra "hazır" olduğunu bildirir.

Bunu ready_app.py olarak kaydedin:

from flask import Flask, Response
import time

app = Flask(__name__)
start_time = time.time()
READY_AFTER_SECONDS = 5

@app.route('/ready')
def readiness_check():
    if time.time() - start_time > READY_AFTER_SECONDS:
        print("Readiness probe successful: App is ready!")
        return Response("READY", status=200)
    else:
        print("Readiness probe failing: App not ready yet...")
        return Response("NOT READY", status=503)

@app.route('/')
def home():
    return "Hello from the Readiness Probe Demo!"

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=8080)

Hazır olma denetimini çalıştırma

Bu YAML ile dağıtıldığında Pod, ilk initialDelaySeconds süresi ve /ready yolunun 200 OK döndürmesi için gereken süre boyunca trafik almaz.

apiVersion: v1
kind: Pod
metadata:
  name: readiness-demo
spec:
  containers:
  - name: readiness-container
    image: python:3.9-slim-buster
    command: ["python", "ready_app.py"]
    ports:
    - containerPort: 8080
    readinessProbe:
      httpGet:
        path: /ready
        port: 8080
      initialDelaySeconds: 10
      periodSeconds: 3
    volumeMounts:
    - name: app-volume
      mountPath: /app
  volumes:
  - name: app-volume
    configMap:
      name: readiness-app-config

# (You'd need a ConfigMap for ready_app.py, omitted for brevity)

Bu sayede trafik yalnızca gerçekten hazır olan örneklere gönderilir.

Canlılık ve hazır olma karşılaştırması

Her iki denetimi de doğru şekilde kullanmak önemlidir:

  • Canlılık denetimi: Uygulamanızın çöktüğünü veya kurtarılamaz bir durumda olduğunu tespit etmek için kullanılır. Başarısız olursa Kubernetes kapsayıcıyı yeniden başlatır.
  • Hazır olma denetimi: Uygulamanızın istekleri kabul edip işleme hazır olup olmadığını tespit etmek için kullanılır. Başarısız olursa Kubernetes Pod'a trafik göndermeyi durdurur.

Uygulamalarınızı sağlam tutmak için farklı ancak birbirini tamamlayan amaçlara hizmet ederler.

Anladıklarınızı kontrol edin

Canlılık ve hazır olma denetimleriyle ilgili aşağıdaki ifadelerden hangileri DOĞRUDUR?

Denetimler: Temel çıkarımlar

Bu derste Kubernetes'teki Canlılık ve Hazır olma denetimlerini öğrendiniz. Bu durum denetimleri, uygulamalarınızın güvenilirliğini ve kullanılabilirliğini korumak için hayati önem taşır:

  • Canlılık denetimleri sağlıksız kapsayıcıları tespit eder ve yeniden başlatma işlemlerini tetikler.
  • Hazır olma denetimleri bir Pod'un ağ trafiği almaya ne zaman hazır olduğunu kontrol eder.

Bunları etkili şekilde kullanmak, uygulamalarınızın her zaman yanıt verebilir ve sorunlara dayanıklı olmasını sağlar.

Sıkça Sorulan Sorular

“Sağlık Denetimleri: Canlılık ve Hazır Olma Yoklamaları” dersi ücretsiz mi?

Evet — “Sağlık Denetimleri: Canlılık ve Hazır Olma Yoklamaları” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve DevOps Bootcamp kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. DevOps Bootcamp kursu toplamda 4 dersten oluşur.

“Sağlık Denetimleri: Canlılık ve Hazır Olma Yoklamaları” dersinde ne öğreneceğim?

Uygulamalarınızın sağlıklı ve trafiğe hizmet vermeye hazır olduğundan emin olmak için canlılık ve hazır olma yoklamalarını yapılandırın. DevOps Bootcamp ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

DevOps Bootcamp öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te DevOps Bootcamp, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.

“Sağlık Denetimleri: Canlılık ve Hazır Olma Yoklamaları” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu DevOps Bootcamp dersinde kod yazıp çalıştırabilir miyim?

Evet. Her DevOps Bootcamp dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. kubectl logs ile Günlük Kaydı
  2. Prometheus ve Grafana ile Ölçümler
  3. Sağlık Denetimleri: Canlılık ve Hazır Olma Yoklamaları
  4. Dağıtık İzleme ve Olaylar
← DevOps Bootcamp Sayfasına Dön