Kubernetes'te liveness, readiness ve startup probe arasındaki fark nedir? Yanlış yapılandırılırsa ne olur?
Cevap
| Probe | Sorduğu soru | Başarısız olursa |
|---|---|---|
| Liveness | Process kilitlendi mi, kurtarılamaz durumda mı? | Container yeniden başlatılır |
| Readiness | Şu an trafik almaya hazır mı? | Pod Service endpoint'lerinden çıkarılır, öldürülmez |
| Startup | Uygulama açılışını tamamladı mı? | Tamamlanana kadar diğer probe'lar çalışmaz; süre aşılırsa restart |
startupProbe:
httpGet: { path: /health/live, port: 8080 }
failureThreshold: 30
periodSeconds: 2 # en fazla 60 sn açılış süresi
livenessProbe:
httpGet: { path: /health/live, port: 8080 }
periodSeconds: 10
failureThreshold: 3
readinessProbe:
httpGet: { path: /health/ready, port: 8080 }
periodSeconds: 5
failureThreshold: 2Endpoint'ler ne kontrol etmeli?
- Liveness: yalnızca process'in kendisi yanıt veriyor mu. Dış bağımlılıkları kontrol etmemeli.
- Readiness: trafik işleyebilmek için gerekenler: DB bağlantısı, cache ısınması, graceful shutdown başladı mı.
Yanlış yapılandırma örnekleri
- Liveness içinde DB kontrolü: DB birkaç saniye yavaşlar, tüm pod'lar aynı anda liveness'tan düşer ve yeniden başlar. Bu da açılışta DB'ye bağlantı fırtınası yaratır: cascading failure.
- Startup probe olmadan yavaş açılan uygulama (ör. büyük Spring Boot servisi): liveness açılışı bitmeden başarısız olur, pod sonsuz
CrashLoopBackOff'a girer. - Readiness olmadan deploy: rolling update sırasında henüz hazır olmayan pod'a trafik gider, kullanıcılar 502/503 görür.
- Çok agresif timeout (
timeoutSeconds: 1) GC pause veya yük altındaki pod'ları gereksiz yere öldürür.
Spring Boot Actuator /actuator/health/liveness ve /actuator/health/readiness, ASP.NET Core MapHealthChecks ile tag bazlı ayrım sunar.
İlgili Docker & DevOps soruları
- Distributed tracing nasıl çalışır? Trace context servisler arasında nasıl taşınır ve OpenTelemetry'nin rolü nedir?
- Observability nedir? Log, metric ve trace arasındaki fark nedir ve her biri ne için kullanılır?
- Rolling update, blue-green ve canary deployment stratejileri arasındaki farklar nelerdir?
- Ortam değişkenleri ve secret'lar (şifre, API anahtarı) güvenli şekilde nasıl yönetilir?
- CI/CD nedir? Tipik bir backend CI/CD pipeline'ının aşamaları nelerdir?
- İyi bir Dockerfile nasıl yazılır? Multi-stage build ne işe yarar?
Bu konuda başka bir soru biliyor musun?
Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.