Kubernetes Pod Kaynak Optimizasyonu: Requests ve Limits Ayarları
Kubernetes kümelerinde (cluster) uygulama performansını ve kararlılığını korumanın en kritik yolu, pod kaynak sınırlarını (CPU ve Bellek) doğru tanımlamaktır. Yanlış yapılandırılmış kaynak sınırları, OOMKilled (Out of Memory) hatalarına или düğüm (node) kaynaklarının verimsiz kullanılmasına yol açar.
Requests ve Limits Farkı Nedir?
Resource Requests, bir pod'un çalışabilmesi için düğüm üzerinde garanti edilen minimum kaynak miktarıdır. Resource Limits ise pod'un tüketebileceği maksimum tavan sınırı belirler.
☸️ "CPU sınırları aşıldığında işlemci kısıtlaması (throttling) yaşanırken, bellek (RAM) sınırı aşıldığında Kubernetes pod'u doğrudan OOMKilled ile sonlandırır."
Ölçekleme ve Performans Stratejileri
Kümelerde kesintisiz hizmet sunabilmek için dikkat edilmesi gereken temel ilkeler:
- Horizontal Pod Autoscaler (HPA): Yük arttığında otomatik olarak yeni pod kopyaları (replica) oluşturur.
- Vertical Pod Autoscaler (VPA): Pod'ların CPU ve bellek sınırlarını geçmiş kullanım verilerine göre otomatik ayarlar.
- Quality of Service (QoS): Pod'ları Guaranteed, Burstable veya BestEffort sınıflarına ayırarak önceliklendirir.
QoS Sınıflarının Karşılaştırılması
Aşağıdaki tabloda Kubernetes pod öncelik sınıfları ve davranışları özetlenmiştir:
| QoS Sınıfı | Tanımlama Kriteri | Tahliye (Eviction) Önceliği |
|---|---|---|
| Guaranteed | Requests ve Limits Değerleri Eşit | En Düşük (En Güvenli) |
| Burstable | Requests Değeri Limits'ten Küçük | Orta |
| BestEffort | Kaynak Sınırı Tanımlanmamış | En Yüksek (İlk Silinen) |
Sonuç
Doğru yapılandırılmış kaynak sınırları, küme maliyetlerini düşürürken uygulamanızın yüksek trafik anında çökmesini engeller.