Kubernetes'te Kaynak İstekleri ve Sınırları: CPU Kısıtlaması, OOMKilled ve QoS Sınıfları
İstek zamanlayıcının rezervasyonu, sınır çekirdeğin kotasıdır. CPU neden bekletilir, bellek neden öldürülür, QoS sınıfları tahliye sırasını nasıl belirler ve doğru değeri ölçümle nasıl bulursunuz.
Bir pod'a resources alanı yazmak basit görünür ama küme sağlığını en çok belirleyen iki kararı içinde taşır: zamanlayıcı bu iş yükünü hangi düğüme sığdıracak ve düğüm daralınca kim önce feda edilecek. İstek (request) ve sınır (limit) aynı satırlarda dursa da farklı katmanlarda çalışır. İstek yalnızca zamanlayıcının kullandığı bir rezervasyondur; kaynak gerçekten ayrılmaz, ama isteklerin toplamı düğümün ayrılabilir kapasitesini aşamaz. Sınır ise çekirdek düzeyinde uygulanır: CPU için cgroup kotası, bellek için cgroup tavanı. Bu ikisini karıştıran ekip ya boş dururken "dolu" görünen bir küme ya da yük altında sessizce yavaşlayan servisler elde eder.
CPU ve bellek aynı şey değil
CPU sıkıştırılabilir bir kaynaktır. Sınırı aşan konteyner öldürülmez, bekletilir. Kubelet CPU sınırını Linux CFS kotasına çevirir: varsayılan 100 ms'lik her dönemde konteynere sınır kadar CPU zamanı verilir, kota bitince süreç dönemin sonuna kadar askıya alınır. 500m sınır "her 100 ms'de 50 ms" demektir. Tek iş parçacıklı bir iş yükü için bu makul görünür; ama çok iş parçacıklı bir uygulama sekiz çekirdekte aynı anda koşarsa 50 ms'lik kotayı 6 ms'de tüketir ve dönemin kalan 94 ms'i boyunca durur. Ortalama CPU kullanımı grafikte yüzde 30 görünürken istek gecikmeleri katlanır. Bu kısıtlamanın (throttling) klasik belirtisidir ve çoğu ekip onu uygulama hatası sanır.
Bellek sıkıştırılamaz. Konteyner sınırı aşarsa çekirdeğin OOM killer'ı devreye girer, süreç 137 çıkış koduyla ölür ve pod durumunda OOMKilled yazar. Bekletme yoktur, uyarı yoktur. Ölçülen değer de sandığınız şey değildir: kubelet ve kubectl top çalışma kümesini (working set) gösterir, bu RSS artı aktif sayfa önbelleğidir. Çok dosya yazan bir konteyner, kodunun gerçekten tuttuğundan epey daha ağır görünür.
QoS sınıfları ve tahliye sırası
Kubernetes, istek ile sınır ilişkisinden her pod'a bir kalite sınıfı biçer:
Guaranteed: her konteynerde CPU ve bellek için istek sınıra eşit.
Burstable: en az bir istek ya da sınır var ama hepsi eşit değil.
BestEffort: hiçbir şey yazılmamış.
Düğüm bellek baskısına girince kubelet önce BestEffort pod'ları, sonra isteğini aşan Burstable pod'ları tahliye eder; Guaranteed en sona kalır. Kritik bir servisi Burstable bırakıp "nasılsa isteğim var" demek, sınırın altında kalsa bile komşusunun taşkını yüzünden tahliye edilmeyi kabul etmektir. Düğüm kapasitesinin tamamı da kullanılamaz: ayrılabilir miktar, kapasiteden kubelet ve sistem rezervleri ile tahliye eşiği düşülerek bulunur. kubectl describe node çıktısındaki Allocatable satırı gerçek bütçedir; Capacity satırı değil.
Savunulabilir bir başlangıç noktası
Bellek için istek ile sınırı eşit yazın. Bellek taşkını komşuları etkilediği için sınır zorunlu; istek sınırdan düşük olursa pod "yeterli yer var" diye yerleştirilir ve gerçek tüketiminde düğümü baskıya sokar.
CPU için istek yazın, sınırı yalnız gerektiğinde koyun. İstek, CFS ağırlığı olarak adil paylaşımı zaten sağlar: düğüm dolduğunda herkes isteği oranında pay alır, boşken herkes serbestçe kullanır. Sınır koymak yalnızca gürültülü bir komşuyu kesin olarak kapatmak ya da Guaranteed sınıfına girmek için anlamlıdır.
Guaranteed gerekiyorsa CPU sınırını istekle eşitleyin ve tam sayı çekirdek isteyin; kubelet static CPU yöneticisi politikasıyla tam sayı isteyen Guaranteed pod'lara özel çekirdek verir ve kota kısıtlaması ortadan kalkar.
Ad alanı seviyesinde iki güvenlik ağı var. LimitRange, kaynak yazmayan pod'lara varsayılan atar ve BestEffort sınıfına düşmeyi engeller; ResourceQuota bir ekibin toplam rezervasyonunu sınırlar.
Tahmin etmeyin, ölçün. Bir hafta gerçek trafik altında container_memory_working_set_bytes ve rate(container_cpu_usage_seconds_total[5m]) serilerinin tepe ve 95. yüzdelik değerlerine bakın. Bellek isteğini tepeye yakın, CPU isteğini 95. yüzdeliğe koyun. Vertical Pod Autoscaler'ın öneri modu (updateMode: "Off") bu ölçümü sizin yerinize yapar ve pod'a dokunmadan önerilen değeri kendi durum alanına yazar; otomatik güncelleme modunu açmadan önce aylarca yalnız bu modu kullanmak iyi bir alışkanlıktır.
Kısıtlamayı yakalamak için oran şudur: container_cpu_cfs_throttled_periods_total / container_cpu_cfs_periods_total. Bu oran sürekli yüzde 25'in üstünde kalan bir konteyner ya sınırı hak etmiyor ya da sınır çok düşük. OOM için kube-state-metrics'in kube_pod_container_status_last_terminated_reason{reason="OOMKilled"} metriği yeniden başlatma nedenini saydırır; yalnız restart sayısına bakmak, probe kaynaklı yeniden başlatmalarla bellek ölümlerini birbirine karıştırır.
Tuzaklar
Çalışma zamanı sınırı bilmiyor. JVM konteyner sınırını okur ama varsayılan olarak bellek sınırının yalnızca dörtte birini yığın (heap) yapar; -XX:MaxRAMPercentage ile yükseltmezseniz 2 GiB verip 512 MiB kullanan bir servis elde edersiniz. Ters yönde, Go çalışma zamanı 1.25 sürümünden önce cgroup CPU kotasını hiç okumaz ve makinenin tüm çekirdeklerine göre GOMAXPROCS seçerdi; bu, yukarıdaki kısıtlama senaryosunun ta kendisidir. Go'da GOMEMLIMIT ortam değişkeni de çöp toplayıcının bellek sınırını görmesini sağlar; onsuz sınıra dayanmış bir servis OOM olur, yavaşlamaz.
Init konteynerleri hesabı değiştirir. Pod'un etkin isteği, sıradan konteynerlerin toplamı ile en büyük init konteynerinin isteğinden büyük olanıdır. Kurulum için 2 GiB isteyen bir init konteyneri, uygulamanız 256 MiB kullansa bile o düğümde pod yaşadığı sürece 2 GiB rezervasyon demektir.
Yüksek istek, boş küme. İstekler gerçek kullanımın çok üstündeyse zamanlayıcı düğümü dolu sayar, yeni pod'lar Pending'de bekler ve düğüm ekleyen otomatik ölçekleyici gereksiz makine açar. "Kümemiz yüzde 20'de ama pod yerleşmiyor" şikâyetinin nedeni neredeyse hep budur.
Bellek sınırı olmayan pod düğümü indirir. Sınırsız bir bellek sızıntısı önce komşuları tahliye ettirir, sonra kubelet'in kendisini sıkıştırır. Tek bir ad alanında bile bellek sınırı olmayan pod'a izin vermeyin; LimitRange tam bunun için var.
Sınır değişikliği yeniden başlatma demek. Kaynak alanı pod şablonunun parçasıdır; Deployment'ta değiştirmek yeni bir dağıtım başlatır. Yerinde yeniden boyutlandırma yeni sürümlerde geliyor ama henüz olgunlaşmadı; kapasite planını buna dayandırmayın.
Ne zaman bu tarif geçerli değil
Katı gecikme hedefi olan iş yükleri için (gerçek zamanlı medya, düşük gecikmeli veritabanı) "CPU sınırı koyma" tavsiyesi ters teper: düğüm dolduğunda adil paylaşım gecikmeyi öngörülemez yapar. Bu sınıf için Guaranteed artı static CPU yöneticisi doğru yoldur. Toplu işler için tam tersi geçerli: bellek isteğini düşük tutup sınırı yüksek bırakmak ve tahliyeyi kabullenmek daha ucuza gelir, çünkü iş yeniden kuyruğa girer ve kimse beklemez. Tarifin evrensel olan kısmı tek cümledir: hangi kaynağın sıkıştırılabilir olduğunu bilin ve sınırı yalnız orada gevşetin.
1-5 tab geçiş ·
tab sonraki ·
esc geri al ·
↓ kaydır
> ls -lah ~/services/ --sort=tier
[OK] 25 records · 8 featured · 1 retainer · 16 standard
/02 hizmetler
services.tree
> note
· Fiyatlar USD cinsindendir. 6-12 günlük projelerde %7, 13+ günlük projelerde %14 hacim indirimi uygulanmaktadır. 100 adam-gün ve üzeri kapsamlı programlarda proje bazlı özel fiyatlandırma yapılır. Fiyatlar kapsam, aciliyet ve uzun dönem iş birliğine göre müzakere edilebilir.
> ls ~/products/ --open-source
[OK] 2 entries · 1 live · 1 pre-release
/03 ürünler
products.list
liveaçık kaynak · mit/prod/01
filex
her yere gömülebilen self-hosted dosya yöneticisi
tek go binary · vue/react/web-component embed · 5 storage sürücüsü · realtime collab · rbac · native multi-tenancy · ai ajanları için mcp server
Altyapıyı kurar, otomasyonu sağlar, sistemi ayakta tutar.
BRF Teknoloji, Bursa merkezli bir DevSecOps ve yazılım danışmanlık firmasıdır. Kubernetes cluster yönetiminden serverless platform kurulumuna, CI/CD pipeline tasarımından AI agent geliştirmeye kadar 25 farklı hizmet alanında çalışıyoruz.
İşimizin özü basit: sisteminizi ayağa kaldırır, otomatize eder ve gece 3'te sizi uyandırmayacak hale getiririz. Terraform ile altyapınızı kodlar, ArgoCD ile deploy sürecinizi GitOps'a taşır, Prometheus ile her şeyi izleriz. Bir şey bozulursa — biz bozulmadan önce müdahale ederiz.
Vendor lock-in'e karşıyız. Açık kaynak araçlarla, self-hosted çözümlerle ve endüstri standardı teknolojilerle çalışırız. Knative üzerinde kendi serverless platformunuzu kurarız, Kata Containers ile izole ederiz, Vault ile secret'larınızı yönetiriz. Her projeyi net kapsam, net süre, net fiyatla teslim ederiz.
DevSecOps & CI/CD
Kubernetes & Serverless
Infrastructure as Code
AI & Agent (MCP/ACP)
Güvenlik & Sıfır Güven
Full-Stack Geliştirme
Self-Hosted Çözümler
> grep -i question ~/faq.md
[OK] 3 entries · click to expand
[?]BRF Teknoloji'nin DevOps çözümleri hangi hizmetleri içerir?▾
CI/CD pipeline kurulumu, Kubernetes cluster yönetimi, container migrasyonu, Terraform ile altyapı otomasyonu, monitoring & alerting, şirket içi teknoloji kurulumları ve DevOps danışmanlık hizmetleri sunuyoruz.
[?]Yazılım geliştirme hizmetleriniz nelerdir?▾
MVP geliştirme, mevcut yazılım performans optimizasyonu, backend API geliştirme (Node.js, Go, Python) ve tam stack uygulama geliştirme hizmetleri sunuyoruz. Her projede teknik borç minimumda tutularak teslim edilir.
[?]Hangi DevOps araçlarıyla çalışıyorsunuz?▾
Kubernetes ve Docker’dan Talos Linux’a, Terraform ve OpenTofu’dan Ansible’a, Jenkins, GitLab CI/CD, GitHub Actions, ArgoCD, Flux, Helm ve Rancher’a kadar endüstri standardı araçlarla çalışıyoruz. İzleme ve hata takibinde Prometheus, Grafana, Loki, Tempo, OpenTelemetry ve GlitchTip; ağ katmanında Cilium ve Envoy; test otomasyonunda Playwright, Cypress, k6, Locust, Testcontainers ve Trivy kullanıyoruz. Projenizin ihtiyacına göre en uygun araç setini birlikte belirliyoruz.
brf.sh / 2026
·bursa/tr·
timezone utc+3·
tüm sistemler nominal
> ./connect --target=brf.sh
/05 iletişim
contact.txt
> cat contact.txt
[email][email protected] [phone]+90 530 871 2248 [location] Üçevler Mah. İzmir Yolu Cad 241D 16120 Nilüfer/Bursa [hours] Hafta içi 09:00 — 18:00 UTC+3 [eta] <24s iş günü
[OK] handshake ready
· turnstile enabled
· yanıt süresi: <24s · saat dilimi UTC+3 / bursa
CI/CD Pipeline Kurulumu
GitHub Actions, GitLab CI/CD ile otomatik build, test ve deploy süreçleri.
Mevcut ya da sıfırdan bir repo için otomatik build, test ve deploy pipeline'ı kurulur. GitHub Actions, GitLab CI/CD veya tercih edilen araç kullanılır. Staging + production ortamları için ayrı akışlar tanımlanır.
Mevcut uygulamaların container mimarisine taşınması.
Mevcut uygulamaların container mimarisine taşınması. Docker image tasarımı, Compose yapılandırması ve Kubernetes manifest'lerine dönüştürme. İleri düzey izolasyon için Kata Containers / gVisor dahil edilebilir.
Prometheus, Grafana, Loki ile altyapı ve servis izleme.
Prometheus + Grafana stack kurulumu, servis ve altyapı metrikleri için dashboard'lar, kritik eşikler için alert tanımları. İsteğe bağlı: Zabbix, Loki log aggregation.
GitLab, Nextcloud, VPN, mail sunucusu gibi şirket içi araçlar.
GitLab, Mattermost, Nextcloud, mail sunucusu, VPN, iç monitoring gibi araçların şirket sunucularında kurulumu. Docker Compose veya Kubernetes üzerinde deploy edilir.
MCP/ACP agent'lar, RAG pipeline, multi-agent orchestration, model serving.
LLM entegrasyonu (OpenAI, Claude, Gemini, lokal modeller), MCP (Model Context Protocol) ve ACP (Agent Communication Protocol) ile tool-augmented AI agent'lar. RAG pipeline, multi-agent orchestration, model serving (vLLM/Ollama). Mevcut iş süreçlerine yapay zeka katmanı.
Apache Kafka, RabbitMQ, NATS ile event-driven data pipeline. Apache Airflow ile ETL/ELT orkestrasyon, real-time data akışı, CDC (Change Data Capture). Data lake/warehouse tasarımı, schema registry, dead letter queue yönetimi.
Paketler
Kafka/RabbitMQ kurulumu + temel producer/consumer
$3,500
5–7 adam/gün
ETL pipeline (Airflow + source → warehouse)
$5,200
8–12 adam/gün
Tam event-driven architecture (CDC + streaming + DLQ)
ELK Stack veya Loki + Grafana ile merkezi log yönetimi. OpenTelemetry ile distributed tracing, Jaeger/Tempo entegrasyonu. Log retention politikası, structured logging standartları, anomaly detection. Tüm servislerde uçtan uca observability.
Playwright, Cypress ile E2E test otomasyonu, k6/Gatling ile yük testi. CI/CD pipeline'a entegre pre-deploy quality gate, test coverage raporlama, visual regression testing. AI-assisted test generation ile test yazım süresini %60'a kadar düşürme.
Backstage veya Port ile internal developer portal kurulumu. Self-service ortam oluşturma, golden path template'leri, service catalog, TechDocs entegrasyonu. Developer experience (DX) metrikleri, DORA metrics takibi, cognitive load azaltma.
Paketler
Backstage/Port kurulumu + service catalog
$3,900
6–8 adam/gün
Golden path templates + self-service ortam
$6,500
10–14 adam/gün
Tam platform (portal + templates + DORA + DX metrikleri)
Toplanan Kişisel Verileriniz, Toplanma Yöntemi ve Hukuki Sebebi
Kimliğinizi belirli ya da belirlenebilir kılan her türlü bilgi "kişisel veri" olarak kabul edilmektedir. Web sitemizi ziyaret ettiğinizde veya hizmetlerimizi kullandığınızda; ad, soyad, e-posta adresi, telefon numarası gibi iletişim bilgileriniz, IP adresiniz ve tarayıcı çerez verileri otomatik ya da yarı-otomatik yollarla toplanabilir. Bu veriler, 6698 sayılı Kişisel Verilerin Korunması Kanunu'nun 5. maddesinde belirtilen "bir sözleşmenin kurulması veya ifasıyla doğrudan doğruya ilgili olması" ve "ilgili kişinin temel hak ve özgürlüklerine zarar vermemek kaydıyla, veri sorumlusunun meşru menfaatleri için veri işlenmesinin zorunlu olması" hukuki sebeplerine dayanılarak işlenmektedir.
Kişisel Verilerinizin İşlenme Amacı
Toplanan kişisel verileriniz; hizmetlerimizin sunulması ve iyileştirilmesi, müşteri taleplerinin karşılanması, yasal yükümlülüklerin yerine getirilmesi, bilgi güvenliği süreçlerinin yürütülmesi ve iletişim faaliyetlerinin yönetilmesi amaçlarıyla işlenmektedir. Verileriniz, belirtilen amaçlarla sınırlı ve ölçülü olarak işlenir; amacın ortadan kalkması halinde silinir, yok edilir veya anonim hale getirilir.
Toplanan Kişisel Verilerin Kimlere ve Hangi Amaçlarla Aktarılabileceği
Kişisel verileriniz; yasal düzenlemelerin gerektirdiği hallerde kamu kurum ve kuruluşlarına, hizmetlerin sunulması amacıyla iş ortaklarımıza ve teknik altyapı sağlayıcılarına, hukuki uyuşmazlıklarda avukatlar ve danışmanlara aktarılabilir. Aktarım, Kanun'un 8. ve 9. maddelerine uygun olarak, gerekli teknik ve idari tedbirler alınarak gerçekleştirilir.
Kişisel Verileri İşlenen Kişi Olarak Haklarınız
6698 sayılı Kanun'un 11. maddesi uyarınca; kişisel verilerinizin işlenip işlenmediğini öğrenme, işlenmişse bilgi talep etme, işlenme amacını ve amacına uygun kullanılıp kullanılmadığını öğrenme, yurt içinde veya yurt dışında aktarıldığı üçüncü kişileri bilme, eksik veya yanlış işlenmişse düzeltilmesini isteme, Kanun'un 7. maddesindeki şartlar çerçevesinde silinmesini veya yok edilmesini isteme, yapılan işlemlerin aktarıldığı üçüncü kişilere bildirilmesini isteme, münhasıran otomatik sistemler vasıtasıyla analiz edilmesi suretiyle aleyhinize bir sonucun ortaya çıkmasına itiraz etme ve kanuna aykırı işleme sebebiyle zarara uğramanız halinde zararın giderilmesini talep etme haklarına sahipsiniz. Bu haklarınızı kullanmak için web sitemizdeki iletişim kanalları aracılığıyla bize başvurabilirsiniz.
Şartlar ve Koşullar
Şartlar ve Koşullar
1. Hizmet Kapsamı ve Değişiklikler
BRF Teknoloji, sunduğu yazılım geliştirme, DevOps danışmanlık, altyapı kurulumu ve teknik destek hizmetlerini bu şartlar ve koşullar çerçevesinde yürütür. Hizmet kapsamı, her proje için ayrıca belirlenir ve karşılıklı mutabakat ile kesinleştirilir. BRF Teknoloji, sunduğu hizmetlerin kapsamını, fiyatlandırmasını ve teknik detaylarını önceden bildirmek kaydıyla güncelleme hakkını saklı tutar.
2. Gizlilik Politikası
Hizmetlerimiz kapsamında toplanan kişisel veriler, Gizlilik Politikamız çerçevesinde işlenir. Detaylı bilgi için Gizlilik Politikası sayfamızı inceleyebilirsiniz.
3. Hizmet Kullanımı ve Sorumluluklar
Müşteriler, sunulan hizmetleri yalnızca yasal ve etik çerçevede kullanmayı kabul eder. Hizmetlerin kötüye kullanılması, üçüncü taraf haklarının ihlali veya yasa dışı faaliyetler için kullanılması durumunda BRF Teknoloji hizmeti askıya alma veya sonlandırma hakkına sahiptir. Müşteri, proje kapsamında sağladığı bilgilerin doğruluğundan ve güncelliğinden sorumludur.
4. Ödeme Şartları
Ödeme koşulları proje bazında belirlenir ve proje başlangıcında karşılıklı mutabakat ile kesinleştirilir. Aksi belirtilmedikçe, faturalar proje tesliminden itibaren 15 gün içinde ödenir. Geciken ödemelerde aylık %2 gecikme faizi uygulanabilir.
5. İptal ve İade Politikası
İptal talepleri, hizmetin başlangıç tarihinden en az 7 gün önce yazılı olarak bildirilmelidir. Başlamış projelerde, tamamlanan iş oranına göre ücretlendirme yapılır. Proje kapsamında özel olarak geliştirilen yazılım ve altyapı bileşenleri için iade yapılmaz.