Kubernetes Kaynak Limitlerini Öğrenmek İçin Pratik Egzersizler

ozkan21 Member
10-30-2026, 01:16 AM

Quality of Service Sınıfları Nasıl Çalışır?



Kubernetes kümelerinde kaynak limitleri, her iş yükünün CPU ve bellek gibi kaynaklardan en fazla ne kadar yararlanabileceğini tanımlayan temel mekanizmalardır. Kaynak isteği (request) ile kaynak limiti (limit) arasındaki fark, Kubernetes planlayıcısının bir pod'u hangi düğüme yerleştireceğini değerlendirirken kritik bir rol oynar. İstek değeri, konteynerin ayakta kalabilmesi için ayrılması gereken minimum kaynağı ifade ederken, limit değeri ise bu kaynağın aşılamayacağı üst sınırı gösterir. CPU ölçüleri genellikle millicore cinsinden ifade edilirken, bellek miktarları mebibyte veya gibi binary ölçülerle tanımlanır. Bu kavramları iyi kavramak, kümenin kararlılığı için olmazsa olmazdır. Limitsiz bırakılan konteynerler, bir node'un tüm kaynaklarını tüketerek diğer iş yüklerini etkileyebilir ve komşu uygulamalarda beklenmedik yavaşlamalara yol açabilir. Bu nedenle her geliştirici kaynak tanımlarını ciddiye almalı ve yapılandırmanın baştan itibaren planlanmasına özen göstermelidir.


Kaynak limitlerinin doğru ayarlanması, bir kümenin hem verimliliği hem de güvenilirliği açısından ciddi faydalar getirir. Doğru yapılandırılmış istekler sayesinde zamanlayıcı pod'ları daha dengeli yerleştirir ve düğümler aşırı yüklenmeden işlev görür. Limitler ise bir uygulamanın bellek sızıntısı yaşaması durumunda, tüm düğümün çökmesini engelleyerek etkiyi tek bir pod'la sınırlar. Bellek limiti aşıldığında düğüm ajanı konteyneri OOMKilled durumuyla durdurur ve restart politikası devreye girer. Böylece operasyon ekipleri sorunu erken fark edip müdahale edebilir. Ayrıca kaynak israfı azalır, bulut maliyetleri düşer ve kapasite planlaması daha net hale gelir. Kaynak kullanımının şeffaf olması, ölçeklendirme kararlarını somut verilerle almayı da mümkün kılar. Sonuç olarak dengeli limitler, hem teknik açıdan kazanç sağlayan temel bir disiplindir.


Kaynak limitlerini adım adım uygulamak için önce mevcut uygulamanın davranışını gözlemlemek gerekir. Uygulamayı önce limitsiz veya gevşek bir yapılandırmayla çalıştırıp normal ve yoğun dönemlerdeki kullanımı kaydetmek en sağlıklı yoldur. Metrics Server ya da Prometheus gibi araçlarla CPU ve bellek verileri birkaç gün boyunca toplanmalıdır. Elde edilen ölçümler üzerinden request değeri, tipik kullanımın biraz hafifçe yukarısında seçilirken, üst sınır değeri maksimum kullanımın güvenli bir payla üstünde belirlenebilir. Bellek için üst sınır ile istek arasındaki farkın aşırı açılmaması, ani OOM olaylarını azaltır. CPU tarafında ise sıkı limitler throttling'e yol açabileceğinden temkinli davranılmalıdır. Ayarlar manifest dosyalarında resources bölümü içine yazılır ve Kustomize gibi şablon araçlarıyla ortam bazında düzenlenir. Son olarak LimitRange nesneleriyle namespace düzeyinde kurallar tanımlanarak tutarlılık sağlanır.


Kaynak limitlerini etkin biçimde yönetmek için çeşitli araç ve kaynak hazır bulundurulmalıdır. komut satırı aracı ile describe komutları düğüm düzeyinde güncel bilgi sunar, Metrics Server ise bellek kullanımını kümeye entegre şekilde takip etmeyi sağlar. izleme sistemi ve Grafana ile geçmişe dönük eğilimler incelenebilir ve uyarı kuralları tanımlanabilir. VPA önerileri gibi çözümler Vertical Pod Autoscaler tavsiyelerini özetleyerek uygun değerleri bulmaya yardımcı olur. Kubernetes dokümantasyonu, Resource Management bölümü başvuru kaynak olarak önemlidir. Ekipte standart bir isimlendirme politikası ve namespace bazlı quota planı oluşturulmalıdır. Bu altyapı yapılmadan yapılan limitler çoğu zaman tahmine dayalı kalır.


Kubernetes'e yeni başlayanlar için en önemli tavsiye, kaynak tanımlarını asla boş bırakmamaktır. Her bir deployment için en azından temel bir istek ve limit değeri yazılmalı, ilk değerler küçük tutularak gözlem sonuçlarına göre güncellenmelidir. Bellek limitlerini aşırı sıkı tutmak, servisin sürekli yeniden başlamasına neden olabileceğinden dikkatli olunmalıdır. CPU limitlerinde ise throttling etkisini takip etmek için container_cpu_cfs_throttled metrikleri kontrol edilebilir. Başlangıçta Burstable veya Guaranteed QoS sınıflarının ayrımını anlamak, hangi iş yükünün hangi önceliğe sahip olduğunu belirlemeye yardımcı olur. Küçük bir ortamda denemeler yapmak, üretim sisteme geçmeden önce önemli bilgiler kazandırır. Ekip içinde değerlerin neden belirlendiğine dair kayıt tutmak, gelecekte yapılacak değişiklikleri kolaylaştırır. Unutulmamalıdır ki kaynak ayarları değişmez değildir ve periyodik gözden geçirme gerektirir.


Kubernetes kümelerinde kaynak limitlerini belirlerken en önemli noktalardan biri, requests kavramlarının birbirinden farklı düşünülmesidir. Gereğinden düşük bir CPU veya bellek limiti, uygulamanın beklenmedik biçimde kesintiye uğramasına yol açabilir. Öte yandan çok yüksek tanımlanmış limitler, düğüm kapasitesinin verimsiz kullanılmasına neden olur. Bellek limiti aşıldığında kapsayıcının OOMKilled durumuna geçmesi özellikle dikkat gerektiren bir senaryodur. Bu nedenle mühendisler her servis için bağımsız ölçümler yapmalı ve değerleri varsayım yerine ölçülen verilere dayandırmalıdır. Ayrıca CPU limitlerinin kısıtlama etkisi, yanıt sürelerini sessizce artırabilir. Bu etki, izleme araçları kurulmadan tespit edilmesi zor bir sorundur. Limit değerleri revize eder ken trafik desenlerindeki değişimler de dikkate bulundurulmalıdır. Bir diğer risk, namespace düzeyinde genel kotaların yanlış kurgulanması durumudur. Bu durumda yeni dağıtımlar anlaşılmaz biçimde reddedilebilir. Son olarak, geliştirme ortamındaki değerlerin doğrudan üretime taşınması ciddi sürprizlere yol açabilir.


Kaynak yönetiminde farklı yaklaşımlar arasında karar yapmak, ekibin gereksinimlerine göre değişir. Sabit değerlerle çalışan geleneksel yöntem, basit olmasına rağmen trafik dalgalanmalarına karşı esnek değildir. Dikey Pod Otomatik Ölçekleyici (VPA), geçmiş kullanım verilerine bakarak önerilerde bulunur ve manuel düzenleme yükünü azaltır. Yatay Pod Otomatik Ölçekleyici (HPA) ise replika sayısını değiştirerek yükü dağıtır ve genellikle CPU ile özel metrikler üzerinden tetiklenir. Her iki yöntemin birlikte kullanılması dikkatli bir tasarım gerektirir, çünkü birbirlerinin kararlarını etkileyebilirler. Limit Range veya ResourceQuota gibi politika nesneleri ise kurumsal denetimi kolaylaştırır. QoS sınıfları (Guaranteed, Burstable, BestEffort) da önceliklendirme açısından ayrı davranışlar sergiler. Hangi yöntemin tercih edileceği ise iş yükünün doğasına ve önem düzeyine bağlıdır.


Gerçek hayatta bir e-ticaret şirketinde kampanya dönemlerinde yaşanan bir olay, bu konunun ehemmiyetini açık biçimde göstermektedir. Ekip, ödeme servisinin bellek limitini normal trafik verilerine göre belirlemişti ve kampanya sırasında kapsayıcılar sürekli yeniden başlatılmaya başladı. Sorunun nedeni incelendiğinde, ani artan istek sayısının bellek tüketimini öngörülenin üzerine çıkardığı görüldü. Ekip, HPA yapılandırmasını gözden geçirerek kısa sürede ek replikalar eklenebilecek şekilde düzenledi. Bir diğer örnekte, veri işleme yapan bir iş yükü gece saatlerinde devreye giriyordu ve gündüz kullanılmayan kaynaklar israf gidiyordu. VPA önerileri temel alınarak limitler düşürüldü ve maliyetlerde belirgin bir azalma sağlandı. Bu tür deneyimler, teorik bilginin pratikte hangi şekilde uygulandığını gösteren değerli örneklerdir.


Kaynak limitlerinin uzun vadeli etkileri, sadece anlık performansla kısıtlı kalmaz. Doğru yapılandırılmış limitler, kümenin istikrarını artırır ve işletim ekibinin gece nöbetlerini azaltır. Buna karşılık sürekli değiştirilmeyen değerler zamanla teknik borç oluşturur. Uygulamalar geliştikçe kaynak profilleri de evrilir, bu nedenle periyodik gözden geçirme döngüleri kurumsal bir alışkanlık haline getirilmelidir. Sürdürülebilirlik açısından değerlendirildiğinde, gereksiz kaynak tüketimi hem maliyeti hem de karbon ayak izini büyütür. Bu nedenle kaynak verimliliği, yalnızca mühendislik değil aynı zamanda sürdürülebilirlik bir sorumluluk olarak ele alınmalıdır. Ekiplerin bilgi paylaşımını teşvik eden kültürler, bu konuda daha istikrarlı sonuçlar elde eder.


İleri seviye çalışmalarda kaynak yönetimi, kendiliğinden işleyen sistemler ve gözlemlenebilirlik araçlarıyla birlikte değerlendirilmelidir. Prometheus ve Grafana gibi çözümler ile kullanım eğrilerinin analizi, limit kararlarını somut hale getirir. Yük testleri, canlıya çıkmadan önce limitlerin yeterliliğini doğrulamak için vazgeçilmez bir aşamadır. Bazı ekipler kaynak talebi ile gerçek kullanım arasındaki farkı takip eden özel raporlar oluşturur. Politika motorları, örneğin OPA Gatekeeper, limit tanımı olmadan dağıtımları engelleyerek standardı sağlar. Sonuç olarak, kaynak limitleri statik bir yapılandırma değil, sürekli ölçülen ve geliştirilen dinamik bir süreçtir. Bu bütüncül yaklaşımı benimseyen ekipler, hem performans hem de maliyet açısından sürdürülebilir kazanımlar sağlar.


Kubernetes kaynak limitlerinin çekirdek mantığı


Kubernetes kümelerinde her pod için işlemci süresi ve RAM rezervasyonu ile tavanı ayrı ayrı tanımlanır. Request değeri zamanlayıcının (scheduler) düğüm seçimini etkileyen temel değerdir. Limit ise konteynerin çalışma anında aşabileceği en yüksek kullanımı sınırlar. Bu iki değer doğru kurgulanmadığında küme genelinde kaynak israfı veya beklenmedik kesintiler görülebilir. Özellikle üretim ortamlarında her servisin gerçek ihtiyacını ölçmeden değer atamak ciddi sorunlara yol açar. Bu nedenle ilk olarak metrik toplama araçlarıyla fiili kullanım verisi elde. Ayrıca hizmet kalitesi sınıfları (Guaranteed, Burstable, BestEffort) request ve limit eşitliğine göre atanır, bu da tahliye (eviction) önceliğini kesin olarak etkiler.


Kaynak ayarlarında sık yapılan yaygın yanlışlar


En bilinen hata, limit değerini hiç koymamak veya tüm servislere aynı genel değeri uygulayıp geçmektir. Bu durumda bir pod, düğümün bütün belleğini tüketerek diğer podları etkileyebilir. Bir diğer sık görülen aksaklık, bellek limitini çok düşük bırakmak ve uygulamanın sürekli OOMKilled olarak yeniden başlamasına yol olmaktır. CPU limitini gereğinden düşük koymak ise gecikme (latency) artışına ve anlaşılması zor performans düşüşlerine yol açabilir. Ayrıca request değerini makul tutmadan düğüm kapasitesinin israf harcanmasına fırsat vermek, küme maliyetlerini anlamsız yükseltir.


Tecrübeli tavsiyeler ile kaynak değerlerini optimize etmek

Deneyimli mühendisler genellikle başlangıçta Vertical Pod Autoscaler ile öneri modunda çalışarak gerçek kullanım dağılımını çıkarmayı öneri eder. Elde edilen bulgular ışığında request değerleri, olağan yük seviyesinin az üzerine, limit değerleri ise tepe yük anlarını karşılayacak şekilde tanımlanır. Bellek için limit ile request arasındaki farkın sınırlı tutulması, OOM riskini azaltır. CPU için ise limit koymadan yalnızca request tanımlamak, bazı ekip tarafından savunulan bir yaklaşımdır, zira CPU throttling gecikmelerinin önüne geçer. LimitRange ve ResourceQuota nesneleriyle namespace bazında varsayılan değerler ve üst sınırlar kural hâline getirilerek tutarlılık güvence altına alınabilir.


Kaynak limitlerinin bütçe yansıması ve bütçe planlaması


Kaynak limitleri doğrudan bulut faturasını şekillendiren parametrelerdir. Bir düğümün altında gereksiz yere yüksek request tanımlanmış podlar çalıştığında, scheduler yeni düğüm eklemeye zorlanır ve küme maliyeti tırmanır. Bütçe planlaması yapılırken tüm namespace için toplam request değerlerinin ayrıca izlenmesi gerekir. Bunun için maliyet izleme çözümleri kullanılarak servis bazında harcama dağılımı çıkarılabilir. Böylece hangi tür iş yükünün aslında ne kadar kapasite tükettiği somut şekilde görülerek bütçe kararları daha sağlıklı alınır.


Trafik dönemleri ve sezonluk yük oynamalarına göre limit ayarı


Sayısız işletmede trafik sabit dönemlerde önemli biçimde çoğalır; kampanya haftaları, yılbaşı satın almaları veya eğitim dönemleri bu dalgalanmaların başlıca örneklerindendir. Bu aralıklar için request ve limit değerlerini önceki haftalarda gözden geçirmek, beklenmedik kesintilerin önünde geçer. Planlı ölçeklendirme için KEDA gibi araçlarla cron tabanlı artırım ayarlanabilir, yoğunluk sona erdikten değerlerin yeniden çekilmesi mümkün kılınarak maliyet kontrolü devam eder. Böylece kapasite ihtiyacı ancak gerektiği oranda kullanılır.


Çokça sorulan sorular ve özet açıklamalar

Geliştiricilerin en çok dile getirdiği konulardan biri, limitlerin ne sıklıkla gözden geçirilmesi gerektiğidir. Genel öneri, her önemli sürüm değişikliği ve her çeyrek ayda bir metriklere dönülerek değerlerin revize edilmesidir. Bir bir başka tipik soru ise CPU limiti koymanın zorunlu olup olmadığıdır; cevap iş yükünün türüne göre farklılaşır, ancak bellek tarafında limit çoğunlukla önerilirken CPU tarafında görüş ayrılığı olan bir tutum söz konusudur. Bir diğer konu olarak ölçüm doğruluğu için en az birkaç hafta boyunca kayıt toplamak, kısa bir incelemeye dayanarak karar vermekten kat kat güvenilir sonuçlar sağlar.

Yanıtla
berna-1995 Hep Buradayim
10-30-2026, 01:33 AM
Kubernetes Kaynak Limitlerini Öğrenmek İçin ile ilgili temiz bir workshop olmus, eline saglik.
Yanıtla
sevgi97 Member
10-30-2026, 01:51 AM
Kubernetes Kaynak Limitlerini Öğrenmek İçin ile ilgili etkileyici bir degerlendirme olmus, eline saglik.
Yanıtla
ilhan_usta Member
10-30-2026, 02:15 AM
Epey guzel bir paylasim, emegine saglik!
Yanıtla
crystal_bahar Member
10-30-2026, 02:44 AM
Cidden de guzel bir konu, emegine saglik!
Yanıtla
sphinx-golden Member
10-30-2026, 02:57 AM
Kubernetes Kaynak Limitlerini Öğrenmek İçin ile ilgili guzel bir ozet olmus, eline saglik.
Yanıtla
canan61 Member
10-30-2026, 04:04 AM
Sade ama etkili. Yarin hemen deniyorum.
Yanıtla
forum-wolf Daimi Uye
10-30-2026, 05:08 AM
Tesekkurler, net bir meta analiz.
Yanıtla
sinan_polat Member
10-30-2026, 05:32 AM
Kubernetes Kaynak Limitlerini Öğrenmek İçin ile ilgili guzel bir seri olmus, eline saglik.
Yanıtla

Forumdan Konular