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: 5Canlı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: 5Hazı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
- kubectl logs ile Günlük Kaydı
- Prometheus ve Grafana ile Ölçümler
- Sağlık Denetimleri: Canlılık ve Hazır Olma Yoklamaları
- Dağıtık İzleme ve Olaylar