top of page

Kubernetes Garbage Collection (GC)

  • Yazarın fotoğrafı: emirhanaydin
    emirhanaydin
  • 1 gün önce
  • 2 dakikada okunur
ree

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?


  1. Node üzerinde büyük dosya oluşturma (disk doldurma simülasyonu)

root@worker-01:~# fallocate -l 5G /tmp/testfile
  1. Disk kullanımını kontrol etme

root@worker-01:~# df -h | grep '/var/lib/containerd'
 /dev/sda1 50G 45G 5G 91% /var/lib/containerd
  1. 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
  1. 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


bottom of page