Kubernetes Kaynak Bütçesi Hesaplayıcısı
İş yükünüzün CPU ve bellek isteklerini düğüm boyutuyla karşılaştırır; kaç düğüme ihtiyacınız olduğunu, hangi kaynağın darboğaz oluşturduğunu ve tahmini aylık maliyeti gösterir. Tüm hesaplama tarayıcınızda yapılır.
Son güncelleme:
Sonuçlar
Değerleri girip "Hesapla"ya basın.
Lütfen tüm alanlara sıfırdan büyük geçerli sayılar girin.
- Darboğaz kaynak
- CPU
- CPU kullanımı
- 41,7%
- Bellek kullanımı
- 20,8%
- Düğüm başına pod (ortalama)
- 6,0
- Tahmini aylık maliyet
Düğüm başına en fazla 110 pod (kubelet varsayılanı) varsayılır. DaemonSet'ler, pod yakınlığı ve topoloji yayılımı hesaba katılmaz — bu bir ilk yaklaşımdır.
Bu hesabı ne zaman yapmak gerekir
Yeni bir kümeyi boyutlandırırken
Sağlayıcının node tiplerinden birini seçmeden önce iş yükünün gerçekte ne istediğini bilmek gerekir. Bu ilk karar çoğu zaman sezgiyle veriliyor; altı ay sonra ya boşta duran kapasiteye para ödeniyor ya da gece yarısı aceleyle node ekleniyor.
Fatura beklediğinizden yüksek geldiğinde
Bulut faturası genelde CPU'dan değil, fazla beyan edilmiş bellek isteklerinden şişer. Aşağıdaki kendi kümemde de tablo bu yönde: CPU %4-10 arasında geziniyor, bellek %38-49'da duruyor. Tek bir GitLab pod'u 3,8 GiB bellek tutarken 61m CPU harcıyor. Böyle bir dağılımda CPU'yu kısmak faturayı değiştirmez.
Request değerlerine dokunmadan önce
Bir deployment'ın bellek isteğini 1536 Mi'den 1024 Mi'ye çekmek küçük bir düzenleme gibi görünür. Node sayısına etkisi hiç küçük olmayabilir. Aşağıdaki örnek tam olarak bu durumu gösteriyor.
Çalışılmış örnek: faturayı belleğin belirlediği durum
Tipik bir .NET API'si: 24 replika, pod başına 200m CPU ve 1536 Mi bellek isteği. Node'lar 4 çekirdek ve 16 GiB, sistem payı için %12 ayrılmış. Hesap üç ayrı sınırı bulup en büyüğünü alıyor.
- Ayrılabilir kapasite: node başına 3520m CPU ve 14418 Mi bellek.
- CPU tarafı: 24 × 200m = 4800m. 4800 ÷ 3520 = 1,36 → 2 node yeterli.
- Bellek tarafı: 24 × 1536 Mi = 36864 Mi. 36864 ÷ 14418 = 2,56 → 3 node gerekli.
- Pod sayısı: 24 pod, node başına 110 sınırının çok altında. Bağlayıcı değil.
- Sonuç 3 node, darboğaz bellek. CPU kullanımı %45'te kalıyor, bellek %85'e çıkıyor.
Üç node kiralayıp CPU'nun yarısını boşta tutuyorsunuz. Bellek isteği 1024 Mi'ye çekilince hesap 2 node'a iniyor, CPU kullanımı %68'e çıkıyor ve bellek kullanımı %85'te kalıyor. Tek satırlık bir değişiklik kapasitenin üçte birini geri veriyor. "Bu uygulama gerçekten 1536 Mi'ye ihtiyaç duyuyor muydu?" sorusu, bu yüzden teknik bir soru değil, fatura sorusudur.
Sık yapılan dört hata
Limit'i request sanmak
Zamanlayıcı yerleştirme kararını yalnızca request'e bakarak verir. Limit'i 2 çekirdek bırakıp request'i 100m'de unutursanız Kubernetes o pod'u 100m'lik yer varmış gibi yerleştirir. Node sıkıştığında fatura değil, gecikme artar.
Ayrılabilir kapasiteyi toplam kapasite sanmak
16 GiB'lık bir node'a 16 GiB'lık bir pod yerleşmez. kubelet, container runtime ve işletim sistemi payı ile tahliye eşiği düşüldükten sonra geriye tipik olarak %85-90 kalır. Hesaptaki ek yük alanı bunun içindir.
DaemonSet'leri hesaba katmamak
Log toplayıcı, metrik agent'ı, CNI ve CSI pod'ları her node'da birer kopya çalışır. Node sayısı arttıkça bu sabit yük de artar. Buradaki hesap yalnızca kendi iş yükünüzü kapsıyor, üzerine bir pay bırakın.
110 pod sınırını unutmak
Çok sayıda küçük replika çalıştıran ekiplerde CPU ve bellek bol olduğu hâlde bağlayıcı sınır pod sayısı olabilir. Bu durumda daha büyük node almak sorunu çözmez; kubelet'in max-pods ayarına bakmak gerekir.
Bu araçla birlikte kullanılanlar
- CIDR / Subnet Hesaplayıcısı CIDR notasyonundan ağ adresi, broadcast, subnet maskesi, kullanılabilir host aralığı ve adres tipini hesaplayın.
- Cron İfade Çözümleyici Bir cron ifadesini alan alan çözümleyin ve sonraki çalışma zamanlarını görün. Kubernetes CronJob ve zamanlanmış görevler için.
- UUID Üretici Kriptografik olarak güvenli UUID v4 ve zaman-sıralı v7 üretin. Toplu üretim ve biçim seçenekleri.
- Base64 Kodlayıcı-Çözücü Metni Base64'e kodlayın veya geri çözün. Standart ve URL-güvenli (base64url) varyant; UTF-8 uyumlu, tarayıcıda.
Sık Sorulan Sorular
Kubernetes iş yüküm kaç düğüme ihtiyaç duyar?
Düğüm sayısı üç sınırın en büyüğüdür: CPU'ya göre, belleğe göre ve pod sayısına göre gereken düğüm sayısı. Hesaplayıcı her birini ayrı bulur ve en büyüğünü "gereken düğüm" olarak verir; o sınır da darboğaz kaynağınızdır.
Düğümün ayrılabilir (allocatable) kapasitesi neden toplam kapasiteden düşük?
Her düğümün kapasitesinin bir kısmı kubelet, kapsayıcı çalışma zamanı ve işletim sistemi için kube-reserved ve system-reserved ile ayrılır; ayrıca bir tahliye eşiği bırakılır. Pod'lar yalnızca geri kalan "allocatable" kapasiteye yerleştirilir. Bu yüzden ek yük yüzdesi girersiniz.
Düğüm başına varsayılan maksimum pod sayısı kaçtır?
kubelet varsayılanı düğüm başına 110 pod'dur. Çok sayıda küçük replikanız varsa, CPU ve bellek bol olsa bile bu sınır darboğaz oluşturabilir.
İstek (request) mi yoksa limit mi kullanmalıyım?
Kubernetes zamanlayıcısı yerleştirme kararını isteklere (requests) göre verir, limitlere göre değil. Bu hesaplayıcı kapasite planlaması için istek değerlerini kullanır. Limitler, düğüm üstünde sıkışma anında throttling/OOM davranışını etkiler.
Bu tahmin ne kadar doğru?
İlk dereceden bir kapasite tahminidir. DaemonSet'leri, pod anti-affinity kurallarını, topoloji yayılım kısıtlarını, dikey otomatik ölçeklemeyi ve bölgesel dağılımı hesaba katmaz. Üretim kümeleri için baz çizgisi olarak kullanın, kesin değer olarak değil.
Gerçek kümelerden doğdu
Bu hesaplayıcı teorik değil: aynı düğüm boyutlandırma matematiğini bu sitenin arkasında işlettiğim küçük bir production k3s kümesinde kullanıyorum. Kümenin güncel anlık görüntüsü:
$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
bilal-server Ready <none> 194d v1.33.5+k3s1
k8s-master Ready control-plane,master 194d v1.33.5+k3s1
$ kubectl top nodes
NAME CPU(cores) CPU% MEMORY(bytes) MEMORY%
bilal-server 333m 4% 7828Mi 49%
k8s-master 784m 10% 12097Mi 38%
$ kubectl top pods -n default
NAME CPU MEMORY
bilal-baget-6d568d945f-4hljh 5m 142Mi
bilal-filebrowser-76c987d67b-mgwwt 1m 10Mi
bilal-gitlab-57db68cdf-4thml 61m 3843Mi
bilal-mssql-59467b7576-wrl24 34m 1450Mi
bilal-registry-5c86777897-tffxm 2m 381Mi
bilal-website-c46c6fb8f-ctnck 26m 219Mi
maya-website-58877c476c-hvj9q 74m 263Mi
k3s v1.33.5 · 2 düğüm · 194 gün uptime · kararlı durumda %4-10 CPU, %38-49 bellek kullanımı.