· kaynak dev.to (home feed)
Kubernetes 1.37, HPA sıfıra ölçekleme, gang scheduling beta sürümü ve 18 kubelet flag'inin kaldırılmasını getiriyor
Kubernetes 1.37 'Garhwal', HorizontalPodAutoscaler'ın iş yüklerini sıfır replikaya ölçeklemesine olanak tanıyor, gang scheduling özelliğini beta sürümüne yükseltiyor ve yükseltme sonrası node başlatılmasını engelleyebilen 18 kubelet flag'ini kaldırıyor.
Kubernetes 1.37 'Garhwal', 67 iyileştirmeyle geliyor
Kubernetes 1.37, 26 Ağustos 2026'dan bu yana kullanılabilir durumda ve dev.to'ya göre 67 iyileştirme içeriyor; bunlardan 16'sı stable (kararlı) sürüme yükseltildi. Sürüm, Himalayalar'daki bir Hint bölgesinden esinlenerek 'Garhwal' olarak adlandırıldı ve bir pekiştirme sürümü olarak konumlandırılıyor: Yaklaşık dokuz yıldır beta süren bir API tamamlanıyor, HorizontalPodAutoscaler iş yüklerini sıfır replikaya küçültme yeteneği kazanıyor ve dağıtık yapay zeka ile makine öğrenmesi işleri için gang scheduling beta sürümüne geçiyor. Operatörler ayrıca, yükseltmeden sonra bir node'un başlamasını durdurabilecek kırıcı değişiklikler için plan yapmalı.
HPA artık iş yüklerini sıfıra ölçekleyebiliyor
Operasyonel açıdan en önemli özellik, beta olarak gelen ve varsayılan olarak etkin olan HorizontalPodAutoscaler'deki sıfıra ölçekleme (scale-to-zero). dev.to'nun açıkladığı gibi, bu mekanizma Object veya External metriklerine dayanıyor; çünkü CPU ve bellek sinyalleri çalışan pod'lar tarafından üretilir ve son replika ortadan kalktığında kaybolur. Buna karşılık bir kuyruk derinliği, onu tüketen worker'lardan bağımsız olarak varlığını sürdürür; böylece HPA, sıfır replikada bile bu değeri okumaya devam edebilir ve iş geldiğinde worker'ları yeniden ayağa kaldırabilir.
Pratik getirisi, kuyruk tüketicilerinin, toplu işlerin ve ataklar arasında boşta bekleyen GPU iş yüklerinin, pasif durumdayken artık kaynak tutmaması. HPA nesnesi üzerindeki yeni ScaledToZero durumu, denetleyicinin iş yükünü küçültüp küçültmediğini yoksa bir insanın replika sayısını elle sıfıra mı ayarladığını netleştiriyor.
Gang scheduling ve iş yükü farkındalı preemption
KEP-4671 olarak izlenen gang scheduling, bu sürümde beta seviyesine ulaşıyor. PodGroup kavramını getiriyor: zamanlayıcıya, örneğin sekiz pod'un tek bir eğitim işine ait olduğu ve birlikte başlamaları gerektiği bildiriliyor; zamanlayıcı da hepsi için yeterli kapasite oluşana kadar bekliyor. Bu, dağıtık eğitimin tanıdık bir başarısızlık modunu ele alıyor: bazı pod'lar yerleştirilirken diğerleri süresiz olarak kuyrukta bekliyor ve iş, kaynakları hâlâ tutarken tıkanıp kalıyor.
İlgili bir ek olan iş yükü farkındalı preemption (KEP-5710), rekabet eden iş yüklerinin birbirini döngüsel olarak sürekli preemption yapmasını engelliyor. Bu özellikler birlikte, Kubernetes üzerinde üretim seviyesinde bir yapay zeka yığını isteyen ve Ray, JobSet veya LWS çalıştıran platform ekiplerine yönelik.
metrics.k8s.io sonunda stable oluyor
metrics.k8s.io API'si, Kubernetes 1.8'den bu yana beta sürümünde ve yaklaşık dokuz yıllık bir bekleme sonrasında 1.37 onu stable v1'e yükseltiyor. API yüzeyi değişmiyor; bu yalnızca bir sürüm yükseltmesi, ancak kaynak metrikleri altyapısının üretim seviyesinde kabul edildiğine işaret ediyor. kubectl top artık v1 endpoint'ini tercih ediyor ve v1beta1'e geri düşüyor.
Kırıcı değişiklikler: 18 kubelet flag'i kaldırıldı
1.37'ye yükseltme hazırlık gerektiriyor. Gömülü cAdvisor, daha hafif bir cadvisor/lib modülüne taşındı (PR #139870); bu da --containerd, --containerd-namespace, --boot-id-file ve --enable-load-reader dahil 18 kubelet flag'inin kaldırılması demek. Bu flag'lerden herhangi biriyle yapılandırılmış bir kubelet tamamen başlamayı başarısız olur ve bilinmeyen bir flag hatası bildirir; bu yüzden kubeadm-flags.env ya da systemd drop-in dosyalarıyla yapılandırılmış node'ların önceden temizlenmesi gerekiyor.
dev.to'nun belirttiği diğer kaldırma ve gereksinimler: kube-proxy'nin eski IPVS desteği yerini nftables'a bırakıyor, failCgroupV1 ayarı varsayılan olarak etkin kalıyor ve container runtime'lar containerd 2.x çalıştırmalı, çünkü containerd 1.x artık desteklenmiyor.
DRA, ulimits ve güvenlik özellikleri olgunlaşıyor
Dynamic Resource Allocation, tek başına bu sürümde dört kez stable'a yükseltme alıyor; bu da GPU'ların, hızlandırıcıların ve özel ağ adaptörlerinin artık kaynak modeline tamamen entegre olduğunun altını çiziyor. Standartlaştırılmış bir DRA özniteliği olan resource.kubernetes.io/numaNode, NUMA topolojisine saygı gösteren tutarlı yerleştirme sağlıyor. Container.SecurityContext alanı üzerinden konteyner başına ulimits ayarı alpha olarak geliyor; veritabanlarının ve yüksek eşzamanlılıktaki iş yüklerinin uzun süredir istediği bir özellik.
Güvenlik tarafında pod sertifikaları (PodCertificateRequest) stable oldu: kubelet, uzun ömürlü secret'ları mount etmek yerine kısa ömürlü X.509 sertifikaları isteyip düzenli olarak yenileyebiliyor ve bu da iş yüklerine fiilen yerleşik bir kimlik sistemi kazandırıyor. SELinuxMount da stable; her pod başlamadan önce bir volume'un tamamını özyinelemeli olarak yeniden etiketlemek yerine Linux çekirdeğinin -o context mount seçeneğini kullanıyor.
Neden önemli
Bu sürüm, Kubernetes'in aynı anda iki yöne çekildiğini gösteriyor. Özellik tarafında sıfıra ölçekleme, gang scheduling ve olgunlaşan DRA desteğinin tümü, ataklı ve GPU ağırlıklı yapay zeka iş yüklerini hedefliyor; boştaki işlerin hiçbir şey tüketmemesini ve dağıtık eğitimin kısmi zamanlama tıkanmaları olmadan çalışmasını sağlıyor. Operasyonel tarafta ise 18 kubelet flag'inin kaldırılması, IPVS'nin kaldırılması ve containerd 2.x gereksinimi, plansız bir yükseltmenin node'ları açılmaz hale getirebileceği anlamına geliyor. Küme çalıştıran herkes 1.37'ye geçmeden önce node yapılandırma dosyalarını denetlemeli; metrics.k8s.io'nun stable'a uzanan dokuz yıllık yolculuğu ise platformun API yüzeyindeki uzun süredir süren bir eksikliği nihayet kapatıyor.
- #kubernetes
- #containers
- #autoscaling
- #cluster-operations
- #cloud