Kubernetes Garbage Collection (GC)
- emirhanaydin

- 1 gün önce
- 2 dakikada okunur

Kubernetes cluster’larında zamanla biriken eski pod’lar, container’lar ve kullanılmayan image’lar cluster sağlığını etkileyebilir. Garbage Collection (GC) mekanizması, bu gereksiz kaynakları otomatik olarak temizler.
1. Garbage Collection Nedir?
Kubernetes’te Garbage Collection; artık kullanılmayan veya referansı kalmayan kaynakların otomatik olarak temizlenmesidir. GC mekanizması özellikle aşağıdaki alanlarda çalışır:
Container Garbage Collection: Kullanılmayan container’ların otomatik silinmesi.
Image Garbage Collection: Node üzerindeki gereksiz Docker/Containerd image’larının temizlenmesi.
Object Garbage Collection (OwnerReference): OwnerReference ilişkisi bozulmuş, yani "sahipsiz" kalan Kubernetes objelerinin silinmesi.
2. GC’nin Önemi
Eğer Garbage Collection olmazsa:
Node diskleri dolabilir
Çok fazla eski pod/container birikir
Image’lar disk alanını tüketir
Kubelet performansı düşer
Cluster kaynakları sağlıklı yönetilemez
GC, Kubernetes’in self‑healing ve cluster sağlığını koruma mekanizmalarından biridir.
3. Kubelet Garbage Collection Nasıl Çalışır?
Kubelet, node üzerinde periyodik olarak temizlik yapar. Bu temizlik iki ana kategoride gerçekleşir:
3.1 Container & Image Garbage Collection
Hedef: Kullanılmayan container’lar ve image’lar
Parametreler (config.yaml veya CLI):
Parametre | Açıklama | Default |
imageGCHighThresholdPercent | Disk kullanımı % kaçın üzerinde GC tetiklenir | 85 |
imageGCLowThresholdPercent | Disk kullanımı % kaçın altına düşene kadar GC devam eder | 80 |
imageMinimumGCAge | Minimum ne kadar süre kullanılmamış image temizlenmez | 2m |
imageMaximumGCAge | Maximum ne kadar süre geçmiş image’lar temizlenebilir | 0 (sınırsız) |
maximum-dead-containers | Node üzerinde saklanacak maksimum dead container sayısı | -1 (sınırsız) |
Not: Eğer bu değerler config.yaml veya CLI’da belirtilmezse kubelet default değerleri kullanır.
GC, node üzerindeki kullanılmayan container ve image’ları disk alanını korumak için temizler.
3.2 Object Garbage Collection (OwnerReference)
Her Kubernetes objesinin bir sahibi (owner) olabilir
OwnerReference sayesinde, owner silindiğinde bağlı nesneler otomatik olarak temizlenir
Sahipsiz kalan objeler (“orphaned objects”) API server tarafından GC ile temizlenir
4. Demo – GC Nasıl Test Edilir?
Node üzerinde büyük dosya oluşturma (disk doldurma simülasyonu)
root@worker-01:~# fallocate -l 5G /tmp/testfile
Disk kullanımını kontrol etme
root@worker-01:~# df -h | grep '/var/lib/containerd'
/dev/sda1 50G 45G 5G 91% /var/lib/containerd
Kubelet loglarını izleme
root@worker-01:~# journalctl -u kubelet -f
Örnek log:
Jan 26 14:22:10 worker-01 kubelet[1382]: I0126 GC ImageFS usage 91% > threshold 85%
Jan 26 14:22:10 worker-01 kubelet[1382]: I0126 Starting image garbage collection
Jan 26 14:22:12 worker-01 kubelet[1382]: I0126 Deleted image sha256:9bc1a57 (freed 1.2GB)
Jan 26 14:22:13 worker-01 kubelet[1382]: I0126 Image garbage collection completed
GC sonrası disk kullanımını kontrol etme
root@worker-01:~# df -h | grep containerd
/dev/sda1 50G 37G 13G 74% /var/lib/containerd
5. Özet
Kubernetes Garbage Collection:
Node disk alanını korur
Eski container ve image’ları temizler
OwnerReference ile bağlı objeleri yönetir
Cluster sağlığını korumak için zorunludur
GC davranışı, Kubernetes versiyonuna, kullanılan container runtime’a (docker, containerd, CRI-O) ve node konfigürasyonuna göre değişiklik gösterebilir cluster özelinde test edebilirsiniz.




Yorumlar